Обучение 03.02.2019 7958 2 минуты

FENOM'енальный курс. Часть 17. Создаем конфигурацию сайта с помощью ClientConfig.

FENOM'енальный курс. Часть 17. Создаем конфигурацию сайта с помощью ClientConfig.

Шаблон MAGAZINE вы можете скачать по ссылке.

Мы с вами плавно подходим к завершающей стадии нашего курса. В данном уроке мы с вами продолжим создавать параметры для ClientConfig. В данном уроке мы с вами добьем все наши опции до конца и начнем с контактов, которые у нас есть на странице контактов, футере и шапке сайта.

Создаем категорию “Контакты” в ClientConfig и создаем следующие поля:

FENOM'енальный курс. Часть 17. Создаем конфигурацию сайта с помощью ClientConfig.

Далее нам нужно создать категорию социальные сети и создать следующие поля:

FENOM'енальный курс. Часть 17. Создаем конфигурацию сайта с помощью ClientConfig.

Здесь я постарался собрать все основные социальные сети, которые мы сможем заполнить. Еще я бы дополнительно убрал в опции верхний и нижний логотипы, копирайт в футере.

Теперь нам осталось вывести эти опции в шаблонах и чанках. Выводить мы их будем следующим образом, например, блок социальных сетей:


{if $_modx->getPlaceholder('+conf_vk')}<li><a href="{$_modx->getPlaceholder('+conf_vk')}" target="_blank"><i class="fa fa-vk"></i></a></li>{/if}
{if $_modx->getPlaceholder('+conf_facebook')}<li><a href="{$_modx->getPlaceholder('+conf_facebook')}" target="_blank"><i class="fa fa-facebook"></i></a></li>{/if}
{if $_modx->getPlaceholder('+conf_twitter')}<li><a href="{$_modx->getPlaceholder('+conf_twitter')}" target="_blank"><i class="fa fa-twitter"></i></a></li>{/if}
{if $_modx->getPlaceholder('+conf_instagram')}<li><a href="{$_modx->getPlaceholder('+conf_instagram')}" target="_blank"><i class="fa fa-instagram"></i></a></li>{/if}
{if $_modx->getPlaceholder('+conf_youtube')}<li><a href="{$_modx->getPlaceholder('+conf_youtube')}" target="_blank"><i class="fa fa-youtube-play"></i></a></li>{/if}
	

Аналогично выводим все остальное. Единственный момент, на котором я хочу заострить внимание и научить вас писать файловые плагины на Fenom – это телефон. Телефон всегда должен быть ссылкой формата tel:+71234567890, но у нас телефон забит в формате, удобным для чтения и запоминания, например, +7 (123) 456-78-90, поэтому в аттрибуде href данный текст нужно почистить от лишних символов, а сделаем мы с вами это с помощью плагина fenom_modificators.php, который создадим в папке core/elements/plugins/:


<?php
/** @var modX $modx */
switch ($modx->event->name) {
    case 'pdoToolsOnFenomInit':
        $fenom->addModifier('clearphone', function ($input) {
            if (!empty($input)) {
				$output = preg_replace("/[^\+0-9]/", '', $input);  
				return $output;
			}else{
				return $input;
			}            
        });
        break;
}
	

Если просто создадим плагин и оставим все как есть, то он у нас не запустится. Бывалые знают, что у плагина дополнительно отмечаются события для его срабатывания. Поэтому я создам плагин baseplugin в панели управления:


<?php
if ($pdoTools = $modx->getService('pdoTools')) {
    $pdoTools->runSnippet('@FILE plugins/fenom_modificators.php', $scriptProperties);
}
	

И отмечу событие pdoToolsOnFenomInit, с помощью которого можно добавлять те или иные модификаторы.

FENOM&#39;енальный курс. Часть 17. Создаем конфигурацию сайта с помощью ClientConfig.

Отлично! Теперь плагин будет работать.

FENOM'енальный курс. Часть 17. Создаем конфигурацию сайта с помощью ClientConfig.

Число голосов: 0
5
1
0
Петропавловский Артем
Автор Петропавловский Артем

Основатель и ведущий разработчик DART Agency. Пишу о разработке, продажах и процессах в IT.

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

  1. Александр 15 июня 2021, 11:59 # ↓ 0
    Доброго дня, а как быть с разными контекстами?Т.е. я в настройках включил мультиконтекст. Задал разные значения для разных контекстов в конфигурации. Но при выводе значений из clientconfig выводятся значения из основного контекста.Пробовал выводить по разному:[[++setting_text1]]{$_modx->getPlaceholder('+setting_text1')}{$_modx->config.setting_text1}

    Заказать звонок

    Оставьте контакты — мы перезвоним в течение 30 минут