Студия разработки сайтов и приложений

Netspark.ru

Плагин Blog Archive

В процессе миграции домовой страницы с Drupal 6 на OctoberCMS, написал несколько плагинов. Первым из них стал плагин BlogArchive и в этой заметке я немного о нем расскажу.

Изначально плагин я написал, чтобы сделать архив постов по месяцам, примерно как было на старом сайте, только лучше. Архив реализован через компонент blogArchive, он работает, можно пользоваться. Компонент даже умеет количество комментариев из Disqus подгружать (если Disqus включен).

Для того чтобы все посты (точнее, ссылки на них) были доступны из карты sitemap.xml плагина Sitemap, добавил интеграцию туда страниц архива. В данный момент это может быть полезно, когда в плагине Blog сделают возможность выгружать в sitemap.xml разом все посты — фича наверное станет не нужна.

Также добавил в плагин компонент randomPosts для вывода нескольких случайных заметок (см. блок «Случайные заметки» внизу). Компонент позволяет задавать количество заметок и кэшировать блок, если не хочется гонять RAND() при загрузке каждой страницы.

Затем нужно было озадачиться основной проблемой миграции: переносом сотен постов на новую систему. В October есть импорт из CSV — нужно было только, чтобы данные, экспортируемые из Друпал 6, были совместимы с форматом импорта. То есть нужно было привести csv, выходящий из Feeds Друпала, к csv, входящему в October Blog. Для этого добавил в плагин команду artisan:

php artisan blogarchive:d6_preprocess_import

Команда вырезает slug-и из полных путей Друпала, правильно упаковывает категории для импорта, убирает тизеры, если они равны контенту, меняет пути к файлам и ещё всякое делает. Тут нужно заметить, что команда в целом сильно заточена под мои нужды и из коробки вряд ли будет работать как надо. Но как опорная точка для своего обработчика данных — может пригодиться. Если, конечно, кому-то еще понадобится мигрировать с шестого Друпала к светлым достижениям Октября.

Наконец, лично для себя добавил в редактор заметок кнопку JavaScript-типографа Typofilter.js. Если кому интеграция не нужна, ее можно выключить в конфигах плагина (config/config.php, можно переопределять в теме).

Все это добро можно найти на гитхабе.

Комментарии