[Помогите] неуникальные seo_url для разных регионов

Тема в разделе "OpenCart", создана пользователем la-vanna, 10 ноя 2019.

  1. la-vanna

    la-vanna

    Регистрация:
    31 янв 2013
    Сообщения:
    222
    Симпатии:
    7
    Здравствуйте!

    Нужна помощь в таком вопросе:

    реализован магазин на несколько регионов посредством добавления языков в виде городов.
    URL карточек товаров для разных регионов имеют вид сайт/товар-в-регионе, с этим все в порядке.

    но нужно сделать так, чтобы категории были с одним и тем же Url для всех регионов. Если в таблице oc_seo_url прописать одинаковые keyword для одного и того же category_id но разных language_id то при переходе в категорию попадаем на страницу, которая имеет наибольший language_id и соответственно меняется язык. То есть например были в карточке товара города Москвы, и при переходе из этой карточки товара в категорию - происходит переход в категорию региона Ульяновск, так как Ульяновск имеет наибольшее число language_id. То есть какой-то запрос к базе все равно поступает, просто выбирается нужный keyword, но с последним найденным значением language_id. Как это можно исправить?

    Кстати то же самое происходить со страницами статьей и даже home.

    Кажется, что нужно добавить к какому то запросу к базе AND language_id = (int)$language_id и тогда будет происходить переход на страницу категории именно этого региона, хоть она и одинаковая для всех регионов. Но к какому и где - не могу понять.

    Или если это невозможно, то может быть можно сделать так, чтобы происходил переход всегда на страницу одного и того региона (любого), но чтобы язык не менялся, а оставался таким какой и был выбран изначально?

    Помогите пожалуйста.
     
    Последнее редактирование: 10 ноя 2019
  2. Baco

    Baco Антихронофаг Команда форума

    Регистрация:
    9 окт 2012
    Сообщения:
    752
    Симпатии:
    374
    Нужно хранить в сессии значение language_id и при любом обращении роута - в первую очередь - проверять сессийное значение, потом "печеньки" и только потом, дёргать бейс, ИМХО!
    уловить логику, не видя хардкодинга сложно, это как тыцать скальпелем в пациента, понимая что у него дергается коленко, когда он чихает, сорян за тавтологию.
     
    la-vanna нравится это.
  3. la-vanna

    la-vanna

    Регистрация:
    31 янв 2013
    Сообщения:
    222
    Симпатии:
    7
    Магазин новый, без каких либо изменений, ocstore 3, включено в настройках seo pro, созданы категории, товары и прописаны seo_url (keyword), больше ничего.

    Подскажите пожалуйста, а где происходит это обращение? В каком файле? Где происходит этот выбор, какой url откроется?
     
  4. Baco

    Baco Антихронофаг Команда форума

    Регистрация:
    9 окт 2012
    Сообщения:
    752
    Симпатии:
    374
    скорее всего надо поковырять catalog\controller\startup\seo_pro.php
     
    la-vanna нравится это.
  5. la-vanna

    la-vanna

    Регистрация:
    31 янв 2013
    Сообщения:
    222
    Симпатии:
    7
    Огромное Вам спасибо, Вы мне очень сильно помогли!

    Если вдруг у кого-то будет подобный вопрос - вот решение:
    в файле system/library/seopro.php

    необходимо 557 строку, а именно:

    $query = $this->db->query("SELECT language_id FROM " . DB_PREFIX . "seo_url WHERE keyword = '" . $this->db->escape($keyword) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' LIMIT 1");

    заменить на

    $query = $this->db->query("SELECT language_id FROM " . DB_PREFIX . "seo_url WHERE keyword = '" . $this->db->escape($keyword) . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "' AND language_id = '" . (int)$request_language_id . "' LIMIT 1");

    Еще раз спасибо!!!