Jump to content
  • 0

FAQ по Smarty


Vlad
 Share

Question

Итак, разные советы, трюки и рецепты по Smarty. Кто что знает, кидайте сюда.

Как сделать, чтобы на всех страницах логотип был ссылкой на главную, а на главной, чтобы ссылки не было?

Используем переменную $smarty.server.REQUEST_URI и проверяем ее значение на "/", что и будет соответствовать главной странице.

{if $smarty.server.REQUEST_URI != "/"}
<a href="/"><img src="/images/title.gif" width="213" height="60" border="0" alt="htmlbook.ru"></a>

{else}

<img src="/images/title.gif" width="213" height="60" alt="htmlbook.ru">
{/if}

Как сделать, чтобы автоматически заполнялся значением какой-то параметр HTML-кода?

Надо сделать следующее. Если есть значение переменной, то оно должно выводиться в HTML-коде. Если же его нет, тогда выводится значение по умолчанию. Для этого после переменной следует ввести |default:"значение".

<meta name="description" content="{$descr|default:"Изучение HTML, CSS и веб-дизайна по шагам"}">

  • Like 1
Link to comment
Share on other sites

18 answers to this question

Recommended Posts

  • 0

Как сделать, чтобы на всех страницах логотип был ссылкой на главную, а на главной, чтобы ссылки не было?

Способ2:

<a{if $smarty.server.REQUEST_URI != "/"} href="/"{/if}><img src="/images/title.gif" width="213" height="60" alt="htmlbook.ru" /></a>

————————————————————————

Как вывести массив непредсказуемой вложенности?

Как то нужен был рекурсивный вывод. Стандартных методов нету. Решение нашлось в виде "шаблон вызывает сам себя"

{include file="s_tree.tpl" tree=$categories tree_level=0}

s_tree.tpl :

<ul>
{foreach from=$tree item="v"}
<li id="facat{$v.id}-sub"{if !empty($v.children)} class="opnd"{/if}>
<strong id="fanchor{$v.id}"><a{if empty($v.children)} href="/subcategory/{$v.id}/"{/if}>{$v.title}</a></strong>
{if !empty($v.children)}

{if !empty($v.children.categories)}
{include file="s_tree.tpl" tree=$v.children.categories tree_level=$tree_level+1}
{/if}

{/if}
</li>
{/foreach}
</ul>

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

  • Like 1
Link to comment
Share on other sites

  • 0

И один из самых правильных кодов для данного случая

{capture name=linkContent}
<img src="/images/title.gif" width="213" height="60" border="0" alt="htmlbook.ru">
{/capture}

{if $smarty.server.REQUEST_URI != "/"}<a href="/">{$smarty.capture.linkContent}</a>{else}{$smarty.capture.linkContent}{/if}

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

P.S. Я не вернулся, не надейтесь :)

  • Like 1
Link to comment
Share on other sites

  • 0

а как работать то?

вернее в пхп проблем нет.

а вот как это в смарти сделать?

то есть

- как правильно написать запрос в пхп ?

- как его передать шаблону?

хотя бы пример какой-то простегький!

Link to comment
Share on other sites

  • 0

В принципе, никто не мешает сделать что-то типа такого:

$DB=new DbClass;
$smarty->assign('DB', $DB);

ну и потом в шаблоне

{foreach item=item key=key from=$DB->query_rows('SELECT * FROM `tablename`')}
{$item.somefield}
{foreach}

Хотя тут теряется собственно смысл разделения логики и представления.

Link to comment
Share on other sites

  • 0

Эх. Народ выручайте! Вопрос по смарти, как раз похожее как в старт топике.

В общем, такое условие

{%if $smarty.server.REQUEST_URI == "/blog/разные статьи"%}               
Картинка или текст
{%/if%}

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

Спасибо.

Edited by AlexDV
Link to comment
Share on other sites

  • 0

Break - это выход из цикла вообще (ну как в Смарти я не знаю). А вобщем сам нашел решение уже, просто осуществлять вывод по условию типа !$smarty.foreach.name.first (или что то в этом роде)

upd :facepalmxd: надо было просто читать англоязычную документацию

Edited by Avalon4eg
Link to comment
Share on other sites

  • 0

Пользуюсь php, но вот пришлось столкнуться со smarty... Как будет выглядеть эта функция на smarty?

<?php if ($_GET["operation"] == 'rent') echo 'selected' ?>

{if $smarty.get.operation == 'rent'}selected{/if}


{php}
if ($_GET["operation"] == 'rent') echo 'selected';
{/php}

или


{if $smarty.get.operation eq 'rent'}
selected
{/if}

спасибо!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy