Блог

Правим шаблон сообщения
4 сентября 2010 21:25

Используя поля базы данных, отличные от стандартных шаблонов, часто возникает необходимость поменять местами расположение значений полей на странице просмотра сообщения или в общем списке объявлений.

Вы знаете, что в этом случае нужно работать с шаблонами list.html и message.html. Но как правило, пользователи сталкиваются с проблемой − код шаблона слишком запутанный и выделить отдельные поля совершенно невозможно.

На самом деле всё элементарно просто.

Рассмотрим классическую ситуацию. Чаще всего в стандартном шблоне возникает необходимость подставить значение поля "валюта" сразу после поля цена, что вполне логично.

Стандартная вёрстка сделать нам этого не позволит. Там используются общие циклы для вывода значений всех полей, чтобы при добавлении новых полей, они отображались автоматически. Поэтому мы вручную рассортируем значения всех полей в шаблоне.

Править будем message.html

На первый взгляд запутанный синтаксис прост до безобразия. Мы имеем массив $message и имеем значение произвольного поля $message.f_1.value, где f_1 - идентификатор поля, значение которого мы выводим в шаблон.

Узнать идентификатор поля можно либо на странице просмотра объявления при наведении на соответствующее поле

... либо в панели администрирования в разделе блоки:

Узнав идентификаторы полей, выводим их значения:

{%if $message.f_1.value%}
  • Цена: {%$message.f_1.value%} {%$message.f_2.value%}
  • {%/if%}

    Понятно, что если поле не заполнено, выводить значение не нужно. Поэтому мы использовали оператор if.

    Аналогично поступаем с другими полями. В итоге получается примерно так:

    {%if $message.f_1.value%}
  • Цена: {%$message.f_1.value%} {%$message.f_2.value%}
  • {%/if%} {%if $message.f_3.value%}
  • Адрес: {%$message.f_3.value%}
  • {%/if%} {%if $message.f_14.value%}
  • Телефон: {%$message.f_14.value%}
  • {%/if%} {%if $message.f_15.value%}
  • Факс: {%$message.f_15.value%}
  • {%/if%} {%if $message.f_17.value%}
  • Характер объявления: {%$message.f_17.value%}
  • {%/if%} {%if $message.f_16.value%}
  • Сайт: {%$message.f_16.value%}
  • {%/if%}

    Теперь раскидаем это по ячейкам таблицы, но сначала уберём стандартные циклы. Узнать их можно просто:

    {%foreach  from=$message.fields.s item='v'%}
    ...
    {%/foreach%}
    

    В итоге имеем такую страницу:

    Мы рассортировали все поля и теперь можем менять их расположение по своему усмотрению.

    Подробная расшифровка массива $message расписана в комментариях в файле list.html

    Ваша оценка:

    Комментировать

    Ваше имя:
    Ваш email:
    (не публикуется)
    Комментарий:
     
    Введите код:
     

    Комментарии

    Вадим
    17 сентября 2010 07:04
     
    А как убрать вообще из формы добавления сообщения такие строки, как: Валюта, цена и прайс-лист???
    radmin
    17 сентября 2010 13:22
     
    В версии 2, все непосредственно из панели администрирования (пункт – поля базы данных)