Обновляем MODX Evo 1.0.8 до Evolution CMS 1.4.7


В предверии выхода версии 2.0 решил записать видео где показываю что EVO можно обновлять с любой версии начиная с 0.9.3 до 1.4.7.

Обновление на ветку 2.0 рекомендовано с 1.4.7.

Так же хочу напомнить что eForm, Ditto, Wayfinder, Breadcrumbs, Weblogin и другие старые сниппеты хоть и работают на 2.0 но есть вероятность словить ошибку поэтому настоятельно рекомендую обновлять на акутальные DocLister, FormLister и т д )

47 комментариев

avatar
Спасибо за урок!
avatar
Спасибо!
Как теперь править главную страницу админки для менеджеров? Например, скрывать дерево ресурсов и прятать блоки #welcome, #onlineinfo, #modxrecent_widget, #news, #security?
avatar
Вот тут все описано:
github.com/evolution-cms/evolution/releases/tag/1.3.0
avatar
Спасибо! Блоки скрыл. А вот как скрыть дерево ресурсов там не нашел.
avatar
widget manager
avatar
С виджетами я разобрался. А как сделать дерево ресурсов по умолчанию свернутым?
avatar
avatar
а вот оно где прячется ))) Спасибо! Ну и перевод… «Показывать на главном меню кнопку „На весь экран“ — вот сразу и не допетрил.
avatar
так оно по умолчанию свёрнуто, и запоминает последнее выставленное состояние.
avatar
Смотреть с 2:37 (до этого на видео установка старой версии!)
А я всегда качал архив и заливал на хостинг :)

Ссылка на чудо инсталер с видео: github.com/evolution-cms/installer
P.S. у меня после выбора Evo 1.4.7 — просто белая страница, может нужно дождаться закачки файлов или хостинг не поддерживает. (Сделать бы вывод ошибок и процесс загрузки в EVO Installer бы еще).

И в Package Management все модули которые нуждаться в обновлении было бы круто выводить сверху (экономило бы кучу времени каждый раз когда ищем обновление).
avatar
Обновил с 1.0.15 до 1.4.7. Перестало работать то ли TV-изображение, «прикрепляемое» к странице, то ли phpThumb. По крайней мере, такая конструкция
<img src="[[phpthumb? &input=`[+image+]` &options=`zc=1,q=100,w=500,h=250`]]">
работала до, а теперь, сразу после обновления, перестала работать и показывает только noimage-***.png.

Основные настройки TV:

Тип ввода: Image
Визуальный компонент: [ничего].
Комментарий отредактирован 2018-12-21 21:24:57 пользователем tri-motor
avatar
А где такая конструкция находится, если «и Ditto перестал работать»? :)
avatar
Я заменил «Ditto» в вызове на «Doclister». Вызов срабатывает: выводит что выводил Ditto, в том числе тот tpl, в котором конструкция с phpthumb. Из этого tpl срабатывает [+pub_date:date=`%d.%m.%Y`+] и [+pagetitle+], но не конструкция с phpthumb.
avatar
Кстати, и Ditto перестал работать. Это, так сказать, пришел срок или что-то не так?
avatar
Дитто просто нужно обновить через Экстрас, и он заработает. И eForm нужно обновить, и кое-что еще, об этом на Главной в админке сообщение должно быть.
avatar
Помогло обновить через Экстрас. Ditto заработал.
avatar
Дитто работает как и работал
Но рекомендую на Доклистер переходить

Ибо рано или поздно дито не будет работать ;)
avatar
С Ditto помогло обновить через Экстрас — заработал. Значит надо будет искать почему конструкция с phpthumb не сработала в случае, когда в вызове просто заменил «Ditto» на «Doclister».
avatar
Потому что надо
Не [+image+]
А [+tv.image+]
avatar
Нет, опять показывает только noimage-***.png

Вызов DocLister'а такой:

[!DocLister? &parents=`4` &depth=`0` &display=`8` &orderBy=`pub_date DESC` &tpl=`DocTpl` &noResults=`DocTplNoResults`!]

Содержание DittoTpl:

<li>
	<a href="[~[+id+]~]"><img src="[[phpthumb? &input=`[+tv.image+]` &options=`zc=1,q=100,w=354,h=235`]]" alt="" /></a>
	<a href="[~[+id+]~]">[+pub_date:date=`%d.%m.%Y`+] [+pagetitle+]</a>
