SMARTY замена

Тема в разделе "PHP", создана пользователем MyCreature, 15 апр 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. MyCreature

    MyCreature Постоялец

    Регистр.:
    5 окт 2008
    Сообщения:
    83
    Симпатии:
    5
    Есть кусок вывода элементов массива:

    Код:
    {foreach from=$__products item=_product}
    ........................................
    {/foreach}
    Возможно ли изменить это на вывод случайного элемента из этого массива?
     
  2. Arqin

    Arqin

    Регистр.:
    17 мар 2009
    Сообщения:
    185
    Симпатии:
    37
    Если чисто средствами Smarty, то попробуй поковырять rand из {math}.
    Если нужен только один элемент массива, то имхо можно генерить индекс элемента средствами php и потом передавать смарти сгенерированный индекс и по нему выводить на печать.
     
  3. MyCreature

    MyCreature Постоялец

    Регистр.:
    5 окт 2008
    Сообщения:
    83
    Симпатии:
    5
    В smatry разбираюсь плохо. Почему не срабатывает:

    Код:
    {math equation="rand() % (maximum-1)" maximum=$__products.count assign="random_index"}
    
    {$_product=products[$random_index]}
     
  4. Arqin

    Arqin

    Регистр.:
    17 мар 2009
    Сообщения:
    185
    Симпатии:
    37
    Всетаки тебе одно значение массива необходимо?
    Тогда вот что говорит об этом Smarty:
    Поэтому лучше сгенерируй в скрипте индекс и передай его в шаблон.
     
  5. MyCreature

    MyCreature Постоялец

    Регистр.:
    5 окт 2008
    Сообщения:
    83
    Симпатии:
    5
    Нет нужно действительно в самом шаблоне это выполнять.

    Вместо вывода всего массива будет вывод нескольких значений в разных местах.
     
  6. Ton

    Ton Постоялец

    Регистр.:
    20 май 2007
    Сообщения:
    55
    Симпатии:
    9
    Можно так:
    PHP:
    ...
    {
    php}
    $this->_tpl_vars['_product'] = $this->_tpl_vars['__products'][rand(0count($this->_tpl_vars['__products'])-1) ];
    {/
    php}
    {
    $_product}
    ...
     
    MyCreature нравится это.
  7. babon

    babon Создатель

    Регистр.:
    24 авг 2008
    Сообщения:
    25
    Симпатии:
    0
    Вообще шаблон смарти же первоначально задумывался для вывода html, а все подобное случайному выбору надо на php все-таки делать.
     
  8. Ton

    Ton Постоялец

    Регистр.:
    20 май 2007
    Сообщения:
    55
    Симпатии:
    9
    Мы сейчас обсуждаем возможность, а не идеологию кодирования.
     
  9. phpdude

    phpdude Создатель

    Регистр.:
    8 ноя 2008
    Сообщения:
    42
    Симпатии:
    10
    почти уверен что нечто такое должно сработать

    попробуйте :)
     
    MyCreature и Ton нравится это.
  10. Ton

    Ton Постоялец

    Регистр.:
    20 май 2007
    Сообщения:
    55
    Симпатии:
    9
    Да начиная с Version 2.5.0-RC2 (March 26, 2003) они расширили модификаторы с пощью @. Так к любой переменной можно прицепить PHP функцию
    PHP:
    {$arr|@count}
    {
    $str|@substr:3:2}
    P.S.
    Век живи, век учись.
     
Статус темы:
Закрыта.