Scriptify.ru

Pico CMS изначально не предоставляет никаких дополнительных возможностей, даже административной панели. Она предоставляет лишь фундамент для создания своей конфигурации. Полный список рекомендуемых плагинов можно посмотреть здесь. Здесь рассмотрим наиболее полезные из них.

Pico edit - Административная панель для Pico CMS

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

Для установки плагина необходимо сделать следующее:

  1. Скачать репозиторий отсюда и установить папку pico_edit в папку plugins. Папку ни в коем случае не переименовывать
  2. В папке pico_edit находится файл config.php. Туда вставляем свой пароль, зашифрованный в sha1. Зашифровать пароль можно например на sha1-online.com.
  3. Перейти по адресу yoursite.com/pico_edit и ввести пароль (не зашифрованный, а который вы задумали изначально)

Вы попадете в административную панель:

административная панель pico

Административная панель Pico CMS

Список возможностей тут невелик: это создание/редактирование/удаление страниц и переопределение настроек, указанных в файле config.php.

Отдельно поясню, как пользоваться config options. Для того, чтобы изменить настройку, например $config['theme'] = 'default', надо внести запись вида theme = blog (или my_option ! true в случае булева параметра). Если вы случайно ввели неверный параметр и не можете зайти на сайт, нужно зайти в файл config/options.conf и отредактировать настройки.

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

Pico Tags - добавление тегов

Плагин можно скачать здесь. Используя этот плагин, можно использовать заголовки Tags и Filter в мета описании страницы.

Для установки достаточно скопировать файл PicoTags.php в директорию с плагинами.

Для того, чтобы добавить теги на страницу, достаточно добавить в мета-описание страницы заголовок Tags:

--- 
Title: Список плагинов для Pico CMS
Date: 12.07.2016
Description: Наиболее полезные дополнения для системы.
Tags: php, cms
Template: blog-post 
---

Для показа постов необходимо добавить заголовок Filter:

---
Title: Статьи по CMS
Filter: cms
Template: blog-list 
---

Статьи по CMS:

Чтобы показать список отмеченных тегом страниц, необходимо использовать в шаблоне следующий код (для примера):

{{ content }} 
    {% for page in pages if page.title %} 
    <article> 
        <h2><a href="{{ page.url }}">{{ page.title }}</a></h2> 
        <p>{{ page.description }}</p> 
    </article> 
{% endfor %}

Способ реализации этого плагина ограничено лишь вашей фантазией.

Pico Pagination - плагин для пагинации

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

    <div id="posts">
    {% for page in paged_pages %}
        <div class="post">
            <h3><a href="{{ page.url }}">{{ page.title }}</a></h3>
            <p class="meta">{{ page.date_formatted }}</p>
            <p class="excerpt">{{ page.excerpt }}</p>
        </div>
    {% endfor %}
    </div>
    {{ pagination_links }}

Обратите внимание, что нужно обязательно использовать массив paged_pages вместо обычного pages. {{ pagination_links }} выведет ссылки на следующую и предыдущую страницы.

Pico Debug - инструмент для отладки тем и плагинов.

Этот инструмент помогает разработчикам тем и плагинов увидеть все переменные Pico.

Скачать репозиторий можно отсюда. Для подключения плагина копируем файл zz_pico_debug.php в папку с плагинами, в config.php указываем $config['zz_pico_debug.enabled'] = TRUE;. Опционально можно включить отображение php ошибок, добавив строку $config['zz_pico_debug']['php_errors'] = TRUE;. После подключения вы увидите окно со всеми переменными, которые использует Pico:

окно отладки pico

Окно отладки Pico Debug

PicoMenuHiding - скрытие страницы из навигационного меню

Если у вас на сайте есть навигационное меню, которое состоит из шаблона по умолчанию:

<ul> 
    {% for page in pages if page.title %} 
    <li{% if page.id == current_page.id %} class="active"{% endif %}> 
       <a href="{{ page.url }}">{{ page.title }}</a> 
    </li> 
    {% endfor %} 
</ul>

