Как стать автором
Обновить

CMS-словарик: расширения для CMS

Время на прочтение7 мин
Количество просмотров3.3K
Как показывает независимое исследование, около 67 процентов Web-разработчиков на Хабрахабре пишут свои CMS. За свою жизнь ваш покорный слуга написал около пяти-шести CMS-велосипедов, и в процессе работы была с жадностью перерыта масса информации о структуре и принципах работы других CMS, а также придумано несколько своих. Мир CMS полон разнообразных модулей, расширений, компонентов, компонент, плагинов. О том, как разработчики CMS позволяют расширять функционал, и какие термины для этого используются, я и хочу рассказать. Сразу предупреждаю, что нижеследующая информация может и запутать, поэтому термины, которые в контексте разных CMS имеют разные значения, несут в скобках номер, указывающий на то или иное значение. Некоторые принципы, изложенные здесь, могут заставить сморщиться кого-либо. В списке, в основном, перечислен функционал, расширяющий систему. Синтаксис, используемый в примерах, в большинстве случаев выдуман.
Надеюсь, список поможет с организацией принципов работы собственных CMS, подкинет идею или просто заинтересует. Те, кому скучно, могут попробовать угадать, какая именно CMS имелась в виду в каждом конкретном случае (дабы избежать холивара, названия CMS в самом списке не используются, да и в конкретных случах термины могут содержать несколько иное значение).

