Тема: Доработка модуля SEO контроль. Экранирование.

А можно что-то сделать с ручным экранированием символов в Маске URL?
Ну это ж кошмар заставлять админа сайта вручную каждый символ экранировать.
Неужели нельзя каким-то простеньким скриптом это сделать?

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

Re: Доработка модуля SEO контроль. Экранирование.

Какие экранирования Вы имеете ввиду?

3 Отредактировано Владимир 1916 (01.10.2016 16:59:18)

Re: Доработка модуля SEO контроль. Экранирование.

вот это

Регулярное выражение (PCRE) которое сравнивается с текущим URI. Слеш экранируется автоматически, остальные символы (согласно правилам PCRE) необходимо экранировать обратным слешем вручную...

Это в Маске URL модуля Управление SEO.
Маску URL ввожу так catalog/categoria-1/\?bfilter\[brand\]\[\]\=17
А если просто так catalog/categoria-1/?bfilter[brand][]=17, то сразу ошибка вылезает.


P.S. а можно как-то возможность вставки скриншотов на форуме включить? Или я ее просто не нашел?

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

Re: Доработка модуля SEO контроль. Экранирование.

И еще по этому модулю.

Если выбрано несколько брендов, то выводит описание того, который выше в списке.
Это не правильно. Нужно сделать, чтобы если выбрано больше одного, то выводило дефолтный текст.
С характеристиками то же самое.

Не подскажете, как это можно сделать?

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

Re: Доработка модуля SEO контроль. Экранирование.

Это в Маске URL модуля Управление SEO.
Маску URL ввожу так catalog/categoria-1/\?bfilter\[brand\]\[\]\=17
А если просто так catalog/categoria-1/?bfilter[brand][]=17, то сразу ошибка вылезает.

Ясно напишите в сервис пожеланий, чтобы была галочка указывающее не регулярное выражение, а чистое совпадение.
helpdesk.readyscript.ru

Re: Доработка модуля SEO контроль. Экранирование.

И еще по этому модулю.

Если выбрано несколько брендов, то выводит описание того, который выше в списке.
Это не правильно. Нужно сделать, чтобы если выбрано больше одного, то выводило дефолтный текст.
С характеристиками то же самое.

Не подскажете, как это можно сделать?

С примерами опишите проблему.

Re: Доработка модуля SEO контроль. Экранирование.

Производители в фильтре изначально расположены в алфавитном порядке.

ПРОИЗВОДИТЕЛИ
Aaaaa
Bbbbb
Cccccc

Когда в фильтре ничего не выбрано, выводится дефолтное описание категории.

Выбираем производителя Cccccc, выводится его описание Cccccc.
Потом, не убирая галочки на Cccccc, выбираем Aaaaaa, выводится описание Aaaaaa.

А если наоборот.
Выбираем производителя Aaaaaa, выводится его описание Aaaaaa.
Потом, не убирая галочки на  Aaaaaa, выбираем Cccccc, а выводится описание от Aaaaa.

Там, я так понимаю, там проверка идет есть ли Seo-описание, и если есть, то считывается первое найденное.

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

С характеристиками аналогично.

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

Re: Доработка модуля SEO контроль. Экранирование.

Ну это скорее частное решение чем общее. И вполне реализуемое.
Вы можете открыть шаблон list_products.tpl. Там можно проверить GET запрос и вытащить id первого бренда. По  нему загрузить нужный бренд. И выдать описание.

{if !empty($smarty.get.bfilter.brand)} {* Посмотрим установленный фильтр *}
    {$first_brand=current($smarty.get.bfilter.brand)} {* Получим id нужного бренда *}
    {reset($smarty.get.bfilter.brand)|devnull}
    
    {static_call var=brand callback=['\Catalog\Model\Orm\Brand', 'loadByWhere'] params=[['id'=>$first_brand.id]]} 
    {$brand.description}
{/if}

Re: Доработка модуля SEO контроль. Экранирование.

Прошу прощения. А сам запутался и Вас запутал.
Производители тут вовсе не причем. Просто я информацию про них на странице категории вывожу через модуль Управление SEO. Но информация берется не из /brand/, а из SEOcontrol.

Так вот. В шаблоне list_products.tpl, для вывода информации используется код

<div id="products" {if $shop_config}class="shopVersion"{/if}>
    <h1 class="catTitle">{moduleinsert name='\SeoControl\Controller\Block\SeoH1' default={$category.name}}</h1>
    {$seo_content={moduleinsert name="\SeoControl\Controller\Block\SeoText" indexTemplate='blocks/seotext/seotext.tpl'}}
    {if !empty ($seo_content)} 
    <div class="categoryDescription">{$seo_content}</div>

Сейчас он выводит блок, если URL страницы содержит заданный адрес.
Мне нужно, чтобы он выводил блок только при полном совпадении с заданным адресом.

Т.е. сейчас
Заданный адрес в админке SEOcontrol   /catalog/categoria1/?pf[335][]=16
Адрес текущей страницы /catalog/teplyy-pol/?pf[335][]=16&pf[335][]=18
Блок из SEOcontrol выводится.

А нужно, чтобы выводился только для страницы с адресом /catalog/categoria1/?pf[335][]=16
А для /catalog/categoria1/?pf[335][]=16* - не выводился. Где * - любой символ(ы).

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

Re: Доработка модуля SEO контроль. Экранирование.

Ну надо тогда регулярным выражением с $(конец строки) на конце.

\/catalog\/categoria1\/?pf\[335\]\[\]=16$

Re: Доработка модуля SEO контроль. Экранирование.

Премного благодарен!

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