Александр 0 Опубликовано 23 февраля, 2014 Жалоба Share Опубликовано 23 февраля, 2014 Что-то я туплю, и никак не могу сообразить. в index html имею некоторое меню, в нём класс current должен вставляться на соответствующей странице. сделал так: <li class=" {if !$smarty.get.cat}{if in_array($smarty.server.REQUEST_URI, array('/', '/tech.html'))}current{/if}{/if}"><a href="tech.html">Технологии</a></li> <li class="{if in_array($smarty.server.REQUEST_URI, array('/', '/index.php'))}current{/if}"><a href="index.php">Каталог</a></li> Всё бы ничего, но на главной странице класс активизирован в обоих случаях, а мне надо только во втором. Варианты: {if !$smarty.get.cat} {if $mainpage} {if in_array($smarty.server.REQUEST_URI, array('/', '/'))} не решают проблему. Каким образом можно задать условие TRUE на адресHttp://site.ru или Https://site.ru ? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 23 февраля, 2014 Жалоба Share Опубликовано 23 февраля, 2014 Так есть же and и or для комбинации условий. т.е. например: {if !$smarty.get.cat and in_array($smarty.server.REQUEST_URI, array('/', '/tech.html'))} Ссылка на сообщение Поделиться на другие сайты
Александр 0 Опубликовано 23 февраля, 2014 Автор Жалоба Share Опубликовано 23 февраля, 2014 Да, но данное условие не является условием отвечающим по критерию "не для заглавной страницы". Магазин видит страницы site.ru и site.ru/index.php как разные. Я просто не понимаю почему: {if in_array($smarty.server.REQUEST_URI, array('/', '/tech.html'))} является true для site.ru и site.ru/tech.html, и каким условием эти 2 страницы разделить? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 23 февраля, 2014 Жалоба Share Опубликовано 23 февраля, 2014 Напишите просто условие правильно, используя and и/или or если нужно. Ссылка на сообщение Поделиться на другие сайты
Александр 0 Опубликовано 23 февраля, 2014 Автор Жалоба Share Опубликовано 23 февраля, 2014 Напишите просто условие правильно, используя and и/или or если нужно. Ссылка на сообщение Поделиться на другие сайты
Александр 0 Опубликовано 23 февраля, 2014 Автор Жалоба Share Опубликовано 23 февраля, 2014 Собственно за этим я и на форум залез : )) Мне не ясно как в шаблоне отличить site.ru от site.ru/index.php Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 23 февраля, 2014 Жалоба Share Опубликовано 23 февраля, 2014 $smarty.SEVER.REQUEST_URI Вот эту переменную используйте. Она имеет разные значения для / и /index.php Ссылка на сообщение Поделиться на другие сайты
Александр 0 Опубликовано 23 февраля, 2014 Автор Жалоба Share Опубликовано 23 февраля, 2014 <li class=" {if in_array($smarty.server.REQUEST_URI, array('/', '/index.php'))}{else if in_array($smarty.server.REQUEST_URI, array('/', '/service.html'))}current{/if}"><a href="service.html">Сервис</a></li> <li class=" {if in_array($smarty.server.REQUEST_URI, array('/', '/index.php'))}{else if in_array($smarty.server.REQUEST_URI, array('/', '/tech.html'))}current{/if}"><a href="tech.html">Технологии</a></li> странно, но этот код начинает вставлять на всех кроме индексной. Как будто конструкция else if in_array($smarty.server.REQUEST_URI, array('/', '/service.html')) ничего не значит. ---------------- {$smarty.SERVER.REQUEST_URI} - в верхнем регистре у меня ничего на странице вообще не выводится, то есть в смарти такой переменной нет, есть $smarty.server.REQUEST_URI, которую и использую. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 23 февраля, 2014 Жалоба Share Опубликовано 23 февраля, 2014 Так смотрите, что выводится $smarty.server.REQUEST_URI Что in_array возвращает, почему не работает как надо. Вместо in_array используйте другой вариант какой, можно что-нибудь придумать, я думаю. Ссылка на сообщение Поделиться на другие сайты
Александр 0 Опубликовано 23 февраля, 2014 Автор Жалоба Share Опубликовано 23 февраля, 2014 Выводит он всё, что после адреса, то есть для site.ru/index.php - /index.php, что и понятно. А я пытаюсь понять, как мне определить условие , когда он ничего не содержит. Делал изначально ещё так: <li class="{ if in_array($smarty.server.REQUEST_URI, array('/', '/tech.html'))}current{/if}"><a href="tech.html">Технологии</a></li> <li class="{if in_array($smarty.server.REQUEST_URI, array('/', '/index.php')) | $smarty.server.REQUEST_URI!=''}current{/if}"><a href="index.php">Каталог</a></li> но при этом на странице site.ru/tech.html, выводит оба селектора. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 23 февраля, 2014 Жалоба Share Опубликовано 23 февраля, 2014 Так а почему if ... else ... /if не использовать? Ссылка на сообщение Поделиться на другие сайты
Александр 0 Опубликовано 24 февраля, 2014 Автор Жалоба Share Опубликовано 24 февраля, 2014 Я так и делаю у себя в других местах. Кое-что упростилось благодаря: {php} $REQUEST_URI_PAGE = parse_url($_SERVER['REQUEST_URI']); $page_path = $REQUEST_URI_PAGE['path']; {/php} <div id="toplinks"> <ul> <li class="{php}if ($page_path == '/service.html') {echo 'current';}{/php}"><a href="service.html">Сервис</a></li> <li class="{php}if ($page_path == '/tech.html') {echo 'current';}{/php}"><a href="tech.html">Технологии</a></li> <li class="{php}if ($page_path == '/index.php') {echo 'current';}{/php}"><a href="index.php">Каталог</a></li> </ul> </div> НО код выглядит некрасиво, смарти не задействован. Есть ли какой-то способ пробросить $page_path в глобальную переменную типа {$smarty.const.page_path} ? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 24 февраля, 2014 Жалоба Share Опубликовано 24 февраля, 2014 Можно метку сделать через $vamTemplate->assign в /includes/header.php, к примеру. Затем в шаблоне просто использовать метку if $page_path ... Ссылка на сообщение Поделиться на другие сайты
Александр 0 Опубликовано 24 февраля, 2014 Автор Жалоба Share Опубликовано 24 февраля, 2014 Да, что-то сразу не подумал, отлично получилось: Header.php $REQUEST_URI_PAGE = parse_url($_SERVER['REQUEST_URI']); $vamTemplate->assign('page_path',$REQUEST_URI_PAGE['path']); шаблон <li class="{if $page_path =='/tech.html'}current{/if}"><a href="tech.html">Технологии</a></li> <li class="{if $page_path =='/index.php'}current{/if}"><a href="index.php">Каталог</a></li> Благодарю. Здорово, теперь везде вместо: in_array($smarty.server.REQUEST_URI, array('/', '/checkout.php')) проставил: $page_path =='/checkout.php' Ссылка на сообщение Поделиться на другие сайты
Александр 0 Опубликовано 24 февраля, 2014 Автор Жалоба Share Опубликовано 24 февраля, 2014 А есть где-нибудь список всех доступных переменных по разделам? Или глобальных, специфичных для вамшопа? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 24 февраля, 2014 Жалоба Share Опубликовано 24 февраля, 2014 Разве что описание меток шаблноов в руководстве пользователя - http://vamshop.ru/manual/ch16s04.html Ссылка на сообщение Поделиться на другие сайты
madvolkov 0 Опубликовано 17 февраля, 2016 Жалоба Share Опубликовано 17 февраля, 2016 а где можно глянуть все эти приёмы по работе с smary шаблоном ? типа: $smarty.server.REQUEST_URI $page_path =='/checkout.php' Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 17 февраля, 2016 Жалоба Share Опубликовано 17 февраля, 2016 Документация по смарти вот здесь - http://www.smarty.net/docsv2/en/ Ссылка на сообщение Поделиться на другие сайты
madvolkov 0 Опубликовано 17 февраля, 2016 Жалоба Share Опубликовано 17 февраля, 2016 thank's ! Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 17 февраля, 2016 Жалоба Share Опубликовано 17 февраля, 2016 Удачи Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения