SEO для 3.0.2

Тема в разделе "Модули и дополнения", создана пользователем Chukcha, 16 авг 2017.

  1. Ravilr

    Ravilr Специалист

    Сообщения:
    4.209
    Симпатии:
    1.449
    Ну у каждого свой взгляд. По мне это не лишнее, а приятность. Ведь те кто устанавливают сеопро то у них одна цель, быстро получить результат. Если результата нет, ошибки итд. Идем в модуль и деактивируем его и усе.
    Возможно я не прав.. посмотрим за ходом установок..
     
  2. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    687
    Я не против, но несогласен.. :)
    По крайней мере с рефрешем..
    Лично я не люблю, когда такие вещи делаются без меня.

    Например я очистил кеш модификаторов, а тут бац.. и кто-то их обновил..

    ЛАдно, согласен - вскрытие покажет

    Кстати - в архиве нет config
     
  3. Ravilr

    Ravilr Специалист

    Сообщения:
    4.209
    Симпатии:
    1.449
    В моем есть. Или я глючу ))
     
  4. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    687
    А.. это в моем нету.. Ну да...в свой пакет не завернул
    Спасиб..
     
  5. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    687
    повоевал я со своим сеопро, давно хотел
    Сделал языковый префикс, пока тестово

    типа
    сайт/test - ру
    сайт/en/test - en

    А потом подумал, а зачем?

    Но здесь Несколько вариантов ответа

    Если товар имеет разное название на разных языках, то и url будет разным

    Товар - site/tovar
    Product - sire/product

    Уже хорошо



    Если одинаковые получаются, то нужно добавлять, но нельзя - url по опенкартовской идеологии должен быть уникальным, хотя нигде ограничений не стоит

    Код:
    DROP TABLE IF EXISTS `oc_seo_url`;
    CREATE TABLE `oc_seo_url` (
      `seo_url_id` int(11) NOT NULL AUTO_INCREMENT,
      `store_id` int(11) NOT NULL,
      `language_id` int(11) NOT NULL, 
      `query` varchar(255) NOT NULL,
      `keyword` varchar(255) NOT NULL,
      PRIMARY KEY (`seo_url_id`),
      KEY `query` (`query`),
      KEY `keyword` (`keyword`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
    тут бы еще один составной индекс добавить или два (keyword+language_id и query+language_id)
    наверное наоборот (language_id+keyword и language_id+query)
    Дойдет дело - буду посмотреть, а может еще примещать и store_id

    можно и уникальный индекс впилять на keyword+store_id

    Т.е. тут в этой каше полная засада, если мультик, то и у мультика разный url для каждой страницы

    С такой кашей до 3.1 еще далеко, тут бы увидеть 3.0.3 :)
     
  6. Ravilr

    Ravilr Специалист

    Сообщения:
    4.209
    Симпатии:
    1.449
    Я тоже как то делал такое на прошлой версии. По сути, сейчас же добавлено языкозависимые seourl , поэтому в префиксах нет большого смысла. А если есть, то просто делать префикс, но при включенной опции префикса, в качестве основного seourl брать по основному языку. Т.е если язык русский и сеоурль выглядит как kartoshka, то и на английском будет en/kartoshka
     
    Chukcha нравится это.
  7. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    687
    та да

    Есть только одна проблемка.. Это проблема с переключением языка. В принципе я ее решил, но мне кажется, я уверен, что чере через задний проход :(
     
  8. Ravilr

    Ravilr Специалист

    Сообщения:
    4.209
    Симпатии:
    1.449
    Ну не чё... сначало через задний.. потом нормализуется по ходу ))
     
  9. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    687
    Я поясню проблему

    Код:
        public function language() {
            if (isset($this->request->post['code'])) {
                $this->session->data['language'] = $this->request->post['code'];
            }
    
            if (isset($this->request->post['redirect'])) {
                $this->response->redirect($this->request->post['redirect']);
            } else {
                $this->response->redirect($this->url->link('common/home'));
            }
        }
    Что в redirect положили, то и редиректним

    Код:
        <input type="hidden" name="code" value="" />
        <input type="hidden" name="redirect" value="{{ redirect }}" />

    Код:
           if (!isset($this->request->get['route'])) {
               $data['redirect'] = $this->url->link('common/home');
           } else {
               $url_data = $this->request->get;
    
               unset($url_data['_route_']);
    
               $route = $url_data['route'];
    
               unset($url_data['route']);
    
               $url = '';
    
               if ($url_data) {
                   $url = '&' . urldecode(http_build_query($url_data, '', '&'));
               }
    
               $data['redirect'] = $this->url->link($route, $url, $this->request->server['HTTPS']);
           }
    
    А положили текущую

    Я же делаю
    Код:
        <input type="hidden" name="code" value="" />
        
        {% for language in languages %}
        <input type="hidden" name="redirect[{{ language.code }}]" value="{{ redirect[language.code] }}" />
        {% endfor %}
    Т.е. имею массив редиректов.
    И конечно меняю
    Код:
                foreach ($data['languages'] as $language) {
                    $data['redirect'][$language['code']] = $this->url->link($route, $url, $this->request->server['HTTPS'],$language['language_id']);
                }
    Опять же
    link($route, $url, $this->request->server['HTTPS'],$language['language_id']);

    $language['language_id'] - т.е меняя библитотеку добавляя языковый признак, который в реврайтере будет обработан


    Ну, не придумал я как єто сделать более оптимально - получить ссылку на другой язык без переключения контента

    Можно было бы наверное так
    Код:
    $old = $this->session->data['language']
    for languages {
      $this->session->data['language'] = language[code]
      link($route, $url, $this->request->server['HTTPS'])
    }
    $this->session->data['language'] = $old
     
  10. Ravilr

    Ravilr Специалист

    Сообщения:
    4.209
    Симпатии:
    1.449
    Я подобное через сессии как раз делал.
     
  11. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    687
    Я тоже сейчас к этому склоняюсь..

    Наверное переделаю
    Чтоб не трогать системную библиотеку.
     
  12. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    687
    Я вот даже подумал,
    надо проверить


    Код:
        public function language() {
            if (isset($this->request->post['code'])) {
                $this->session->data['language'] = $this->request->post['code'];
            }
    
            if (isset($this->request->post['redirect'])) {
    
    $this->request->get['_route'] = $this->request->post['redirect'];
    $this->load->controller(SEO);
    
               $url_data = $this->request->get;
    
               unset($url_data['_route_']);
    
               $route = $url_data['route'];
    
               unset($url_data['route']);
    
               $url = '';
    
               if ($url_data) {
                   $url = '&' . urldecode(http_build_query($url_data, '', '&'));
               }
    
               $redirect = $this->url->link($route, $url, $this->request->server['HTTPS']);
                $this->response->redirect($redirect);
            } else {
                $this->response->redirect($this->url->link('common/home'));
            }
        }
    И тогда вроде должно получиться, не трогая шаблон language.twig
     
  13. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    687
    Для сведения.
    Лично мне нравится языковая ссылка вида
    site/кодязыка/ссылка

    чем навязываемая уникальная Даниелем языковая типа
    site/кодязыка-ссылка

    @markimax настаивает, что так правильно и в своем блоге именно так делает.

    Я не вижу каких либо причин так делать. Но..

    Чтобы использовать языковый префикс - нужно отключать валидацию seo_url в validate_form ...
    Грустно.
     
  14. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    687
    May be, may be.

    Время покажет.
     
  15. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    641
    Возможно это выход, нет? Или это и есть..
    :)
     
  16. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    687
    Выпущена крайняя версия, которая переходит в разряд условно платных

    т.е. По запросу.

    Кардинально отличающаяся от предыдущих.
     
  17. mosind

    mosind Новичок

    Сообщения:
    2
    Симпатии:
    0
    Чем отличается новая версия?
    Я попробовал поставить, которая есть в теме - у меня каталог магазина завис - белый лист. При том в админке все работало - урлы на новые товары подставлялись. Пришлось удалить
     
  18. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    687
     
  19. mosind

    mosind Новичок

    Сообщения:
    2
    Симпатии:
    0
    Понятно, что ничего не понятно. :)
    Запрос надо в личку чтоли ?
     
  20. Sergii9988

    Sergii9988 Новичок

    Сообщения:
    2
    Симпатии:
    0
    Привет. Решил присоединится к вашей беседе. Можно получить платную версию ? установлю поюзаю потестирую.
    По поводу префикса:
    как по мне самый простой вариант просто использовать его под настройку. Ну например есть ссылка на товар iphon для английского и iphonnnne для русского языка. ТО просто добавить префикс в любом случаи типа en/iphone и ru/iphonnnnne. Плохо от этого никому не будет, за то при смене языка будет префикс на стартовой странице, что очень положительно.