Smarty, универсальное решение проблемы вывода.

Тема в разделе "Другие языки", создана пользователем RolCom, 10 май 2009.

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

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    Суть проблемы, есть массив с данными допустим так:
    Код:
    Array
    (
        [0] => Array
            (
                [header] => Заголовок изображения
                [src] => image.jpeg
            )
        [1] => Array
            (
                [header] => Заголовок изображения 2
                [src] => image2.jpeg
            )
    )
    
    Надо вывести в виде таблицы с произвольным числом рядов, к примеру так:
    Код:
    +------------+-------------+-------------+
    |Заголовок 1 | Заголовок 2 | Заголовок 3 |
    +------------+-------------+-------------+
    |     <img>  |  <img>      |   <img>     |
    +------------+-------------+-------------+
    |Заголовок 4 | Заголовок 5 | Заголовок 6 |
    +------------+-------------+-------------+
    |     <img>  |  <img>      |   <img>     |
    +------------+-------------+-------------+
    
    Как это сделать?
     
  2. best

    best

    Регистр.:
    12 апр 2006
    Сообщения:
    246
    Симпатии:
    54
    Перейти по ссылке
    А если ничего не поймешь, то скачай исходник примера(гостевая помойму)ю Там все наглядно показано.
     
  3. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    smarty.net сейчас не доступен, но ссудя по ссылке она на описание оператора foreach. Так вот он здесь не подходит.
    Буду очень признателен за пример, как прикрутить этот html:
    HTML:
    
    <table>
    <tr>
       <td>Заголовок к картинке 1</td>
       <td>Заголовок к картинке 2</td>
       <td>Заголовок к картинке 3</td>
    <tr>
       <td><img src="..." alt="картинка 1"></td>
       <td><img src="..." alt="картинка 2"></td>
       <td><img src="..." alt="картинка 3"></td>
    <tr>
       <td>Заголовок к картинке 4</td>
       <td>Заголовок к картинке 5</td>
       <td>Заголовок к картинке 6</td>
    <tr>
       <td><img src="..." alt="картинка 4"></td>
       <td><img src="..." alt="картинка 5"></td>
       <td><img src="..." alt="картинка 6"></td>
    </table>
    
     
  4. Denis5

    Denis5 Постоялец

    Регистр.:
    2 сен 2008
    Сообщения:
    98
    Симпатии:
    23
    тока так наверное
    HTML:
    
    <table>
    <tr>
    {section name=i loop=$massiv}
        <td>{$massiv[i].header}</td>
    {/section}
    </tr>
    <tr>
    {section name=i loop=$massiv}
        <td>{$massiv[i].src}</td>
    {/section}
    </tr>
    <table>
    
     
  5. best

    best

    Регистр.:
    12 апр 2006
    Сообщения:
    246
    Симпатии:
    54
    Если тебе не подходит оператор перебора массива и ты не знаешь, что такое if, то сходи к школьному учителю. Как ты получишь прорисовку если тебе не известно кол-во элементов? тут достаточно оператора foreach и if.
     
  6. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    Denis5
    К сожалению не пойдет, получится длинная таблица, а надо в n столбцов. см в первом посте, втором блоке code
    Что такое if знаю, оператором foreach пользоваться умею. А ты если такой умный просто сделай этот пример с foreach, ок? Или не флуди зря.
     
  7. best

    best

    Регистр.:
    12 апр 2006
    Сообщения:
    246
    Симпатии:
    54
    Код:
    $smarty->assign('data',array(1,2,3,4,5,6,7,8,9));
    $smarty->display('index.tpl');
    HTML:
    {html_table loop=$data cols=3 table_attr='border="0"'}
    
    на тебе еще и foreach
    Код:
    <table> 
       <tr> 
       {foreach name=loop_name item=some_item from=$some_data} 
          <td>
              info for this table data 
          </td>       
     
          {if $smarty.foreach.loop_name.iteration mod $columns eq 0} 
             </tr><tr> 
          {/if}       
     
       {/foreach}    
    </tr> 
    </table>
     
  8. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    Ни то, ни другое не подходит. У тебя просто массив со скалярными значениями. А надо структуру подобную см выше - каждый элемент массива массив из двух элементов, подпись к рисунку и рисунок. Яж не зря привел структуру данных, html код, и что должно получится.
     
  9. Denis5

    Denis5 Постоялец

    Регистр.:
    2 сен 2008
    Сообщения:
    98
    Симпатии:
    23
    Сделай дивами в жёстком контейнере... Сами и перенесуться.
     
  10. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    Дело в том высота котента (в данном случае заголовок рисунка) неизвестна и в случае дивов верхняя ячейка будет разной высоты, а должна быть выравнена.
     
Статус темы:
Закрыта.