Перейти к содержанию

Рекомендуемые сообщения

На сайте установлен и включен SeoPro от Jazz.
Если открыть страницу с URL вида (товары из категории конкретного производителя):

site.ru/index.php?route=product/category&path=111_222&manufacturer_id=333
то она приобретет вид:
site.ru/category/subcategory/manufacturer

Если поменять местами параметры path и manufacturer_id:

site.ru/index.php?route=product/category&manufacturer_id=333&path=111_222
то в результирующем адрес соответственно получится

site.ru/manufacturer/category/subcategory

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Jazz != (не равно) SeoPro

Зачем вам Jazz? Он не стандарт
Ставьте стандарт де факто -  SeoPro

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я для своего фильтра принудительно прописывал:

Спойлер

    <file path="catalog/controller/{common,startup}/seo_pro.php">
        <operation>
            <search trim="false" index="0">
            <![CDATA[} elseif (isset($this->request->get['path'])) {]]>
            </search>
            <add position="replace">
            <![CDATA[} elseif (isset($this->request->get['path']) && isset($this->request->get['manufacturer_id'])) {
                $this->request->get['route'] = 'product/category&path=' . $this->request->get['path'];
            } elseif (isset($this->request->get['path'])) {]]>
            </add>
        </operation>

    </file>

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
18 часов назад, markimax сказал:

Jazz != (не равно) SeoPro

Зачем вам Jazz? Он не стандарт
Ставьте стандарт де факто -  SeoPro


В данном случае не принципиально.
Там то же самое.
 

17 часов назад, buslikdrev сказал:

Я для своего фильтра принудительно прописывал:


Попробовал.
Ссылка стала генериться правильно, но почему-то при этом "Запрашиваемая страница не найдена!".
Ошибок в логах нет.
Данные подменяются корректно.
Пробовал на обоих версиях SeoPro.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

OC v2.0.3.1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
5 часов назад, Wild сказал:

Попробовал.
Ссылка стала генериться правильно, но почему-то при этом "Запрашиваемая страница не найдена!".
Ошибок в логах нет.
Данные подменяются корректно.
Пробовал на обоих версиях SeoPro.

Я немного слукавил, для своего модуля я делал так:

Спойлер

    <file path="catalog/controller/{common,startup}/seo_pro.php">
        <operation>
            <search trim="false" index="0">
            <![CDATA[} elseif (isset($this->request->get['path'])) {]]>
            </search>
            <add position="replace">
            <![CDATA[} elseif (isset($this->request->get['path']) && isset($this->request->get['filter_manufacturers'])) {
                $this->request->get['route'] = 'product/category&path=' . $this->request->get['path'];
            } elseif (isset($this->request->get['path'])) {]]>
            </add>
        </operation>
        <operation>
            <search trim="false" index="0">
            <![CDATA[case 'path':]]>
            </search>
            <add position="replace">
            <![CDATA[case 'filter_manufacturers':
                    $filter_manufacturers = explode('_', $value);
                    foreach ($filter_manufacturers as $manufacturer) {
                        $queries[] = 'manufacturer_id=' . $manufacturer;
                    }
                    unset($data[$key]);
                    $postfix = 1;
                    break;
                case 'path':]]>
            </add>
        </operation>
    </file>


А с $this->request->get['manufacturer_id'] я не победил, а сделал в виде ссылки фильтрацию.
Нужно бы попробовать перебрать сео_про.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот шикарный вариант могу предложить:

Спойлер

Над этим:

        if(empty($queries)) {
            $queries[] = $route;
        }

Добавить это:

        if (isset($this->request->get['path']) && isset($this->request->get['manufacturer_id'])) {
            sort($queries);
        }


 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделал управляемую сортировку.
Перед
$route = $data['route'];
добавить:

// Set necessary order
$orderArray	= array('route','path','manufacturer_id');
// Apply it
$data = array_merge(array_flip($orderArray), $data);

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поторопился... ))
Забыл отбросить несуществующие ключи сортировки.
Верный вариант:

// Set necessary order 
$orderArray	= array('route','path','manufacturer_id');
// Apply it
$orderArray = array_intersect($orderArray, array_keys($data));
$data = array_merge(array_flip($orderArray), $data);

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.