[pdoTools] 2.3.0 - Рефакторинг и стандарты
Привет, друзья! Хочу представить вам новую версию pdoTools с важными изменениями.
Первым делом, весь код теперь соответствует стандарту PSR-2. Как бы я не любил табы, стандарт есть стандарт и пора уже его применять.
Вторым делом, по многочисленным просьбам заграничных товарищей, pdoTools больше не устанавливает дополнительные файлы в директорию core/model/modx/.
Я постарался сделать так, чтобы это ничего не сломало, и вы могли запускать класс как и раньше:
В Fenom добавлена пара модификаторов «по умолчанию». Ничего нового они не привносят, просто сокращают писанину.
Первый — это lexicon, который теперь можно использовать вот так:
Второй модификатор — url:
А раньше было так:
Следующие изменения касаются сниппетов.
В pdoSitemap изменён формат даты, теперь она выводится как ISO 8601.
А в pdoCrumbs, наконец-то, поменяны родные чанки, чтобы генерировать общепринятый список хлебных крошек в виде ul > li.
При установленном Bootstrap крошки теперь работают сразу из коробки.
Как видите, новая версия pdoTools старается лучше соответствовать стандартам и привносит изменения, которые нужно было сделать уже давно.
При обновлении не забудьте проверять работоспособность своих сайтов и если будут проблемы — пишите. Наше сообщество, понятно, уже работает на новой версии без проблем.
Первым делом, весь код теперь соответствует стандарту PSR-2. Как бы я не любил табы, стандарт есть стандарт и пора уже его применять.
Вторым делом, по многочисленным просьбам заграничных товарищей, pdoTools больше не устанавливает дополнительные файлы в директорию core/model/modx/.
Я постарался сделать так, чтобы это ничего не сломало, и вы могли запускать класс как и раньше:
$pdo = $modx-getService('pdoTools');
$pdo->setConfig(array('param' => 'value'));
// или
$pdo = new pdoTools($modx, array('param' => 'value'));
Просьбы обусловлены глюками при разворачивании образов сайтов с pdoTools через Teleport. В том числе, на MODXCloud.В Fenom добавлена пара модификаторов «по умолчанию». Ничего нового они не привносят, просто сокращают писанину.
Первый — это lexicon, который теперь можно использовать вот так:
{'string' | lexicon}
// или
{'string' | lexicon : ['key' => 'value'] : 'ru'}
Модификатор принимает опциональный массив плейсхолдеров для замены и указание языка. Рабочий пример:{$_modx->lexicon->load('en:core:default')}
{'action_err_nfs' | lexicon : ['id' => 25] : 'en'}
Грузим английский словарь (если нужно) и выводим из него запись.Второй модификатор — url:
{10 | url}
// или
{10 | url : ['scheme' => 'full'] : ['param' => 'value']}
Он принимает id ресурса и 2 опциональных массива: настройки и параметры url. Мой пример на тестовом сайте генерирует такой адрес:http://test23.dev/container/document?param=value
А раньше было так:
{$_modx->lexicon('action_err_nfs', ['id' => 25], 'en')}
// и
{$_modx->makeUrl(10, ['scheme' => 'full'], ['param' => 'value'])}
Следующие изменения касаются сниппетов.
В pdoSitemap изменён формат даты, теперь она выводится как ISO 8601.
А в pdoCrumbs, наконец-то, поменяны родные чанки, чтобы генерировать общепринятый список хлебных крошек в виде ul > li.
При установленном Bootstrap крошки теперь работают сразу из коробки.
Заключение
Как видите, новая версия pdoTools старается лучше соответствовать стандартам и привносит изменения, которые нужно было сделать уже давно.
При обновлении не забудьте проверять работоспособность своих сайтов и если будут проблемы — пишите. Наше сообщество, понятно, уже работает на новой версии без проблем.
Комментарии: 31
В Fenom добавлена пара модификаторов «по умолчанию». Ничего нового они не привносят, просто сокращают писанниу.Этого давно не хватало! Я безмерно рад этой, вроде бы, мелочи! Спасибо!
Respect!
За
За
$row['date'] = date('c', $time);
Особенно!
Заметка!
Проверьте пожалуйста дату хостинга или VDS/VPS
Проверьте пожалуйста дату хостинга или VDS/VPS
$row['date'] = date('c', $time);
Выводит дату с timezone <lastmod>2016-01-02T23:36:21+05:00</lastmod>
+05:00 это timezone Asia/Tashkent
А как он должен выводить? Без таймзоны? Тогда это уже будет не ISO 8601… Вроде как…
ru.wikipedia.org/wiki/ISO_8601#.D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D1.80.D1.8B
ru.wikipedia.org/wiki/ISO_8601#.D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D1.80.D1.8B
до 2.2.8 PdoTools Sitemap не выводил таймзон.
Заметка для пользователей а не PdoTools
Заметка для пользователей а не PdoTools
Я бы сказал точнее… До pdoTools 2.3.0, pdoSitemap не выводил правильный формат даты для sitemap.xml.
Не успел исправит уже ответ написали :D
Активно работаю последние 2 дня с modx сайтами, включая fenom (в повседневной жизни пишу на матером PHP немного другие проекты) и вот чего мне не хватает, так это модификаторов в fenom, которые дублируют встроенные MODX фильтры (особенно когда старый код переносишь на fenom). Можно писать сниппеты и тд, конечно, но это накладно и лениво. Если не сильно противорчечит парадигме, плюсую за это улучшение (надеюсь руки дойдут портировать самостоятельно в видео pull request).
В остальном спасибо, работать сильно удобнее.
В остальном спасибо, работать сильно удобнее.
Многое уже и так есть, только называется иначе. Если что, вот все модификаторы MODX, в которых добрая часть это if, else, then и прочее, что в Fenom называется тегами, а не модификаторами.
Единственное, что я вижу действительно нужного, это userinfo. И то, правильнее на мой взгляд, выбирать данные юзера сразу через join таблиц, а не отдельными запросами после.
Смотрите, чего не хватает, и шлите PR. В новой версии загрузка модификаторов не зря вынесена в отдельный метод.
Единственное, что я вижу действительно нужного, это userinfo. И то, правильнее на мой взгляд, выбирать данные юзера сразу через join таблиц, а не отдельными запросами после.
Смотрите, чего не хватает, и шлите PR. В новой версии загрузка модификаторов не зря вынесена в отдельный метод.
Вот бы замену :ellipsis=`` которая киоиллицу понимает добавить…
Truncate не подходит?
Вот теперь сижу и думаю. КАК я мог его не заметить хотя 2 раза смотрел. Спасибо!
Почему-то не работает. Другие, например upper/lower работают, truncate — нет(
{'Привет, как дела?' | truncate : 10}
ВыводитПривет, ка...
Что именно не работает?
Перепроверил — работает, но на других сайтах, на том где больше всего нужно — нет) Буду разбираться, спасибо!
В логах там
Может с этим связано.
В логах там
PHP warning: json_decode() expects parameter 1 to be string, array given
Может с этим связано.
[[!officeAuth? &tplLogout=`@INLINE
{{!ms2form?
&tplCreate=`tpl.ms2form.create.journal`
&tplUpdate=`tpl.ms2form.update.journal`
&tplTagRow=`tpl.ms2form.tag.journal.row`
&allowedFields=`parent,pagetitle,content,published,template,hidemenu,site,email,date_field,textarea0,textarea1,textarea2,textarea3,textfield0,textfield1,made_in`
&requiredFields=`parent,pagetitle,content,published,template,site,email,textarea0,textarea1,textarea2,textarea3,textfield0,textfield1,made_in`
&parent=`419`
&tags=`0`
&newTags=`0`
&template=`20`
&editor=`quill`
&source=`6`
&redirectPublished=`new`
}}
`
...
Василий, привет. После обновления этот вызов перестал работать. Как теперь правильно вызывать подобное?
Попроюуй не в INLINE вызывать снипет. А в отдельном чанке.
Правильно подобное вообще не вызывать. Это какое-то злоупотребление @INLINE чанками.
Ну а так — Office тоже нужно обновить.
Ну а так — Office тоже нужно обновить.
После обновления pdoTools до версии 2.3.0, стали выползать ошибки:
На сайте 2 источника файлов: «MS2Gallery Images» и «MS2 Images», с настройками по умолчанию.
Василий, с чем это может быть связано?
[2016-03-15 10:40:47] (ERROR @ /connectors/index.php) Unexpected token ':' in fcdd770d74671ddd20f42172bb6c1db3 line 1, near '{"w":' <- there
Судя по всему ругается на настройки, источника файлов. Но они не менялись, стоят по умолчанию.На сайте 2 источника файлов: «MS2Gallery Images» и «MS2 Images», с настройками по умолчанию.
Василий, с чем это может быть связано?
Поправил, обновись.
Спасибо, все работает
Вот блин, а я уже час ковыряюсь, думаю и где это я в компоненте косячу своем)))
Спасибо за обновы, вопрос по pdoResources + migx. Вопрос вот какой:
Есть TV типа MigX. В БД modx_site_tmplvar_contentvalues.value данные хранятся в таком формате строки
Т.е. если делать обычную выборку
Есть TV типа MigX. В БД modx_site_tmplvar_contentvalues.value данные хранятся в таком формате строки
[{"MIGX_id":"1","number":"AAA"},{"MIGX_id":"2","number":"BBB"}]
Как их отфильтровать правильно? И можно ли их распарсить и отфильтровать?Т.е. если делать обычную выборку
[[!pdoResources?
&parents=`9`
&showHidden=`1`
&includeTVList=`tvName`
&showUnpublished=`1`
&tpl=`pT`
&processTVs=`1`
&where=`{
"tvName:LIKE":"%\"number\":\"3\"%"
}`
]]
То все работает, но это как-то в лоб получается. Может есть способ какой-то выборки по migx tv?
Лучше для такой выборки по возможности использовать не migx, а listbox-multiple (Список (множественный выбор).
А для фильтрации что то вроде
А для фильтрации что то вроде
&where=`{"tvName:RLIKE":"(\\|?)3(\\|?)"}`
К сожалению, listbox-multiple не может полностью решить мою задачу и migx — вынужденная мера. Да и ваш where ничем не лучше моего. Чуть выше я указал структуру в качестве примера. На самом деле структура гораздо сложнее. Вопрос остается актуальным.
Эм, ну pdoResources как бы не занимается фильтрацией результатов, он только формирует запрос к бд и оборачивает результаты выборки шаблоном. А в БД migx поля хранятся в виде JSON в одном поле, так что кроме LIKE и RLIKE фильтровать тут особо и нечем.
P.S.: Возможно, надо копать в сторону MIGXdb, там данные хранятся в отдельной таблице и вариантов фильтрации уже больше.
P.S.: Возможно, надо копать в сторону MIGXdb, там данные хранятся в отдельной таблице и вариантов фильтрации уже больше.
Отличное обновление для фенома, еще бы можно было бы до $_modx->resource покороче достучаться, было бы просто супер)
Т.е. вместо {$_modx->resource.pagetitle} хочется иметь что-то вроде {$_pagetitle} или {$_res['pagetitle']}
Т.е. вместо {$_modx->resource.pagetitle} хочется иметь что-то вроде {$_pagetitle} или {$_res['pagetitle']}
Стоит отметить, что при обновлении старой версии pdoTools может поломаться верстка хлебных крошек на сайте + документация по чанкам pdoCrumbs устарела.
Стоит прочитать заметку:
Документацию ты можешь обновить самостоятельно — просто пришли исправления через GitHub.
А в pdoCrumbs, наконец-то, поменяны родные чанки, чтобы генерировать общепринятый список хлебных крошек в виде ul > li.
Документацию ты можешь обновить самостоятельно — просто пришли исправления через GitHub.
К сожалению, с гитхабом пока на Вы — все руки не доходят.
Доброго дня! Если я ни чего не путаю, то лексиконы вызываемые феномом отвалились не знаю после какого обновления pdoTools. Вот не пойму, в контексте отличным от web или независимо от этого.
Вдруг у кого то есть такая же проблема?
Вдруг у кого то есть такая же проблема?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.