Используем опции (xen:array)

Next

Регистрация
29.09.14
Сообщения
8,903
Симпатии
860
#1
Сегодня я вам расскажу как можно сделать настройку отображения в нужных вам темам или узлах форумах, используя настройки форума (опции).

Как это будет выглядеть примерно.

1.png


И так , начнём.
Важно: должен быть включен режим debug.
library -> config.php ( $config['debug'] = true; )

Инструкция:
1) Создаем дополнение /admin.php?add-ons/
Заполняем как угодно.

2) Переходим в настройки /admin.php?options/
Создаем настройку. Так же заполняем как угодно, и указываем дополнение которое мы создали в 1 пункте.

3) И так , теперь добавляем настройку
Буду показывать на своём примере.
  • ID настройки: wb_list
  • Дополнение: из 1 пункта
  • Заголовок: Номера форумов
  • Редактирование формата: Именованный шаблон
  • Параметры формата: template_Admin_list_WB
  • Тип данных: Массив
  • Значение по умолчанию: a:0:{}
  • Опции массива: *
  • Отображать в группах: номер сортировки
Жмем сохранить. И после сохранения у вас должно быть пусто.
Так как мы указали брать настройки из шаблона панели управления (template_Admin_list_WB)

4) Переходим теперь по ссылке /admin.php?admin-templates/
И жмем создать шаблон панели управления.
И в него вставляем такой код.
Код:
<xen:controlunit label="{$preparedOption.title}">
<xen:html>
<ul>
<xen:foreach loop="{$preparedOption.option_value}" value="$admin">
<xen:if is="{$admin} !== ''">
<li class="fbAdmin"><xen:textbox name="{$fieldPrefix}[{$preparedOption.option_id}][]" value="{$admin}" placeholder="ID" /></li>
</xen:if>
</xen:foreach>
<li class="fbAdmin"><xen:textbox name="{$fieldPrefix}[{$preparedOption.option_id}][]" value="" placeholder="ID" /></li>
</ul>
<div style="margin-bottom: 5px"><input type="button" value="Добавить еще" class="button smallButton FieldAdder" data-source="li.fbAdmin" /></div>
<input type="hidden" name="{$listedFieldName}" value="{$preparedOption.option_id}" />
{xen:raw $editLink}
</xen:html>

<xen:hint>Введите ID ($forum)</xen:hint>
<xen:explain>{xen:raw $preparedOption.explain}</xen:explain>
</xen:controlunit>

Теперь заполняем к примеру 2 и 3.
Жмем сохранить.

5) Идем по ссылке /admin.php?styles/master-stil.0/templates
Создаем шаблон к примеру wb_list.
И пишем такой код

Код:
<xen:set var="$arr_forum" value="{xen:array 'list={$xenOptions.gx_list}'}"/>
<xen:if is="{$forum.node_id}">
<xen:foreach loop="{$arr_forum}" value="{$list_gx}">
<xen:if is="in_array({$forum.node_id}, ({$list_gx}))">
Номер раздела - {$forum.node_id}
</xen:if>
</xen:foreach>
</xen:if>
Указываем наше дополнение - из 1 пункта.
Кнопка добавить еще - <input type="button" value="Добавить еще" class="button smallButton FieldAdder" data-source="li.fbAdmin" />
Подсказка - <xen:hint>Введите ID ($forum)</xen:hint>

Сохраняем. И теперь возвращаемся в настройки наши.
И видим уже такое.
3.png

Теперь заполняем к примеру 2 и 3.
Жмем сохранить.

5) Идем по ссылке /admin.php?styles/master-stil.0/templates
Создаем шаблон к примеру wb_list.
И пишем такой код

Код:
<xen:set var="$arr_forum" value="{xen:array 'list={$xenOptions.gx_list}'}"/>
<xen:if is="{$forum.node_id}">
<xen:foreach loop="{$arr_forum}" value="{$list_gx}">
<xen:if is="in_array({$forum.node_id}, ({$list_gx}))">
Номер раздела - {$forum.node_id}
</xen:if>
</xen:foreach>
</xen:if>
Указываем наше дополнение из 1 пункта, не забываем.
Сохраняем и переходим к модификациям.
/admin.php?template-modifications/


6) Создаем модификацию к примеру я выведу в разделах.

  • Шаблон: node_forum_level_2
  • Ключ модификации: node_wb_2
  • Тип поиска: Простая замена
  • Найти: <div class="nodeText">
  • Заменить:
Код:
<div class="nodeText">
<xen:include template="wb_list" />
  • Дополнение: из 1 пункта.
Сохраняем модификацию, и теперь все что вы указываете в настройках. Выводит рядом с названием раздела.
То что мы указали в 5 пункте. В моём примере.
Выводит в нужных разделах (номер раздела).

К примеру ставлю в опции в 3 разделе.
4.png

И смотрю на форуме.
5.png
Вот и всё. С темами делать по аналогии.