То он будет выводить все страницы, которые есть в папке и подпапках content. Но не всегда есть необходимость выводить все страницы, например если у вас есть блог. Для этого нужно установить плагин PicoMenuHiding и в config.php указать $config[ 'PicoMenuHiding.enabled' ] = TRUE;. Теперь, чтобы скрыть страницы из меню, указываем в их мета-данных Hiding: 1:

---
Title: Статья по CMS
Author: John Doe 
Date: 12.07.2016
Hiding: 1 
---

Pico Sitemap - генератор карты сайта

Просто скачиваем плагин и устанавливаем. Теперь sitemap доступен по адресу yoursite.com/sitemap.xml. Примечание: мета-тег Date в заголовке страницы, и настройка $config['date_format'] должны совпадать по формату.

Pico Minify - сжатие HTML кода

Плагин позволяет сжимать html, css, javascript код и удалять комментарии, немного ускоряя загрузку страницы. В конфигурации можно указать следующие настройки:

$config['pico_minify'] = array( 
    'minify' => true, 
    'compress_css' => true, 
    'compress_js' => true, 
    'remove_comments' => true 
);

Pico Placing - сортировка страниц в любом порядке

Плагин позволяет сортировать страницы в любом порядке, в зависимости от значения мета-тега Placing. Он может быть полезным в меню навигации. В случае одинаковых значений Placing страницы будут сортироваться в алфавитном порядке.

Для работы устанавливаем плагин, затем указываем следующие настройки:

$config[ 'PicoPlacing.enabled' ] = TRUE; 
$config[ 'pages_order_by' ] = 'placing';

Теперь в мета-данных можно указывать атрибут Placing:

---  
Title: О компании
Placing: 1  
---

Pico Categorized Pages - улучшенное навигационное меню

Плагин позволяет создать навигационное меню, исходя из файловой структуры папки content. Для этого в шаблоне указываем следующий код:

    <nav> 
      <ul> 
      {% for category in categories %} 
        <li> 
          <a href="{{ category.pages[1].url }}">{{ category.title }}</a> 
          {% if category.pages|length > 1 %} 
          <ul> 
          {% for page in category.pages %} 
            <li class="sub"><a href="{{ page.url }}">{{ page.title }}</a></li> 
          {% endfor %} 
          </ul> 
          {% endif %} 
        </li> 
      {% endfor %} 
      </ul> 
    </nav>

В конфигурации указываем:

$config['pages_order_by'] = 'position'; // необходима для включения сортировки
$config['pages_order'] = 'asc'; // Сортировка страниц по возрастанию или убыванию
$config['categories_order'] = 'asc'; // Сортировка страниц по возрастанию или убыванию
$config['PicoCategorizedPages.enabled'] = true; // Включение плагина

Теперь для примера рассмотрим следующую файловую структуру:

./content 
  ./menu-1
    ./index.md 
    ./page-1.md 
    ./page-2.md 
  ./menu-2
    ./index.md 
    ./page-1.md 
    ./page-2.md

В папке menu-1 и menu-2 файлы index.md будут служить категориями в меню, а page-1.md и page-2.md - страницами.

Рассмотрим теги, которые надо применять к index.md (категориям):

--- 
Category_Title: имя категории
Category_Position: позиция категории
Category_Ignore: если установлено true, то категория не будет показываться
---

и теги для остальных страниц:

--- 
Title: имя страницы
Position: позиция страницы (относительно категории)
Page_Ignore: если установлено true, то страница не будет показываться
---

Рассмотрим простой пример. Для index.md в папке menu-1 указываем следующие теги:

--- 
Category_Title: категория 1
Category_Position: 1
--- 

и для index.md в папке menu-2:

---  
Category_Title: категория 2 
Category_Position: 2 
---  

Для page-1.md указываем следующие теги:

--- 
Title: Страница 1
Position: 1 
---

Для page-2.md:

--- 
Title: Страница 2
Position: 2
--- 

Если вы все сделали верно, то должна получится такая структура:

улучшенное навигационное меню pico

улучшенное навигационное меню

Итоги

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

Содержание статьи