Архив рубрики: CMS

Как я перезжал с Ditto на DocLister

Не секрет, что официальное сообщество MODX практически полностью отказалась от старой ветки MODX Evolution (1.0). Некоторые энтузиасты продолжают развивать и решили взять новое имя: Evolution CMS.

Логично, произошел ребрендинг, сообщество решило отказаться от старого наследия, переработать админку и еще куча всего.

Новая админка evolution cms

Evolution CMS

Под «капотом» движка все та же старый добрый MODX Evolution. Но некоторые расширения были признаны устаревшими. Так списали со счетов модуль EvoGallery как написанную с ошибками и дырами в безопасности, убрали плагины MultiPhotos и другие.

Лично я не очень следил за всеми этими изменениями, поскольку отошел от интернета довольно далеко — в реальной жизни было много работы, которая оплачивалась гораздо лучше онлайновой.

И из всех сайтов, которые у меня есть, остался только один сайт, который работал на MODX Evolution.

Я довольно редко обновлял его, с 2014 года статей почти не публиковал. Сайт сезонный (под летние отпуска), так что внимание в году он требовал не много.

Но этим летом опять взломали и нужно было что-то делать. Про борьбу с вирусами я писал здесь.

Попытка обновиться

В общем, после лечения заразы, я обновился на новую тогда версию 1.3.0. И у меня все отвалилось!

Перестали выводиться новости, а что выводились, то выводились по странным датам. Картинки часть пропали. Но самое страшное — в админке стало очень сложно работать.

Нет, к дизайн новой админки я приноровился быстро, хотя она стала теперь странной — ожидаешь одно, а получаешь другое. Попытки скопировать фишки из MODX Revolution выглядят именно неуклюже. Думаю, что если движок дальше будет развиваться, то эти детские болезни быстро исправят.

Я же говорю о схлопывании и пропаже визуального редактора в первую очередь.

В общем, повозившись пару часов, я плюнул и вернул из бекапа хостера старую добрую версию 1.2.9. И все заработало.

Попытка номер два

Все равно оставалась неудовлетворенность. Выходят новые версии, а проблемы не решаются. Буквально в пятницу неделю назад, под выход новой версии 1.4RC я снова решил обновится.

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

Ditto в топку!

В ходе дискуссии выяснилось, что некоторые разработчики несколько раз релизили код, который не совместим со старыми наработками. И поломали сортировку по датам публикации.

Теперь нужно делать сортировку по датам создания. Поскольку по датам публикации в любой момент может опять сломаться.

Вместо Ditto нужно использовать сниппеты DocLister.

Документация по DocLister

  1. Документация на официальном сайте
  2. Документация на сайте https://modx-gu.ru/

Увы, документация очень фрагментарная, очень многие моменты описаны плохо. Вот для уточнения некоторых тонких моментов я опишу подробнее подводные камни.

Практическая работа

Я строил сайт на примерно таких вызовах

[[Ditto? 
    &tpl=`@FILE:assets/templates/rest/chanks/ditto-card.chank.tpl.html` 
    &summarize=`7` 
    &depth=`3` 
    &hideFolders=`1` 
    &paginate=`1`  
    &dateSource = `pub_date` 
    &sortBy=`pub_date` 
    &sortDir=`ASC`
    &dateFormat=`%d.%m.%y в %H:%M` 
]]
    <div class="pagination">[+previous+] [+pages+] [+next+]</div>

А для вывода использовался чанк что-то наподобие того

<div style="border-bottom: 1px dotted #CCC;">
<p class="title"><a href="[+url+]" title="[+longtitle+]">[+longtitle+]</a></p>
<a href="[+url+]" title="[+longtitle+]">
	<img src="[[phpthumb? &input=`[+image-post+]` &options=`w_120,h=90,zc=1`]]" class="imgl" alt="[[+pagetitle]]" />
	</a>
<div>
<p style="text-indent: 0;">
  <strong>Адрес:</strong> [+tv-adres+]</br>
  <strong>Телефон:</strong> [+tv-tel+]</br>
  <strong>Сайт:</strong> <a href="[+tv-site+]" rel="nonidex,nofollow" title="Сайт [+longtitle+]">[+tv-site+]</a>
</p>
 
<p class="readmore-list">
    <a href="[+url+]" title="[+longtitle+]">Подробнее...</a></p></div>
<br class="clear" />
</div>

То есть я прошу сделать вывод ленты новостей по 7 блоков по шаблону и отсортировать их по убыванию по дате публикации. Заодно дату формирую по заданному шаблону.