Модуль(1) — блок с заголовком — фрагмент, вставляемый в определённое место страницы, в левый блок, правый блок, в центральную часть или на главную страницу. Как правило, все модули имеют схожий внешний вид, определяемый макетом(1). Содержимое определяется администратором (например, кто сейчас на сайте, или последняя фотография в галерее).
Компонент(1) — одна или несколько страниц, например, фотогалерея или интернет-магазин. Модуль(1) при этом может принадлежать компоненту(1). Каждая страница принадлежит только одному компоненту. Компонент забирает себе центральную область размеченного макета(1).
Расширение(1) — функционал, отсутствующий в ядре системы, добавляющий новые низкоуровневые возможности, используемы программистом (новый способ обрезки изображений, функционал для создания бэкапов, новый тип данных и так далее).
Тег(1) — конструкция вида {block}, #BODY#, {TITLE}, которая будет заменена на результат работы кода или содержимое файла. Как правило, определяется список разрешённых тегов, и список данных или скриптов, которые будут вставлены вместо тегов. Также иногда играют роль областей для разметки макетов(1). В некоторых случаях используется для вставки самостоятельных фрагментов кода или данных (например, заголовок страницы или вставки кода для вывода кода биржи обмена ссылками). Часто наличие таких тегов объясняется желанием отделить шаблоны от логики. Также часто для создания нового тега в некоем index.php создаётся новый элемент массива, по которому производится обычный str_replace().
Макет(1) — файл, содержащий разметку HTML-кода часто просто имеет размеченные области, в которые вставляются модули (1) или компоненты(1). В отличие от шаблона(1), содержит только вёрстку всей страницы. Может состоять из двух файлов (header и footer).
Шаблон(1) — фрагмент страницы, содержащий HTML код и спецсимволы для вставки результатов работы кода. Например, шаблон страницы каталога содержит вёрстку каталога без вёрстки внешнего вида всей страницы. В некоторых системах шаблоны могут быть собраны на основе других шаблонов.
Редактируемая область(1), Файл(1) — в некоем файле с вёрсткой указывается место, в это место вставляется содержимое файлов, в том числе php-файлов с кодом. В некоторых случаях такие файлы создаются автоматически при создании страницы. Часто в таких файлах хранится только контент. Иногда до и после этого файла вставляются шапка и подвал сайта.
Редактируемая область(2) как правило, в макете указывается несколько областей, далее система администрирования определяет, что именно вывести в то или иное место.
Сниппет(1), или Модуль(2) — функция, совершающая действие и возвращающая результат. Для быстрого вызова вставляется в шаблон (например, {%print_comments%})
Сниппет(2) — готовый маленький фрагмент вёрстки, администратор на его основе получает HTML код для вставки на страницу (например, кнопки Скачать и Демо в обзорных блогах).
Чанк(1), или Шаблон(2) — именованный фрагмент готового HTML кода (например, {{header}} или {{footer}})
Фильтр(1) — короткая конструкция, например, {ФОТО=Название фотографии}, вставляется в текстовое содержимое страницы администратором, при показе будет заменено на результат работы кода.
Фильтр(2) — правило для замены одного фрагмента на другой, в том числе с использованием регулярного выражения (например, '/(.*)/'=>'Заголовок страницы'), используются для упрощённой вставки данных в шаблон без перевёрстки или правки последнего.
Мамбот(1) — некий код, который меняет HTML — код после его генерации.
Приложение(1) — некий код, который виден в администраторской панели, и который способен влиять на содержимое базы данных или, например, проводить сервисное обслуживание (бекапы),
Плагин(1) — код, расширяющий функционал для того, чтобы система смогла использовать новый тип данных в дополнение к существующим, например, ссылку Youtube или поддержку postgree базы данных вместо Mysql.
Плагин(2) — мини-приложение, выводящееся в какой-либо части сайта, и являющееся независимым (например, голосование, репост твиттера или часы)
Скрипт(1) — файл, расположенный в папке с системой, который могут запускать некие фрагменты сайта. Используется для быстрой вставки новых возможностей низкоуровневыми методами при доработке сайта программистами, обслуживающими сайт. Как правило, представляет из себя независимый php-код. Может быть заменён на Тег(1), или вставлен другим способом.
Шаблон(3) — папка, содержащая размеченный на блоки макет страницы, изображения, css-файлы шаблона, иногда превью. В специализированных CMS позволяет полностью менять внешний вид сайта.
Загрузчик(1) — отдельный независимый скрипт, который выполняет роль посредника либо выполняющий второстепенные функции (например, каптча, Ajax загрузчик либо всплывающий баннер).
Класс(1) — папка с описанием класса, содержащего методы, выводящие данные. Используется в шаблонах — {% search do_search%}
Хук(1) — функция, вызываемая вместо некоей другой функции либо шаблон, вызываемый вместо другого шаблона, переопределяет оригинальный функционал при попытке его использовать.
Хук(2), Триггер(1) — функция, вызываемая сразу после некоей другой определённой функции или после запроса определённого шаблона. Может использоваться для записи логов, или для отправки электронной почты.
Правило(1) — строка в INI-файле или ином месте, задающая маску для URL и ссылку на код, каким-либо образом её обрабатывающий. Например, '/catalog/add' -> addme.php
Функция(1) — тоже самое, что и Класс(1), только является независимой функцией.
Фрагмент(1) — часть шаблона с HTML-вёрсткой (например, форма или рамочка), может использоваться в нескольких местах.
Админка(1) — полноценное расширение для CMS, предоставляющее альтернативный интерфейс для управления данными. В случае CMF — интерфейс для управления данными, который может вообще отсутствовать в оригинальном коде CMF. В случае с CMS — альтернативный backend для управления системой.
Компонент(2), Модуль(3) — код, имеющий шаблон, визуально вставляемый (в виде иконки или изображения) в страницу при редактировании в WYSIWYG редакторе. Может быть списком статей, статьёй, формой для отправки сообщения, галереей и так далее.
База данных(1) — дополнительные данные в виде CSV-файла, либо другом виде, расширяющая используемые данные (списки городов, курсы валют, базы адресов, курьерские службы и так далее)
Загрузчик(1), Расширение(2) — функция либо файл с кодом, выполняемый до обработки страницы, выполняет рутинные действия (запись в лог), переопределяет URL либо объявляет функцию.
Скин(1) — папка с изображениями, меняющая внешний вид системы администрирования.
Скин(2) — шаблон для сайта, меняющий внешний вид только визуально (цвета, фон), но не способный поменять местами некие блоки, либо изменить функционал. В отличие от шаблона не содержит данных от расположении блоков на каждой странице, в отличие от макета, не содержит HTML вёрстку.
Расширение(3) — некие javascript или php файлы, разработанные третьими лицами, которые абсолютно не меняют внешний вид или функционал сайта, но могут быть использованы разработчиками (например, библиотека и плагины jQuery, классы для отправки электронных писем, и так далее). Как правило, лежат в папке, названной external или подобной, в отличие от папки internal, в которой лежат расширения(4) (модули, компоненты), созданные разработчиками CMS и являющиеся частью системы.
Расширение(4) — модуль, компонент, плагин — как собирательный термин.
Фреймворк(1) — некое гибкое решение на базе CMS, имеющее свою систему управления или своё API, позволяющее гибко добавлять функционал. Может иметь свои расширения(4). Например, существует фреймворк для гибкого управления шаблоном, меню сайта, внешним видом и Javascript-красивостями.
Плагин(3) — дополнение к TinyMCE (WYSIWYG — редактор), добавляющее новую кнопочку.
API(1) — дополнительный функционал, позволяющий использовать данные сайта внешними сайтами или приложениями.
API(2) — классы или функции, упрощающие (усложняющие) жизнь разработчику (например, дополнительное, альтернативное API для работы с базой данных).
Модуль(4), Патч(1) — данные для модификации оригинального кода системы. Содержит номера строк, которые должны быть модифицированы, а также файлы, которые надо добавить дополнительно к остальным. Часто существуют Модули(4), которые позволяют подключать остальные Модули(4) в ручном режиме при помощи интерфейса. Теоретически могут преобразить функционал системы до неузнаваемости.
Инструмент(1) — скрипт, используемый администратором (например, для смены прав на запись в папку или выводом данных phpinfo().
Менеджер(1) — независимый блок скриптом для дополнительно управления, например, менеджер файлов, менеджер изображений, менеджер базы данных. Иногда может работать и без основной системы и разрабатывается третьими лицами.
Обёртка(1) — расширение(4), позволяющее встраивать сайт внутрь другой cms, (например, форум внутри wiki или wiki внутри блога).
Модуль(5) — расширение(4) для системы, добавляющее абсолютно новый функционал, не трогая существующий. Например, добавляющее функционал форума в wiki-движок, блогов в форумный, функционал интернет-магазина в сайт-визитку и так далее. Часто продаётся по-отдельности.
Теги:
Хабы:
+1
Комментарии4

Публикации

Изменить настройки темы

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн