Плагин customSettings

Опубликовано: 13 Мая 2015

Взято отсюда.

Часто хочется добавить в систему какие-то свои системные настройки или просто какие-то данные, которые можно было бы легко редактировать.

Например нам нужно на сайте вывести номер телефона и адрес компании. Можно для этого создать чанки, но редактировать их простому менеджеру сайта будет очень не удобно. Значительно удобнее было бы добавить эти данные в конфигурацию сайта («Инструменты» -> «Конфигурация»). Для этого можно использовать простой плагин.

Вот как это выглядит:

 Код плагина:

/**
 * customSettings
 *
 * Plugin to add your system settings
 *
 * @category    plugin
 * @version     1.0
 * @author      Andchir <andchir@gmaail.com>
 * @internal    @properties &settings=Settings;textarea;Example custom setting~custom_st_example
 * @internal    @events OnSiteSettingsRender
 * @internal    @modx_category
 */
$e = &$modx->Event;
$output = "";
if ($e->name == 'OnSiteSettingsRender'){
$settingsArr = !empty($settings) ? explode('||',$settings) : array('Example custom setting~custom_st_example');
$output .= '<table>';
foreach($settingsArr as $key => $st_row){
    $st_label_arr = explode('~',$st_row);
    $custom_st_label = trim($st_label_arr[0]);
    $custom_st_name = isset($st_label_arr[1]) ? $st_label_arr[1] : 'custom_st';
    $custom_st_value = isset($st_label_arr[1]) && isset($modx->config[$st_label_arr[1]]) ? trim($modx->config[$st_label_arr[1]]) : '';
    $output .= '
      <tr>
        <td nowrap="nowrap" class="warning" width="200">'.$custom_st_label.'</td>
        <td><input type="text" value="'.$custom_st_value.'" name="'.$custom_st_name.'" style="width: 350px;" onchange="documentDirty=true;" /></td>
      </tr>
    ';
}
$output .= '</table>';
}
$e->output($output);

Создаем плагин с названием «customSettings», вешаем его на событие «OnSiteSettingsRender». Конфигурация плагина:

&settings=Settings;textarea;Example custom setting~custom_st_example

В поле «Settings» нужно ввести название параметра и имя поля, разделенные символом "~". Можно несколько через разделитель "||".

Пример:

Номер телефона~company_phone||Адрес компании~company_address

Теперь в шаблонах сайта в любом месте для вывода этих данных можно вставить:

[(company_phone)]
[(company_address)]

А в коде ваших сниппетов или модулей можно выводить так:

$modx->config['company_phone']
$modx->config['company_address']

Обновлено

Цифры в названиях полей (то что после ~) использовать нельзя, т.к. в функции mergeSettingsContent() класса DocumentParser (document.parser.class.inc.php) регулярное выражение их не пропустит.

Комментарии (0)


Оставить комментарий




Разрешённые теги: <b><i><br>Добавить новый комментарий: