Форум пользователей Impera CMS
Impera CMS - отличный движок для лёгкого создания интернет магазина.
Обладает невероятным количеством функций, необходимых в онлайн торговле.

Следить
Главная
14:47
25 мар
#
?
написал:

Подскажите, как проверить URL на вхождение строки? К примеру мне нужно отобразить блок, прописанный в page.tpl только в карточке товара, т.е. надо проверить условие, что URL содержит строку "/products/".

15:39
25 мар
#
?
написал:
{$uri = $smarty.server.REQUEST_URI}
{$check = preg_replace('!^/products/!', '', $uri)}
{if $check != $uri}
    мой блок
{/if}

Покажет блок если uri страницы начинается с /products/.

Тот же код на чистом Smarty (без php функции preg_replace).

{$uri = $smarty.server.REQUEST_URI}
{$check = $uri|regex_replace:'!^/products/!':''}
{if $check != $uri}
    мой блок
{/if}

Код проверки вхождения /products/ на любой позиции uri.

{$uri = $smarty.server.REQUEST_URI}
{$check = $uri|replace:'/products/':''}
{if $check != $uri}
    мой блок
{/if}

То же с php функцией str_replace.

{$uri = $smarty.server.REQUEST_URI}
{$check = str_replace('/products/', '', $uri)}
{if $check != $uri}
    мой блок
{/if}

Вобще можно было одной строкой.

{if preg_match('!^/products/!', $smarty.server.REQUEST_URI)}
    мой блок
{/if}

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

Предложение разработчику добавить в шаблоне настройку чтобы самому задавать разрешенные php функции.

Например если в emulator.php шаблона есть свойство $php_functions оно заносится в policy Smarty.

16:15
25 мар
#
?
написал:

Люди!!!!!!!!!!!!!!!!!!!

Вы же программситы. Или мартышки? Менеджер нажмёт на товаре галку "Особый URL" и ваша проверка полетит к чёрту. Потому что из uri исчезнет приставка "/products/".

100 лет назад уже придумали, как на Смартях выбросить флаг другому tpl, чтобы там включился блок. Всего 2 строки надо.

product.tpl

    ...
    {$block1=true scope=global}
    ...

page.tpl

    ...
    {if !empty($block1)} ваш блок 1 {/if}
    ...

Написание ответа

Перед публикацией рекомендуется использовать Предпросмотр, чтобы увидеть конечный вид сообщения.


Обратите внимание! Для противодействия спаму новые посты форума проявляются с задержкой от нескольких минут, пока не пройдут модерацию.