</li>

Имя TV: tv.image (и пробовал вариант с просто image).
avatar
Нашел. Надо принудительно указывать TV-шку в вызове: &tvList=`image`. (И «Имя параметра» — просто «image»). Тогда конструкция с phpthumb с DocLister'ом срабатывает.

Но с Ditto + пагинация никак не получается. Пробовал вплоть до вариант сменить версию PHP на новое, 7.1 в данном случае — и это не помогло.
avatar
А может, все-таки перейти на ДокЛистер? Там и пагинация есть.

Вы правильно сделали, в tvList нужно указывать все ТВ-параметры, используемые в выборке, причем указываются просто имена (image).

В шаблонах указывается как [+tv.image+].

Вот эта конструкция [+pub_date:date=`%d.%m.%Y`+] как-то подозрительна, похожа на PHx, черт её знает — всегда будет работать или нет. PHx (если есть) лучше убрать, и попытаться вместо него поставить галочку «Включить фильтры» в админке.

А ещё лучше и PHx убрать, и фильтрами не пользоваться, а просто в ДокЛистере сделать так:

&dateSource=`pub_date`
&dateFormat=`здесь нужный вам формат даты, напр. %d.%b.%y`


А в шаблоне вывода, там где нужно вывести дату, вставляете плейсхолдер

[+date+]


И накаких PHx не надо. Сортировка будет по умолчанию.

Документация по ДокЛистер здесь
avatar
Что-то получается та же проблема, что и с Ditto + пагинация. Использую буквально пример «Сложный пример с пагинацией» c docs.evo.im/04_extras/doclister/examples.html, заменив только значения в &parents и др. Может какая-то проблема в том, что работа идет с обновленной системой и что-то не так именно с ней (или с ним — сайтом). Сейчас попробую просто чистую поставить и на ней пробовать, чтобы понять хотя бы не торможу ли в чем-то я сам.
avatar
С системой и с ДокЛистером проблем нет, вот у меня пагинация на 1.4.7 с ДокЛистером
nmk54.ru/specialnye-stali/krugi/krug-kalibrovannyj

avatar
А в «сложном примере с пагинацией» много параметров, может вы не все убрали? к примеру это
&addWhereList=`c.template IN (6,7)`
avatar
Это и убирал, и ставил соответствующую цифру.
avatar
1) Поставьте в Конфиге вывод ошибок на максимум, может что будет видно.
2) Посмотрите в Админке «Просмотр событий», что там пишут.
avatar
[ Обнаружение уровня ошибки РНР стоит «Обнаружить все» ]

Случай с Ditto + пагинация

1) Когда вызов вставляется в content / Содержимое ресурса страницы ( то есть, в редактор просто вставляется {{CHUNK}} ), то в Протоколе событий:
Snippet - Ditto / PHP Minor Problem

Error : Array to string conversion

Error information

File: assets/snippets/ditto/classes/ditto.class.inc.php
Line: 636
Source: $fields = (array_intersect($this->fields['backend'],$this->fields['display']));
[И так далее]

Ditto + пагинация не работает.

2) Когда вызов не вставляется в редактор, а находится в одном из чанков в шаблоне, то в Протоколе событий ошибка та же самая, но Ditto + пагинация работает.

Случай с DocLister + пагинация

1) Когда вызов вставляется в content / Содержимое ресурса страницы ( то есть, в редактор просто вставляется {{CHUNK}} ), то в Протоколе событий:

Ошибок нет.

Но DocLister + пагинация не работает.

2) Когда вызов не вставляется в редактор, а находится в одном из чанков в шаблоне, то в Протоколе событий ошибок нет и DocLister + пагинация работает.

Проще говоря, по сравнению с EVO 1.0.15, EVO 1.4.7 почему-то не принимает вставку вызова с пагинацией (и Ditto, и DocLister'а) прямо в редактор на странице.

Нет ли какой-то настройки, которая может это разрешить? Или это таки баг?
avatar
Установите демосайт и гляньте там все ж работает :) и пагинация и остальное.
avatar
avatar
Демосайт демосайтом, но у просто сайтов приходится время от времени обновлять CMS. Обновил, то же самое, что работало при 1.0.15, не работает при 1.4.7. Что-то надо делать. Есть масса не-демосайтов.
avatar
Я от 5 до 10 сайтов в месяц обновляю с разных версий на последнюю и нигде нет проблем.

