Тема: Убрать /brand/ из URL производителя

Можно ли убрать /brand/ из URL в карусели брендов на главной странице. blocks/brands/brands.tpl
Хочу с главной направлять не на страницу бренда, а на категорию с выбранным там фильтром, например /catalog/categoria-1/?bfilter[brand][]=17

Повысить оценку Понизить оценку

Re: Убрать /brand/ из URL производителя

Вы можете подкорректировать шаблон блока с брендами. У Вас какая тема оформления?

Re: Убрать /brand/ из URL производителя

Закусило Александр пишет:

Вы можете подкорректировать шаблон блока с брендами. У Вас какая тема оформления?

Purfume (воздушная)

Повысить оценку Понизить оценку

4 Отредактировано Владимир (30.09.2016 23:18:52)

Re: Убрать /brand/ из URL производителя

Как подкорректировать шаблон не разобрался.
убрать /brand/ из URL получилось путем замены в \modules\catalog\config\handlers.inc.php

        //Отображение отдельно брендов
   $routes[] = new \RS\Router\Route('catalog-front-brand', 
 '/brand/{id}/', null, t('Просмотр отдельного бренда'));

на
       

    
        //Отображение отдельно брендов
   $routes[] = new \RS\Router\Route('catalog-front-brand', 
 '{id}/', null, t('Просмотр отдельного бренда'));

но возникает проблема с декодированием символов / и ?

вместо
site.ru/catalog/categoria-1/?bfilter[brand][]=17
получаю
site.ru/catalog%2Fcategoria-1%2F%3Fbfilter[brand][]%3D13/
и 404 ошибку

Да и изменения в движке за пределами шаблона чреваты... Так что не лучший выход.

Повысить оценку Понизить оценку

5 Отредактировано Владимир (01.10.2016 02:18:58)

Re: Убрать /brand/ из URL производителя

решил вопрос другим путем. прописал каталог и категорию в \modules\catalog\config\handlers.inc.php

 //Отображение отдельно брендов
        $routes[] = new \RS\Router\Route('catalog-front-brand', 
         '/catalog/categoria-1/?bfilter[brand][]={id}', null, t('Просмотр отдельного бренда'));

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

Нужно, конечно, наоборот. В URL прописывать транслит и его выводить в /catalog/categoria-1/?bfilter[brand][]=translit
и сюда /catalog/categoria-1/?pf[336][]=23 тоже транслит вместо цифры.

Помню, что обещали, что такая возможность скоро появится. И судя по тому, что кириллицу из URL уже убрали, работа идет.
Жаль только к тому времени поисковик уже все проиндексирует, потом редиректить и ждать когда проиндексирует по новой.

Повысить оценку Понизить оценку

Re: Убрать /brand/ из URL производителя

Можно использовать категории с подбором товара. И ссылка красивая будет.

Re: Убрать /brand/ из URL производителя

Ярослав пишет:

Можно использовать категории с подбором товара. И ссылка красивая будет.

это имеется в виду в Категории вкладка подбор товаров "Включить подбор товаров"?

А как это работает? Нужно создать в Категории Подкатегории, соответствующие параметрам фильтра?
Подкатегории делаю неПубличными.

Повысить оценку Понизить оценку

Re: Убрать /brand/ из URL производителя

Ярослав пишет:

Можно использовать категории с подбором товара. И ссылка красивая будет.

Попробовал. Либо не понял как надо делать, либо не то что нужно.
Это создается подкатегория с нужной выборкой без физического перемещения в нее товаров.
Но адрес то не совпадает с результатом фильтра.

Разве что редирект сделать. Это идея, кстати.
Правда редирект вроде скорость загрузки страниц увеличивает. Но не думаю, что существенно.

Спасибо.

Повысить оценку Понизить оценку

Re: Убрать /brand/ из URL производителя

Хотя нет. Не то.
Там на странице с выборкой нет возможности сбросить фильтры или что-то прибавить добавить.
Т.е. чтобы вернуться от заданной выборки ко всем товарам из категории, нужно не фильтры использовать, а меню Категорий. Этот под мою концепцию не подходит. )
Я все хочу фильтрами сделать.

Повысить оценку Понизить оценку

10 Отредактировано Закусило Александр (01.10.2016 22:18:09)

Re: Убрать /brand/ из URL производителя

Можно ли убрать /brand/ из URL в карусели брендов на главной странице. blocks/brands/brands.tpl
Хочу с главной направлять не на страницу бренда, а на категорию с выбранным там фильтром, например /catalog/categoria-1/?bfilter[brand][]=17