Сайт рушился из-за вызовы форматирования даты aDate, который наглухо вешал все.

Как видите, ничего сложного нет.

Однако, переписать просто вызов сниппета на DocLister невозможно. И другие параметры, и другая идеология.

Дополнительные

В вызове сниппета нужно обязательно указывать дополнительные поля, которые используются при выводе. Иначе их сниппет не подтягивает и не выводит.

Чтобы не мучиться с префиксами полей, нужно сделать убрать его. Примерно так



&tvPrefix=``

&tvList=`image-post`


image-post — это имя моего дополнительного поля, правьте под себя и записывайте все через запятую.

Разница между шаблоном в чанке и во встроенном в вызов

Так же есть разница как вызвать шаблон: через чанк или встроить через @CODE:

В первом случае отработают вызовы сниппетов в чанке, а потом его использует DocLister как шаблон. Во втором случае сразу используется как шаблон, а вызов сниппета не происходит.

Так что если вы режете картинки, то используйте только чанк. Если хотите просто задать шаблон пагинации или чего-нибудь такого, то можно и в вызове.

Пагинация в DocLister

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

Мои вызовы DocLister

[[DocLister?
	&id=`list`
	&display=`7`
	&depth=`2` 
	&hideFolders=`1` 
	&tvPrefix=``
	&tvList=`image-post`
	&orderBy=`createdon DESC`
	&dateFormat=`%d.%m.%Y`
	&tpl=`ditto-news.chank.tpl`
	&paginate=`pages`
	&pageAdjacents=`2`
	&TplNextP=`@CODE:<a href="[+link+]">></a>` 
	&TplPrevP=`@CODE:<a href="[+link+]"><</a>` 
	&TplPage=`@CODE: <a href="[+link+]">[+num+]</a>` 
	&TplCurrentPage=`@CODE: <span class="ditto_currentpage" style="background: #FFDF80;">[+num+]</span>` 
	&TplWrapPaginate=`@CODE: <div class="pagination">[+wrap+]</div>`
]]
 
[+list.pages+]

Пример рабочий, так что можно его брать и изучать. Выводится 7 блоков, глубина до 2 уровней от текущей страницы, используется tv-поле image-post, папки скрываются, сортируются по дате создания по уменьшению, используется чанк, пагинация вперед-назад и

цифры.

<div class="articlePost">
    <p class="title"><a href="[+url+]" title="[+pagetitle+]">[+pagetitle+]</a></p>
    <a href="[+url+]" title="[+pagetitle+]">
      <img class="imgl" src="[[phpthumb? &input=`[+image-post+]` &options=`w=100,h=75,zc=1`]]" width="100"  height="75" alt="[+pagetitle+]"  title="[+pagetitle+]"/>
    </a>
    <p style="text-indent:0;">Дата: <strong>[[MyDate? &date=`[+date+]`]]</strong></p>
    <p>[+introtext+]</p>
    <div class="clear"></div>
</div><br />

Тут тоже все похоже. Только теперь пути формируются в плейсхолдере [+url+].

aDate

Камень преткновения был в этом сниппете. Отключал — работало. Включал — ошибка.

В конце концов мне это надоело и я переписал сниппет почти слово-в-слово. Но удалил лишнее и с 10-ой попытки заработало.

Но мне стало интересно и я отрыл сниппет aDate на github у другого человека, который взял идею Дмитрия, доделал её и создал целый комбайн! Вот здесь можно скачать этот полезный сниппет.

Опции:

&date — обязательный параметр, дата — любой плейсхолдер: [+createdon+], [+pub_date+] и так далее

&alterDate — дата как и date, только будет использоваться если &date содержит пустое значение.

&tpl — чанк или @CODE; По умолчанию — '@CODE:[+day+].[+month+].[+year+] [+hour+].[+minute+].[+second+]'

Доступны плейсхолдеры: [+day+] [+month+] [+year+] [+hour+] [+minute+] [+second+]

&lang — язык, для форматирования названий месяцев года. Доступно: ru, en, ua. По умолчанию: ru.

&Uppercase — формат вывода месяцев года:

  1. 0 — по умолчанию, выводит все в нижнем регистре
  2. 1 — выводит с первой буквой в верхнем регистре
  3. 2 — все буквы в верхнем регистре

&monthFormat — формат месяца:

  • 1 — числовое значение месяца (01 — 12)
  • 2 — название месяца (январь)
  • 3 — короткое название месяца (янв)

Заключение

