Перейти к содержанию
Форум поддержки пользователей VamShop

условие для главной страницы


Александр

Рекомендуемые сообщения

Что-то я туплю, и никак не могу сообразить.

в 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 ?

 

 

 

 

 

 

 

 

 

 

 

 

Ссылка на сообщение
Поделиться на другие сайты

Так есть же and и or для комбинации условий.

 

т.е. например:

{if !$smarty.get.cat and in_array($smarty.server.REQUEST_URI, array('/', '/tech.html'))}
Ссылка на сообщение
Поделиться на другие сайты

Да, но данное условие не является условием отвечающим по критерию "не для заглавной страницы".

Магазин видит страницы site.ru и site.ru/index.php как разные.

 

Я просто не понимаю почему:

{if in_array($smarty.server.REQUEST_URI, array('/', '/tech.html'))}

является true для site.ru и site.ru/tech.html, и каким условием эти 2 страницы разделить?

Ссылка на сообщение
Поделиться на другие сайты

Собственно за этим я и на форум залез : ))

 

Мне не ясно как в шаблоне отличить site.ru от site.ru/index.php

Ссылка на сообщение
Поделиться на другие сайты

$smarty.SEVER.REQUEST_URI

 

Вот эту переменную используйте.

 

Она имеет разные значения для / и /index.php

Ссылка на сообщение
Поделиться на другие сайты
<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,  которую и использую.

Ссылка на сообщение
Поделиться на другие сайты
Так смотрите, что выводится $smarty.server.REQUEST_URI
Что in_array возвращает, почему не работает как надо.
 
Вместо in_array используйте другой вариант какой, можно что-нибудь придумать, я думаю.
Ссылка на сообщение
Поделиться на другие сайты

Выводит он всё, что после адреса, то есть для 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, выводит оба селектора.

Ссылка на сообщение
Поделиться на другие сайты

Я так и делаю у себя в других местах.

Кое-что упростилось благодаря:

{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} ?

Ссылка на сообщение
Поделиться на другие сайты

Можно метку сделать через $vamTemplate->assign в /includes/header.php, к примеру.

Затем в шаблоне просто использовать метку if $page_path ...

Ссылка на сообщение
Поделиться на другие сайты

Да, что-то сразу не подумал, отлично получилось:

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'
Ссылка на сообщение
Поделиться на другие сайты

А есть где-нибудь список всех доступных переменных по разделам?

Или глобальных, специфичных для вамшопа?

Ссылка на сообщение
Поделиться на другие сайты

Разве что описание меток шаблноов в руководстве пользователя - http://vamshop.ru/manual/ch16s04.html

Ссылка на сообщение
Поделиться на другие сайты
  • 1 year later...

а где можно глянуть все эти приёмы по работе с smary шаблоном ? 

типа:

$smarty.server.REQUEST_URI
$page_path =='/checkout.php'
Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...