Во первых если вы используете стандартную тему оформления, то Вам надо её отклонировать для возможности редактирования. Иначе при следующем обновлении шаблоны и файлы модулей перезатрутся. Отклонировать можно в Управление->Шаблоны->Справа вверху отклонировать. Не забываем отметить переключиться на тему оформления.
Если у Вас тема своя уже, то тогда редактируем файл.
/templates/Ваша тема/moduleview/catalog/blocks/brands/brands.tpl
Открываем его и так где ссылка при помощи роутера нужно записать нужную ссылку.

{$router->getUrl('catalog-front-listproducts', ['bfilter'=>['brand'=>[$brand.id]]])} {* Формирует ссылку на отфильтрованный по бренду раздел *}


Единственный момент, это то что ссылка сформируется как /catalog/?bfilter['brand'][0]=17
По умолчанию раздел /catalog/ закрыт, но его можно включить в Веб-сайт->Настройка модулей->Каталог товаров
Как работать с шаблонами читаем здесь:
https://readyscript.ru/text-blog/Kak-so … adyScript/

Re: Убрать /brand/ из URL производителя

Как подкорректировать шаблон не разобрался.
убрать /brand/ из URL получилось путем замены в \modules\catalog\config\handlers.inc.php

        //Отображение отдельно брендов
   $routes[] = new \RS\Router\Route('catalog-front-brand',
'/brand/{id}/', null, t('Просмотр отдельного бренда'));

на
       

   
        //Отображение отдельно брендов
   $routes[] = new \RS\Router\Route('catalog-front-brand',
'{id}/', null, t('Просмотр отдельного бренда'));

но возникает проблема с декодированием символов / и ?

вместо
site.ru/catalog/categoria-1/?bfilter[brand][]=17
получаю
site.ru/catalog%2Fcategoria-1%2F%3Fbfilter[brand][]%3D13/
и 404 ошибку

Да и изменения в движке за пределами шаблона чреваты... Так что не лучший выход.

Так делать категорически нельзя. Т.к. Вы правите движок и все Ваши старания будут перезатёрты при обновлении. И маршрут /brand/наивание/ не случаен, т.к. вся система построена на масках. И когда Вы так меняете маршрут на /названиебренда/. Этим самым Вы отрезаете себе пункты меню, т.к. такая маска уже занята или.

Вы можете маршрут к бренду перегрузить из своего дополнительного модуля с помощью хука getroute.
Читаем здесь:
https://readyscript.ru/dev-manual/dev_h … hooks_list

И тогда можно будет сделать свою маску для короткого пути:

$routes[] = new \RS\Router\Route('catalog-front-brand', 
 'Моя маска', null, t('Просмотр отдельного бренда'));

Re: Убрать /brand/ из URL производителя

вместо
site.ru/catalog/categoria-1/?bfilter[brand][]=17
получаю
site.ru/catalog%2Fcategoria-1%2F%3Fbfilter[brand][]%3D13/

Это тут причём? Вы бренд менять собрались или фильтр?

Re: Убрать /brand/ из URL производителя

Нужно, конечно, наоборот. В URL прописывать транслит и его выводить в /catalog/categoria-1/?bfilter[brand][]=translit
и сюда /catalog/categoria-1/?pf[336][]=23 тоже транслит вместо цифры.

Помню, что обещали, что такая возможность скоро появится. И судя по тому, что кириллицу из URL уже убрали, работа идет.
Жаль только к тому времени поисковик уже все проиндексирует, потом редиректить и ждать когда проиндексирует по новой.

Для фильтраций служат SEO категории.
Если вы хотите вместо id использовать наименования английские, то пока можно подвесится на хук отработки блока с фильтрами, и подменять POST. Но лучше написать в поддержку и попросить включить поддержку символьного идентификатора в брендах.

14 Отредактировано Владимир 1916 (02.10.2016 15:47:57)

Re: Убрать /brand/ из URL производителя

Закусило Александр пишет:

Но лучше написать в поддержку и попросить включить поддержку символьного идентификатора в брендах.

Спасибо, напишу в поддержку.

А для характеристик нет возможности символьный идентификатор включить? Чтобы вместо

http://site.ru/catalog/categoria-1/?pf[336][]=23

было

http://site.ru/catalog/categoria-1/?pf[336][]=parametr1

Где parametr1 это транслит Параметра1, соответствующей характеристики товара.

Повысить оценку Понизить оценку

15 Отредактировано Владимир 1916 (02.10.2016 23:12:25)

Re: Убрать /brand/ из URL производителя

Закусило Александр пишет:

Единственный момент, это то что ссылка сформируется как /catalog/?bfilter['brand'][0]=17

Мне нужно не
/catalog/?bfilter['brand'][0]=17

а

/catalog/categoria-1/?bfilter['brand'][0]=17
как его получить?

Повысить оценку Понизить оценку

Re: Убрать /brand/ из URL производителя

{$router->getUrl('catalog-front-listproducts', ['category' => 'ЗДЕСЬ ПСЕВДОНИМ нужной категории', 'bfilter'=>['brand'=>[$brand.id]]])} {* Формирует ссылку на отфильтрованный по бренду раздел *}

Re: Убрать /brand/ из URL производителя

Закусило Александр пишет:
{$router->getUrl('catalog-front-listproducts', ['category' => 'ЗДЕСЬ ПСЕВДОНИМ нужной категории', 'bfilter'=>['brand'=>[$brand.id]]])} {* Формирует ссылку на отфильтрованный по бренду раздел *}

Не совсем правильный url создает. Получается /catalog/categoria1/?bfilter[brand][0]=13
а нужен /catalog/categoria1/?bfilter[brand][]=13

нолик нужно как-то убрать.

Повысить оценку Понизить оценку

18 Отредактировано Закусило Александр (04.10.2016 11:48:31)

Re: Убрать /brand/ из URL производителя

Нууу, Да. Но это потому, что правильно именно так т.к. http_build_query именно создаёт правильное указание адреса. Ну давайте тогда так:

{$router->getUrl('catalog-front-listproducts', ['category' => 'ЗДЕСЬ ПСЕВДОНИМ нужной категории'])}?bfilter[brand][]={$brand.id}

Re: Убрать /brand/ из URL производителя

спасибо

Повысить оценку Понизить оценку

Re: Убрать /brand/ из URL производителя

Обнаружил, что пагинация страниц тоже формирует с [0] а не с [].
Я тогда лучше в шаблоне фильтра производителя [0] вставлю вместо [].

Наверное в базовую тему Perfume тему стоит это правку тоже внести.

Повысить оценку Понизить оценку

Re: Убрать /brand/ из URL производителя

Напишите в тех. поддержку.

Re: Убрать /brand/ из URL производителя

Владимир 1916 пишет:

Обнаружил, что пагинация страниц тоже формирует с [0] а не с [].
Я тогда лучше в шаблоне фильтра производителя [0] вставлю вместо [].

Вставил [0] в шаблоне фильтра у производителя и характеристик.

<ul class="propsContent">
                    {foreach $brands as $brand}
                    <li>
                        <input type="checkbox" {if is_array($basefilters.brand) && in_array($brand.id, $basefilters.brand)}checked{/if} name="bfilter[brand][0]" value="{$brand.id}" class="cb" id="cb_{$brand.id}_{$smarty.foreach.i.iteration}">
                        <label for="cb_{$brand.id}_{$smarty.foreach.i.iteration}">{$brand.title}</label>
                    </li>
                    {/foreach}
                </ul>

Только опять косяк вылез - теперь если выбираем несколько производителей, то показывает только товары последнего выбранного производителя. Видимо, где-то еще нужно вместо [] вставить [0]. Только не пойму где.

Повысить оценку Понизить оценку

23

Re: Убрать /brand/ из URL производителя

Приветствую.
Разработчики, а почему нельзя позаимствовать функционал с других цмс, например как в дифан цмс, касаемо url.
Допустим там у каждой страницы есть такая фишка псевдосылка.
Имеем  адрес site.ru/brand/apple
В псевдосылке   пишем любой адрес site.ru/primer/applegadget и страница открывается по любому адресу.
Предопределяем все что захотим и адрес любого модуля. Иной раз бывает необходимость реализовать за счет модуля разный функционал.
А еще там есть фишка , чпу заканчивается на \ пишем допустим .html или .php
и страницы имеет автоматом site.ru/brand/apple.html
И для каждой странице в админке сделать бы редирект на текущую страницу со страницы.

Повысить оценку Понизить оценку

Re: Убрать /brand/ из URL производителя

Имеем  адрес site.ru/brand/apple
В псевдосылке   пишем любой адрес site.ru/primer/applegadget и страница открывается по любому адресу.
Предопределяем все что захотим и адрес любого модуля. Иной раз бывает необходимость реализовать за счет модуля разный функционал.

Зачем? Какое этому практическое применение? Ведь несуществующие страницы в нашем понимании должны отдавать 404 ответ сервера(страница не найдена).

А еще там есть фишка , чпу заканчивается на \ пишем допустим .html или .php
и страницы имеет автоматом site.ru/brand/apple.html
И для каждой странице в админке сделать бы редирект на текущую страницу со страницы.

Практического применения этому нет, кроме эстетического. И вообще зачем плодить неоднозначность. Какое это логическое применение?

Re: Убрать /brand/ из URL производителя

Закусило Александр, а по моему вопросу подскажите, пожалуйста.

Только опять косяк вылез - теперь если выбираем несколько производителей, то показывает только товары последнего выбранного производителя. Видимо, где-то еще нужно вместо [] вставить [0]. Только не пойму где.

Повысить оценку Понизить оценку