На примере скриншота выше, я показываю какую таблицу возможно сделать в коротких новостях на CMS DLE. Цели и задачи у нее могут быть самые разные. От необходимости поместить большое число записей на одну страницу (описание игровых заданий, описание товаров и многое другое с дополнительными параметрами).
Мой случай был для игры Lineage 2, в которой есть огромное количество игровых заданий. Публиковать их в виде классических статей нет смысла т.к. каждый из квестов имеет ряд требований (раса, класс, уровень, повторяемость и другие). Вот эти параметры и выводятся в соседних ячейках таблицы.
Нужно было оформить короткие новости в виде таблицы, где бы напротив названия самой новости выводились еще 4 дополнительный поля. Итого у меня должен был получится список из 5 столбцов.
Первый столбец — название новости, четыре соседних — требования игровых квестов. Сверстать такое проблем не составит, но вот убрать заголовки, то еще испытание, но все решаемо.
Если в код шаблона shortstory.tpl поместить код таблицы, то для каждой новой строки будет выводиться отдельная таблица, что не есть нормально.
DLE теги для категорий
С DLE 10.2 был введен новый мета-тег [category], который выводит текст, помещенный в него только на странице категорий с указанными номерами.
Начало таблицы
[category=1,2,3]
<table>
<tr>
<td>{title}</td>
<td>[доп_поле_dle</td>
<td>[доп_поле_dle</td>
<td>[доп_поле_dle</td>
<td>[доп_поле_dle</td>
</tr>
[/category]
{content}
Помещаем данный код над тегом {content} в файле
{THEME}/main.tpl
Запись выше выведет шапку таблицы на странице категорий, чей id = 1, 2, 3. Отличное решение, но не все так просто, т.к. fullstory.tpl также попадает под действие данных тегов, а в полной новости нам шапка таблицы не нужна
Полный код, который не будет выводить таблицу на странице полной новости будет включать в себя еще и теги условий [not-aviable], например:
[not-aviable=showfull]
[category=1,2,3]
<table>
<tr>
<td>{title}</td>
<td>[доп_поле_dle</td>
<td>[доп_поле_dle</td>
<td>[доп_поле_dle</td>
<td>[доп_поле_dle</td>
</tr>
[/category]
[/not-aviable]
Очень важно вставить код таблицы над тегом {content} т.к. закрывать таблицу придется таким же костыльным методом.
Конец таблицы
Как писалось выше, весь код “вертится” вокруг встроенного в DLE мета-тега {content}. начало таблицы помещается перед ним, а окончание — после.
[not-aviable=showfull]
[category=1,2,3]
<table>
<tr>
<td>{title}</td>
<td>[доп_поле_dle</td>
<td>[доп_поле_dle</td>
<td>[доп_поле_dle</td>
<td>[доп_поле_dle</td>
</tr>
[/category]
[/not-aviable]
{content}
[not-aviable=showfull]
[category=1,2,3]
</table>
[/category]
[/not-aviable]
Обратите внимание, что шапка таблицы и ее окончание помещаются внутрь самостоятельных контейнеров
Шаблон shortstory.tpl
В предыдущих шагах мы создали контейнер таблицы, в который теперь можно помещать табличные строки, поэтому в шаблоне коротких новостей {THEME}/shortstory.tpl нужно написать правильную разметку для строк HTML таблицы, который будет примерно следующим:
<tr>
<td>[full-link]{title}[/full-link]</td>
<td>[xfvalue_fieldname1]</td>
<td>[xfvalue_fieldname2]</td>
<td>[xfvalue_fieldname3]</td>
</tr>
Комментарии