Если вы пишите код согласно правилам EVO то и у вас не должно быть проблем.
avatar
Демосайт я рекомендую в качестве примера глянуть почему и как там работает )
avatar
Кстати, Ditto заработал, но не когда с пагинацией. Пагинация не работает. Такая конструкция:

<ul>
	[!Ditto? &parents=`5` &depth=`0` &display=`16` &paginate=`1` &orderBy=`pub_date DESC` &tpl=`DittoTpl` &noResults=`DittoTplNoResults`!]
</ul>
<div class="pagination">[+previous+][+pages+][+next+]</div>

DittoTpl:

<li>
	<a href="[~[+id+]~]"><img src="[[phpthumb? &input=`[+image+]` &options=`zc=1,q=100,w=354,h=235`]]" alt="" /></a>
	<a href="[~[+id+]~]">[+pub_date:date=`%d.%m.%Y`+] [+pagetitle+]</a>
</li>


— Первые 16 анонсов показывает нормально. Когда кликаешь на цифру 2 в пагинации, в URL добавляется "?start=16", но показываются всё те же 16 анонсов. Когда кликаешь на цифру 3, в URL добавляется "?start=32", но показываются всё те же 16 анонсов. Если начинать пытаться переходить дальше, кликая на «Дальше», то первый раз в URL добавляется "?start=16", но показываются всё те же 16 анонсов, а второй раз ничего не меняется, даже в URL остается "?start=16".

В 1.0.15 тот же самый вызов с тем же DittoTpl работает как всегда.

При обновлении этой 1.0.15 до 1.4.7 я не менял никакие настройки и вообще ничего не делал дополнительно. Оказалось, что надо обновить Ditto через Extras, обновил — и всё. Может надо что-то еще сделать?
avatar
скорее всего на странице несколько вызовов Дитто. Если используете пагинацию, возьмите за правило добавлять параметр &id.
avatar
Вызов один.
avatar
Я так понимаю, что добавить id и проверить — нет ни сил ни возможности.
avatar
Добавил и проверил. Ничего не дает.
avatar
У родительского документа надо снять кеширование, если переход между страниц выводит те же документы
avatar
Лучше поставить кеширование с учетом гет :)
и все будет ок ибо снимать кеширование документов это не логично и увеличивает нагрузку на сервер и замедляет работу сайта
avatar
Ну или да. Но эта настройка уже появилась очень давно, что у меня всегда и включена по умолчанию.

Но не всегда кеш с учетом GET выгоден, например, если сайт крутится в рекламе — генерится куча хвостов. На одном очень простеньком сайте кеш занял около 2 гигов за месяц, при каждом переходе в ссылку подставляются новые utm-метки и создается новый кеш-файл :)

А конкретно про раздел новостей и вовсе люди так редко ходят дальше первой страницы новостей, что вряд ли кто-то кроме хозяев сайта будет там переворачивать страницы, что кешированием пожно пренебречь
avatar
я решаю так:
//OnWebPageComplete
if (count(scandir(MODX_BASE_PATH.'assets/cache/')) > 9999) {
  $modx->clearCache('full');
}
avatar
Спасибо за плагин, полезно. У меня, правда, редко бывает и 199 страниц, не то, что 9999
avatar
А это как раз когда очень много хвостов :) перевалить за 9999 файлов можно и на 1-2 страницах
avatar
Лучше поставить кеширование с учетом гет :)

Помогает. Но вероятно нужно указать этот момент где-то в инструкциях по обновлению. Ибо в 1.0.15 и раньше пагинация работала и при «Способ кеширования страниц: Только с учетом ID (стандартный метод)». Так что обновления происходили без проблем без изменения настроек. А при обновлении с 1.0.15 до 1.4.7, получается, надо настройки немного менять.
Комментарий отредактирован 2018-12-31 18:49:12 пользователем tri-motor
avatar
У родительского документа надо снять кеширование, если переход между страниц выводит те же документы

Помогло. И в случае с пагинацией EvoGallery тоже. Но в итоге сделал «кеширование с учетом гет» ( Системная конфигурация --> Способ кеширования страниц --> C учетом ID и $_GET ) — как советуется: modx.im/blog/docs/5827.html#comment51398.
Комментарий отредактирован 2018-12-31 18:50:34 пользователем tri-motor
avatar
Это потому что при обновлении настройки то старые остаются и нужно проверять
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.