- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
v_ovan, щас глянул, у него шаблонизатор smarty. А у него нет встроенной функции preg_replace и поэтому нужен блок {php}..{/php}
Нафиг использовать шаблонизатор, если в него опять пихать ПХП код?!
на тег {php} ругается матом, а вот так - нормально
<?php
$page_href=preg_replace('/\[\d+?\]/i', '[]', $page.href);
?>
адрес получился с [] наконец-то,
но ссылка не такая, как должна быть (там пагинация).
должно быть bfilter[brand][]=13&bfilter[brand][]=24&p=2
а получается bfilter[brand][]=13&bfilter[brand][]=24
что-то нужно видимо, с другими переменными типа $page.n сделать
---------- Добавлено 21.10.2016 в 00:21 ----------
а если делаю
{foreach from=$paginator->getPageList() item=page}<?php
$page.href=preg_replace('/\[\d+?\]/i', '[]', $page.href);
?>
<a href="{$page.href}" {if $page.act}class="act"{/if}>{if $page.class=='left'}«{$page.n}{elseif $page.class=='right'}{$page.n}»{else}{$page.n}{/if}</a>
{/foreach}
то урл получается bfilter[brand][0]=13&bfilter[brand][1]=24&p=2
т.е. номер страницы есть, но опять [0]
на тег {php} ругается матом
А не должен http://www.smarty.net/best_practices он есть в документации. Платный продукт а использует либу по GPL лицензии(хоть не запрещено).. как то не комильфо
Замените на это, другой pattern
А не должен http://www.smarty.net/best_practices он есть в документации.
там ниже написано вроде как надо:
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
а {php} красным выделено - нельзя.
{php} блок он есть http://www.smarty.net/docsv2/ru/language.function.php.tpl просто у вас он скорее всего ругается на переменные smarty внутри этого блока.
Такая там встроенная штука есть http://www.smarty.net/docsv2/ru/language.modifier.regex.replace.tpl
Насчёт регулярки - я выше написал уже реально работающий код. Насчёт включения пхп в смарти и наоборот: пхп не воспринимает переменных смарти, а смарти плевать хотел на теги <?php ?> - отсюда и косяки. Вариант - зарегистрировать функцию смарти вне шаблона, а потом уже использовать её в шаблоне с аргументом $page.href.
В Смарти вместо preg_replace применяется regex_replace. Синтаксис:
{php} блок он есть http://www.smarty.net/docsv2/ru/language.function.php.tpl просто у вас он скорее всего ругается на переменные smarty внутри этого блока.
Такая там встроенная штука есть http://www.smarty.net/docsv2/ru/language.modifier.regex.replace.tpl
не хочет она у меня работать :(
---------- Добавлено 21.10.2016 в 01:39 ----------
Вариант - зарегистрировать функцию смарти вне шаблона, а потом уже использовать её в шаблоне с аргументом $page.href.
Сегодня я уж это точно не осилю.
Спасибо всем за помощь!
Сегодня я уж это точно не осилю.
И не надо - это в общем случае, а здесь и regex_replace сработает. То, что предложил rereg, должно работать, наверное, какой-то нюансик не учтён, типа замены двойных кавычек на одинарные. На свежую голову наверняка увидите :).
Сегодня получил ответ на форуме ReadyScript. На всякий случай сюда продублирую, вдруг кому понадобится.
/catalog/elektronika/?bfilter%5Bbrand%5D%5B0%5D=3&bfilter%5Bbrand%5D%5B1%5D=5&bfilter%5Bbrand%5D%5B2%5D=1&bfilter%5Bbrand%5D%5B3%5D=2&bfilter%5Bbrand%5D%5B4%5D=4&bfilter%5Bbrand%5D%5B5%5D=6&bfilter%5Bbrand%5D%5B6%5D=7&bfilter%5Bbrand%5D%5B7%5D=8&bfilter%5Bbrand%5D%5B8%5D=9&bfilter%5Bbrand%5D%5B9%5D=10&bfilter%5Bbrand%5D%5B10%5D=11&bfilter%5Bbrand%5D%5B11%5D=12&p=2
Т.е. [ это %5B ] это %5D, потому, что это правильная кодировка адресов через urlencode. Соответственно правильно будет так:
{$page_href=preg_replace('/\[\d+?\]/i', '[]', urldecode($page.href))}
Т.е. мы предварительно раскодировали для преобразования.
P.S. Мы всегда поддерживаем только одни из самых последних технологий.
http://forum.readyscript.ru/post/5111/#p5111