4. Создание шаблонов для отображения списков
Один и тот же список можно отображать с помощью разных шаблонов:
1. как выпадающий список (<SELECT>)
2. как список с множественным выбором (<SELECT multi>)
3. как набор флажков/чекбоксов (<INPUT TYPE=CHECKBOX>)
4. как набор радио-кнопок (<INPUT TYPE=RADIO>)
Для каждого типа отображения списка можно создать любое число шаблонов. То есть, например, список комплектации автомобиля (ABS, MP3 магнитола, Гидроусилитель…) можно отобразить как список с множественным выбором или как набор чекбоксов, причем для разных рубрик с разным стилем оформления.
Шаблоны для отображения списков должны находиться в директории:
\modules\qplboard\templates\custom\user\list\ - для отображения пользователю
\modules\qplboard\templates\custom\admin\list\ - для отображения администратору
Для всех четырех типов списков нужно создать набор шаблонов по 8 в каждом (2 для администратора и 6 для пользователя):
1. Шаблон для отображения списка при подаче объявления (_edit.tpl)
2. Шаблон для отображения списка при поиске объявлений (_search.tpl)
3. Шаблон для отображения списка при выводе объявления (_pr.tpl)
4. Шаблон для отображения списка при выводе последних объявлений во всплывающем окне на стартовой странице (_nf.tpl)
5. Шаблон для отображения списка при выводе VIP объявлений во всплывающем окне на стартовой странице (_sf.tpl)
6. Шаблон для отображения списка при выводе объявления в таблице с результатами поиска (_f.tpl)
Названия шаблонов (для пользователя и для администратора имена файлов совпадают):
check_edit.tpl
check_pr.tpl
check_search.tpl
check_nf.tpl
check_sf.tpl
check_f.tpl
multiselect_edit.tpl
multiselect_pr.tpl
multiselect_search.tpl
multiselect_nf.tpl
multiselect_sf.tpl
multiselect_f.tpl
radio_edit.tpl
radio_pr.tpl
radio_search.tpl
radio_nf.tpl
radio_sf.tpl
radio_f.tpl
select_edit.tpl
select_pr.tpl
select_search.tpl
select_nf.tpl
select_sf.tpl
select_f.tpl
Имя файла шаблона состоит из двух частей. Первая – тип списка, вторая – место использования.
Префикс (тип списка):
check – тип “чекбокс/флажок”
multiselect – тип “список с множественным выбором”
radio – тип “радио-кнопка”
select – тип “выпадающий список”
Формат файла шаблона списка
Каждый файл шаблона списка состоит из трех секций:
1. Шаблон таблицы
2. Шаблон столбца
3. Шаблон элемента
4. Разделитель элементов списка
Четыре секции разделены между собой последовательностью
################################################## ###################
Пример шаблона для чекбоксов (флажков) check_edit.tpl:
<table cellspacing=0 cellpadding=0 border=0 width=”100%”>
<tr valign=top><# CONTENT #></tr>
</table>
################################################## ###################
<td width=33%><# COL #></td>
################################################## ###################
<input type=checkbox name="<# FORM_NAME #>_<# ID #>" <# CHECKED #> > <# NAME #>
################################################## ###################
<br>
################################################## ###################
Рассмотрим каждую секцию детально.
Секция “разделитель элементов списка”
<br>
При отображении чекбоксов они будут разделяться переводом строки. Как альтернатива, их можно, например, разделять пробелом или тегом <hr>
Секция “шаблон элемента”
<input type=checkbox name="<# FORM_NAME #>_<# ID #>" <# CHECKED #> > <# NAME #>
Для чекбокса каждый элемент будет сформирован как <INPUT TYPE=CHECKBOX>.
name="<# FORM_NAME #>_<# ID #>"
Имя чекбокса будет сформировано автоматически доской и состоять из имени формы и идентификатора элемента списка. То есть будет для каждого – уникальным. С помощью мета-тега <# CHECKED #> доска может управлять статусом чекбокса (отмечен/не отмечен).
<# NAME #> заменяется на имя элемента списка.
Таким образом в данном примере генерируются все элементы списка в виде чекбоксов и между ними вставляется разделитель <br> для каждого столбца.
Секция “шаблон столбца”
<td width=33%><# COL #></td>
Каждый столбец – это ячейка таблицы. В данном примере элементы списка отображаются по горизонтали в несколько столбцов (кол-во будет определяться параметром COLNUM, см. выше).
Для того, чтобы столбцы стали строками измените шаблон выше на этот:
<table cellspacing=0 cellpadding=0 border=0 width=”100%”>
<# CONTENT #>
</table>
################################################## ###################
<tr><td width=33%><# COL #></td></tr>
################################################## ###################
<input type=checkbox name="<# FORM_NAME #>_<# ID #>" <# CHECKED #> > <# NAME #>
################################################## ###################
<br>
################################################## ###################
Секция “шаблон таблицы”
<table cellspacing=0 cellpadding=0 border=0 width=”100%”>
<tr valign=top><# CONTENT #></tr>
</table>
Алгоритм построения списка следующий:
1. Из базы данных выбираются все элементы указанного списка
2. Определяется кол-во элементов в столце путем деления общего кол-ва элементов списка на указанное кол-во столбцов
3. Для каждого столбца склеиваются элементы с разделителем
4. Полученный код вставляется в шаблон таблицы
Для формирования выпадающего списка <SELECT> и списка с множественным выбором <SELECT multi> кол-во столбцов равно 1. Шаблон будет выглядеть проще:
<select name="<# FORM_NAME #>"> <# CONTENT #></select>
################################################## ###################
<# COL #>
################################################## ###################
<option value="<# ID #>" <# SELECTED #>><# NAME #></option>
################################################## ###################
################################################## ###################
Как вы можете заметить, здесь нет разделителя, так как для склейки тегов <OPTION …> разделитель не нужен. Также проще стал и шаблон столбцов, так как их всего один. Таблицы в данном случае нет.
Примеры для всех типов списков вы можете посмотреть в комплекте шаблонов, поставляющихся с доской.
__________________
Недорогой хостинг! forum-seo.net/showthread.php?p=10754 Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 30 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|