Выбор правильного CMS для блога или веб-сайта может быть затруднен. Каждый веб-проект имеет свои собственные потребности и требования, то есть одна CMS может быть лучше подходит для одного сайта, но не для другого сайта. В простых решениях могут отсутствовать некоторые важные функции, в то время как более сложные системы могут легко создавать накладные расходы для данной задачи.
Я хочу осветить Automad, CMS, который менее известен, чем, скажем, бегемот, такой как WordPress, но по-прежнему предлагает некоторые мощные функции, такие как он, сохраняя проворство более простых и простых решений, таких как статические генераторы сайтов.
]
В частности, Automad заполняет пробел между более крупными и меньшими предложениями несколькими ключевыми способами:
- Он основан на файлах, но не требует базы данных. Это обеспечивает быструю настройку, переносимость, безопасность, скорость и простоту развертывания.
- Даже без базы данных он предлагает функции базы данных, такие как поиск, тегирование, фильтрация и сортировка.
- Многоуровневый механизм кэширования эффективно кэширует содержимое, хранящееся в файловой системе.
- Панель управления на основе браузера и режим редактирования в режиме «вживую» позволяют осуществлять интуитивное управление контентом.
Но то, что делает Automad действительно другим, является его интегрированным механизмом шаблонов. Templating является основным требованием для возможных CMS, потому что он создает и устанавливает базу для визуального отображения сайта. Поскольку механизм шаблонов Automad настолько близок к ядру, он позволяет создавать шаблоны со сложными навигациями и пакетно обрабатывать изображения с использованием чистого и короткого синтаксиса. Вы почувствуете разницу, как только получите ее, и мы немного рассмотрим пример.
Содержание статьи
Но сначала, краткий обзор шаблонов
Как разработчик или разработчик, вам, вероятно, интересно узнать, как разрабатывать темы и шаблоны для Automad. Я имею в виду, что суть в том, почему кто-то из нас действительно использует CMS. Если вы сделали какой-либо уровень тематики с помощью WordPress, то работа с Automad будет казаться смутно знакомой и, возможно, еще проще.
Минимальное требование для создания темы Automad — это один файл .php
и файл theme.json, объединенный в подкаталог, созданный внутри верхнего уровня / packages
в установочной установке Automad по умолчанию:
пакеты /
yourTheme /
yourTemplate.php
theme.json
Учебный пакет, поставляемый с Automad, является хорошей отправной точкой для понимания основных концепций тем.
Взгляните на синтаксис, используемый в шаблонах Automad
Хотя можно писать шаблоны в простом PHP, это не требуется, и на самом деле не рекомендуется. Причина в том, что собственный синтаксис шаблона Automad короче, читабельнее и хорошо интегрируется с пользовательским интерфейсом, автоматически перечисляя все используемые переменные в панели управления. Это может быть легко смешивается с разметкой HTML.
В принципе, синтаксис можно разделить на две группы:
- Эхо-содержание:
@ {variable}
- Заявления, такие как функции, петли и условные обозначения:
<@ function @>
или<@ statement @> ... <@ end @>
Содержание эха
Предположим, мы хотим вытащить содержимое тела для сообщения в шаблон, и у нас есть переменная, настроенная для текста под названием
. В WordPress это будет глобальная переменная ( the_content
), которая вызывается в PHP:
В Automad мы можем сделать то же самое без PHP:
@ {текст}
Можно управлять выходом переменных, передавая значение функции, используя оператор pipe ( |
). В следующем примере показано, как сократить данный текст до 100 символов без сокращения слов:
@ {text | укоротить (100)}
Это будет то же самое, что вы можете сделать, чтобы определить отрывок из сообщения в WordPress с помощью функции:
/ * Предельная выдержка до 20 слов * /
function my_custom_excerpt_length ($ length) {
return 20;
}
add_filter ('excerpt_length', 'wpdocs_custom_excerpt_length', 999)
}
Одним из ключевых преимуществ некоторых решений CMS, таких как Jeykll, является то, что использование Markdown для создания контента сайта является родной функцией. Automad может сделать то же самое. Предположим, мы хотим преобразовать текст Markdown в HTML. Это довольно прост (и эффективен) с использованием оператора трубы:
@ {text | уценка}
Использование заявлений
Заявления — удобный способ определить контент и отобразить его условно. В отличие от переменных, утверждения завернуты в <@ … @>
разделители. Следующий пример можно использовать для создания простого меню верхнего уровня с помощью функции nav
:
<@ nav { context: "/", class: "nav" } @>
Предположим, вы хотите показывать свой контент по умолчанию, но отображать резервную копию, если по какой-то причине этого контента не существует. Здесь мы можем использовать условные утверждения и структуры управления:
<# If the post content exists then display... #>
<@ if @{ text } @>
...
<# Otherwise, display this... #>
<@ else @>
Извините, здесь нет содержания
<# OK, no more conditions. #>
<@ end @>
Хотите создать петлю? Здесь отображается список сообщений или любой повторяемый контент, который соответствует условию, очень полезен. Мы можем сделать это в Automad, предоставив один или несколько шаблонов шаров в цикле foreach
.
Например, давайте отобразить все изображения в формате JPG и PNG для сообщения, снятого в 400x300
с их заголовками:
<@ foreach in "*.jpg, *.png" { width: 400, height: 300, crop: true } @>
@ {: заголовок}
<@ end @>
Вы поймали это ?! Как показано в этом примере, замечательная функция Automad — это возможность встроить параметры изменения размера для каждого соответствующего файла внутри оператора цикла. Нет более сложных функций для регистрации размеров, которые а затем должны быть вызваны в шаблоне!
Стоит отметить, что петли foreach
также могут использоваться для перебора объектов. Automad знает несколько типов объектов. Один из самых важных объектов — pagelist
из-за его способности выводить все страницы на сайте, как вы могли бы захотеть сделать при построении навигации. При повторении пагулиста
контекст изменяется с каждой итерацией на текущую страницу в цикле. Таким образом, возможно использование переменных страницы в кодовом блоке цикла.
Чтобы настроить pagelist
мы можем использовать функцию newPagelist следующим образом:
<@ newPagelist { context: "/", type: "children" } @>
<@ foreach in pagelist @>
- @ {title}
<@ end @>
Взгляд подхалима за кулисами для вас супер вундеркиндов
Преобразователь шаблонов Automad написан в чистом PHP и обрабатывает шаблоны «на лету». Поэтому никакого дополнительного процесса сборки вообще не требуется. Список системных требований также довольно короткий. Веб-сервера (Apache или Nginx) и PHP 5.4+ уже достаточно для запуска сайта. Страницы отображаются только при изменении содержимого или после обновления системы.
Многоуровневый механизм кэширования Automad хранит отображаемые страницы в отдельных файлах .html
а также все обходные данные в файловой системе как своего рода объект содержимого . Этот объект также используется для ускорения поиска и фильтрации страниц.
Благодаря этому механизму можно либо отредактировать содержимое сайта непосредственно в Интернете, используя панель управления на основе браузера, либо отредактировать сайт локально, и развернуть его через Git или обычный rsync.
Давайте напишем код!
Лучший способ познакомиться с чем-либо в Интернете — это просто создавать веб-сайты. Вот несколько примеров того, как мы начнем с использования Automad.
Создание навигации по сайту -это хороший пример использования рекурсии в шаблонах. Концептуально создание такой рекурсивной навигации можно разделить на три этапа:
- Определение многоразового фрагмента кода для создания единственной ветви дерева сайта, которая называет себя условно
- Настройка динамического pagelist, который автоматически содержит только данные из его текущего контекста
- Определение корневой страницы дерева сайта (например, домашней страницы) и вызов рекурсивного фрагмента изначально
Давайте разберем эти шаги более подробно …
Определение многоразового фрагмента кода
В Automad, блоки кода могут быть определены для повторного использования в более поздней точке с помощью ключевого слова фрагмент
. Что касается этого примера, следующий фрагмент будет называть себя условно при прохождении через pagelist
а на активной странице текущей итерации есть детские страницы:
<@ snippet navigation @>
<@ end @>
Настройка динамического pagelist
Пагулист
должен быть настроен для типа детей
. Контекст (или родительская страница) всегда будет рекурсивно изменяться внутри фрагмента, определенного выше таким образом. pagelist
автоматически будет содержать только страницы с детьми на текущей обрабатываемой странице.
<@ newPagelist {
type: 'children'
} @>
Определение корневой страницы
На последнем шаге должен быть определен корневой контекст дерева навигации, и фрагмент должен быть вызван один раз, чтобы инициировать рекурсию. с
используется здесь для изменения контекста на главной странице.
Полный рабочий учебный шаблон уже включен в Automad.
Пример 2: Работа с файлами
Поскольку изображения очень важны для управления контентом, работа с ними должна быть максимально простой и интуитивно понятной. Язык шаблонов Automad предоставляет удобные методы базовой обработки изображений, такие как изменение размера и обрезка. При использовании одного изображения или итерации набора изображений параметры изменения размера могут быть переданы в с помощью оператора
или foreach
. Ознакомьтесь с учебным пособием, который поставляется с Automad для быстрого запуска.
<@ foreach in '*.jpg, *.png' { width: 400, height: 300, crop: true } @>
<# Code to be used for each image in the filelist. #>
Вместо использования шаблона glob в цикле foreach
также можно использовать объект filelist
.
Если вы посмотрите на приведенный выше пример кода, вы заметите использование определенных переменных времени выполнения для доступа к свойствам изображения в кодовом блоке. Хотя переменная : file
представляет исходный файл, : fileResized
ссылается на путь измененной и кешированной версии. Переменная : caption
позволяет вам получить текст субтитров, сохраненный вместе с файлом.
Что вы будете строить?
Мы просто поцарапали поверхность Automad здесь, но, надеюсь, все, что мы рассмотрели, дает вам хорошее представление о возможностях, которые он предоставляет для управления контентом. Несмотря на то, что в мире CMS нет единой формы для всех типов, скорее всего, будут сценарии, в которых CMS, которая сидит где-то между надежными и сглаженными вариантами, будет полезна.
Дополнительные ресурсы
Связанные