вставка случайной картинки через smarty

Discussion in 'PHP' started by Димитрий, 4 Sep 2012.

  1. Димитрий

    Димитрий New Member

    Joined:
    30 Aug 2008
    Messages:
    22
    Likes Received:
    0
    Reputations:
    0
    в общем есть шаблон магазина vamshop на смарти,
    одна из картинок задается куском вот такого кода:

    <img src="{$tpl_path}i/right_write.png"
    логично предположить, что вместо {$tpl_path} можно вставить какую-то переменную, которая каждый раз меняется, на 1 из 2х вариантов.
    например, картинка одна, картинка вторая.
    это нужно чтобы в шаблоне каждый раз выводилась своя картинка ( на выбор из двух)
    поскольку в smarty полный нуб, прошу помощи, как это реализовать? через какой-то массив? или через цикл где будет меняться переменная? а потом эту переменную втыкать?
    через ява-скрипт ничего не получается, слишком длинные конструкции да и неудобно..
    прошу помощи:)
     
  2. Z0diac

    Z0diac New Member

    Joined:
    8 Aug 2012
    Messages:
    19
    Likes Received:
    2
    Reputations:
    0
    Димитрий, положите в каталог, в который ведет переменная $tpl_path 2 картинки: 1.png и 2.png и напишите такой код:

    PHP:
    <img src="{$tpl_path}i/" rand(12) . ".png"
    При каждой перезагрузке страницы будет выводится случайным образом 1 из 2х картинок.
     
  3. Димитрий

    Димитрий New Member

    Joined:
    30 Aug 2008
    Messages:
    22
    Likes Received:
    0
    Reputations:
    0
    не получается с таким кодом. вероятно потому, что соединение строк в смарте не с помощью точки делается..а с помощью чего-то другого.

    вот результат исходного кода хтмл:
    <img src="templates/argomoscow//i/ . rand(1, 2) . ".png" " width="412" height="100" align="right">

    то есть и rand и "." пошли как обычные знаки..


    может быть есть какой-то простой пример php-кода?
    учитывая что в смарти php код выполняется через {php} {/php}
     
    #3 Димитрий, 4 Sep 2012
    Last edited: 4 Sep 2012
  4. drim

    drim Member

    Joined:
    27 Aug 2009
    Messages:
    347
    Likes Received:
    33
    Reputations:
    4
    Дмитрий, смотрите как всё просто

    Code:
    <img src="{$tpl_path}i/{1|rand:2}".png"  
    
     
  5. Димитрий

    Димитрий New Member

    Joined:
    30 Aug 2008
    Messages:
    22
    Likes Received:
    0
    Reputations:
    0

    респектабельный респект!! сработало!
    разве что кавычка лишня перед .png, с ней не работало но это уже мелочи
     
  6. Z0diac

    Z0diac New Member

    Joined:
    8 Aug 2012
    Messages:
    19
    Likes Received:
    2
    Reputations:
    0
    ну эээ.... Я со Смарти не работал и даже не знаю, что это такое, так что сорри. не знал, что где то есть модифицированный синтаксис PHP.
     
  7. Димитрий

    Димитрий New Member

    Joined:
    30 Aug 2008
    Messages:
    22
    Likes Received:
    0
    Reputations:
    0
    бывает) вот поэтому я тут и задавал вопрос-ибо в смарти есть свои нюансы
     
  8. drim

    drim Member

    Joined:
    27 Aug 2009
    Messages:
    347
    Likes Received:
    33
    Reputations:
    4
    вообще, язык php изначально задумывался как шаблонизатор
    потом на нём стали делать внутреннюю логику и возникла задача - как отделить логику от представления. И придумали ещё шаблонизаторов (smarty, twig,etc)
    Также, придумали парадигму MVC, где архитектурно отделили вывод от представления. Теперь если ты правишь файл из каталога, скажем, component - модернизируешь логику, из каталога template - уже представление (т.е. отображение). Но и здесь пользуются smarty)

    PS хронология рандомная