Разработчики часто используют класс COption для хранения и вывода значений каких-либо переменных. И по сути ничего не мешает в этом классе хранить и какие-то переменные сайта/шаблона. Как то: телефон, e-mail и прочие мелкие значения в шаблоне сайта. Часто проблема решается вставкой включаемой области, которую могут править потом редакторы. Но не всегда... [spoiler] Например, в такой ситуации включаемая область мало поможет:
Помещать весь блок кода в одну включаемую область? Не очень красиво. Создавать 3-4 включаемых области? Зачем нам +3-4 доп.файла цеплять? Выход? Хранить все это в вышеозвученном классе. Но как туда записать, и как легко потом менять сие редактору?
Решение и практика
Так родилась идея простого модуля, который бы позволял легко сохранять и выводить такие переменные.
Далее выводим все простой функцией API (о ней ниже):
<?= tplvar('skype');?>
Но это еще не все если у вас есть права на редактирование шаблона и включен режим правки, рядом с каждым значение появится иконка редактирования:
При клике на которую вы переходите к редактированию данной переменной:
Теперь пару слов о функции. Доступна она всегда (после установки модуля) без подключения самого модуля. У нее есть два режима:
1. Для использования голого значения переменной:
<?= tplvar('skype');?>
Например, в коде, или где не требуется вывод иконки даже в режиме редактирования (например, mailto: $var).
Показывает иконку редактирования только в режиме включаемых областей. Хороший пример применения - ссылка на какой-то файл в шапке сайта:
<a href="<?= tplvar('wholesale_pdf');?>">Скачать каталог в PDF</a>
Даже в режиме включаемых областей, нет возможности посмотреть иконку, так как она спрятана в href будет (если быть точным, в данном случае она не выведется вовсе). Поэтому делаем так:
<a href="<?= tplvar('wholesale_pdf');?>">Скачать каталог в PDF</a><?= tplinvis('wholesale_pdf');?>
Имеем иконку, которая появится только в режиме редактирования:
Функция tplvar_set
Применяется для установки значения для определенного кода (например, из API). Использование:
tplvar_set($code, $value, $site);
Все три переменные обязательны: код свойства, значение, ID сайта.
Общие замечания
Модуль работает в рамках текущего сайта (SITE_ID). Вам не надо заботиться о проверке сайта, и одна и та же переменная на разных сайтах может иметь разное значение (например, skype на разных сайтах разный).
Я намеренно сделал вызовы API обезличенными, чтобы партнеры могли применять этот модуль в своей работе не переживая за префиксы чужого партнера.
Антон, очень граммотный модуль, но согласен с megamosk - по возможности исправьте, пожалуйста, проблему с названиями переменных. Спасибо, в любом случае! P.S. Как можно иметь в Битрикс пользовательские поля и не мочь ими нормально пользоваться - они привязываются к каким-то непонятным "объектам", инфоблокам и т.д. и для их вывода надо использовать кучу кода?!! Ваш модуль - это совершенно логичное дополнение, которое не должно было существовать, ибо разработчики Битрикс игнорят очевидный функционал...
Отличнейшая идея, простое использование (не хватает разве что группирования, да). Но без названий переменнных (а их все нету) смысла в модуле попросту нет...
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».