Кратко об архитектуре разработчикам: чтобы быстро понять, подходит ли она под ваш проект

В чем особенности с точки зрения программиста-разработчика

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

Одна сущность
В системе есть только одна основная "сущность" - это Страница, обладающая собственным уникальным URL. Никаких "списков, компонентов, разделов" и прочего нагромождения терминов.

Самопрограммирование
В отличии о классических CMS, PmWiki программирует сама себя. Здесь нет строгого разделения программного кода системы и контента: большая часть функционала сайта будет запрограммирована на обычных его страницах. Работа на уровне PHP производится очень редко в относительно крошечных объемах.

Система спроектирована таким образом, что основные элементы сайта (меню, хлебные крошки, дополнительная навигация, вызов связанных страниц, настройки макета дизайна, функциональные кнопки и т.д.) программируются через специальные команды прямо в режиме редактирования страницы, и код этих элементов будет расположен там же. WYSIWYG-концепция, расширенная до уровня программирования сайта.

"Легкая программируемость" дает возможность легко внедрять автоматизированные элементы прямо в тело страницы, к примеру автоматически выводить список всех страниц сайта, содержащих термин Самопрограммирование в текущем разделе сайта.

URL-структура
Как же достигается подобная гибкость? Через одно принципиальное ограничение: в основе всей архитектуры системы лежит строгая двухуровневая URL-структура. Это может поставить в тупик, но в PmWiki абсолютно все страницы имеют адреса вида "Group/Page". Казалось бы страшный сон SEO-шника, ужасное ограничение, ставящее палки в колеса гениальным замыслам сайтостроителей… Но, как показывает практика, ничто так не способствует прогрессу, как ограничения. На самом деле двухуровневая организация более чем достаточна для подавляющего большинства случаев организации контента, а если вам кажется, что ее недостаточно - скорее всего надо просто еще подумать.

Избрав этот постулат - страницы вида "Group/Page" - PmWiki использует имена-URL'и страниц для реализации заметной части своих функциональных возможностей.

Приведем абстрактный пример организации логики для страницы "Group/Page":

Страница Group/Page имеет имя "Page". Это означает, что она может быть оказаться в pagelist-списке всех страниц с именем, начинающимся на "Page". Это также означает, что у нее может быть "дочерняя" страница "Page-Details", содержащая дополнительную информацию о родительской странице, и включенная в нее командой Include. Поскольку страница Page находится в группе Group, то в нее также будет автоматически включен общегруповой заголовок, а при создании страницы будет предложен типовой для данной группы шаблон оформления. Также в навигационном меню сайта будет раскрыта навигация по данной группе Group, соответственно в ней мы увидим соседние с данной страницы.

Вики-фермы
Вики-фермы позволяют создавать несколько параллельных экземпляров PmWiki сайтов, использующих единый исходный код ядра системы. Это довольно необычный подход, который, кстати, позволяет-таки создавать проекты с трехуровневой системой навигации (см. www.memofilm.ru).

Работа без Базы Данных
PmWiki по-умолчанию не использует Базу Данных (хотя и может), и работает на плоских файлах. По мнению создателя - это достоинство системы, и оно выглядит убедительным: мощный Pagelist представляет собой фактически команду для осуществления аналогов SQL-запросов, только простую в использовании настолько, что продвинутые пользователи системы смогут применять ее прямо внутри страницы по мере написания контента.

Безопасность
Она хороша. Не только из-за грамотных писателей исходного кода, но еще и потому, что система больше подходит для гуманитарных, а не коммерческих проектов, поэтому у злоумышленников мало мотивации к ее взлому.