В Evolution CMS произошло очень много изменений. Пляски с бубном над моим сайтом не прошли даром — я обновился, кое-что узнал нового.

С другой стороны, мне грустно видеть, что система ушла в пике и непонятно, сможет ли из него выйти. Точно такие же признаки были у SantaFox CMS, с которой я пришел в мир MODX.

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

  1. доделать его и ждать когда со следующим обновлением опять что-то отвалится
  2. перенести его на MODX Revolution
  3. вообще перенести его на движок WordPress

Каждое решение имеет свои плюсы и минусы. Если у кого есть интересные мысли — милости прошу в комментарии, обязательно обсудим.



2019-03-23T12:28:30
CMS

Gutenberg и WordPress 5.02

В конце года WordPress вышел новый релиз 5.0 с новым редактором Gutenberg. И сообщество во всем мире разделилось на два лагеря: кто принял этот редактор и тех, кому этот редактор не зашел. Я тоже обновился и хочу поделиться своими ощущениями.

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

Gutenberg и WordPress 5.02

Изначально в редакторе не так уж много блоков, но уже появились плагины, цель которых добавить новые блоки. И по идеи этот редактор сможет заменить кучу плагинов, которые помогают оформлению теста поста или страницы. Заодно будет очень хороший штатный  конкурент конструкторам страниц типа Elementor. И станет гораздо легче делать сложное оформление постов со слайдерами или сложными галереями, колонки и так далее. А учитывая, что в WordPress есть произвольные поля, которые все больше используются в темах как больших конструкторах контента в таких СMS как Drupal, Joomla! и MODX, то в скором будущем возможно очень не хилое развитие шаблонов и сайтов.

Но все это в теории. А как все это на практике обстоит здесь и сейчас?

Gutenberg в WordPress 5.02

У меня несколько сайтов на wordpress и я их уже обновил сначала до версии 5.0.

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

На том сайте я просто поставил плагин с классическим редактором и успокоился.

А вот на этом сайте я последовательно обновил сайт сначала на 5.0, потом 5.01 и затем до последней версии 5.02.

Наученный горьким опытом, я решил не править старые, а создать новую статью. Как раз предыдущая статья о итогах 2018 года была именно как проба пера именно редактора Gutenberg в боевых условиях.

По сравнению с первым опытом, редактор стал более адекватным и я сразу накропал статью с оформлением. Вот только мой любимый плагин Art Decoration в нем не завелся и врезки сделать не получалось. Но фотографии вставлялись и их можно было заменить/отредактировать. В общем статья получилась.

Плагин Yoast SEO так же нормально отрабатывал в конце статьи. Его как раз обновили перед концом года, адаптировав под новый редактор.

А вот боковая панель, где я задаю фотографию статьи, метки, категории и так далее существенно изменили свой дизайн. Он стал непривычным, но понятным.

Но! Что-то пошло не так и стала постоянно выскакивать надпись «Не удалось сохранить черновик». Это слегка меня напрягло (и не напрасно, как оказалось!).

Статья вроде сохранялась, но опубликовать её я так и не смог. Походу это вылезла еще одна из ошибок системы. А возможно и простое наложение плагинов оптимизации wordpress, которые вмешались в системные настройки и что-то поломали.

В результате текст статьи я потерял и пришлось скомкано писать её заново в классическом редакторе.

Проблемы с Gutenberg

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

С другой стороны стало понятно и возмущение другой части пользователей этой CMS: под этот редактор за 2 года начали вычищать всю эко-систему из тем и плагинов. И все равно ломается обратная совместимость. Даже популярный плагин YARPPудалили из официального репозитария потому что его не тестировали с новым редактором и автор плагина не ответил на письма разработчиков. Под нож так же попали и другие плагины.

Именно такие действия и вызвали гнев большой части общества.

Сейчас на новом сайте (на самом деле старом — пришлось заново ставить все с нуля из-за вирусов) пришлось использовать аналог Related Posts для замены YARPP. И редактор поставил классический, хорошо хоть разработчики оставили путь отступления для старых сайтов.

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

Как говорится «будем посмотреть» (с) Гоблин — Пучков.



2019-03-23T12:12:36
CMS

Сниппет NGINX для ЧПУ в WordPress

Ниже приведен пример готовой конфигурации NGINX, позволяющей CMS WordPress корректно отображать ЧПУ (человеко-понятные урлы). В раздел location / конфигурационного файла сайта на WP (/etc/nginx/sites-available/sitename.ru) добавьте следующие строки:

Читать