[pdoTools] 2.2.5 - ускорение обработки url
Привет, друзья!
Представляю вам новую версию pdoTools, в которой вы можете отключить использование функции modX::makeUrl() во всех сниппетах.
Если на вашем сайте включены friendly_urls и вы генерируете большие массивы страниц, то можно указывать новый тип &scheme — uri.
По умолчанию modx::makeUrl() используется всегда, что может приводить к тормозам. Теперь вы можете его отключить.
Для проверки скорости я сгенерировал меню modx.pro и получил вот такой лог:
И это с родными чанками, а если указать чанк Fenom:
Вполне возможно, что в каких-то ситуациях url получатся неправильными, поэтому перед влючением советую проверить всё как следует.
В pdoResources параметр &scheme работает только при включении &useWeblinkUrl, а так как по умолчанию он отключен, проще сразу указывать плейсхолдер [[+uri]] в чанках.
— Сниппет pdoSitemap научился обрабатывать теги MODX, если они вдруг встречаются в ссылках. Например, из-за мультиязычности этого сайта ссылка на файлохранилище унас выглядит так:
Новая версия уже в репозиториях, можно обновляться.
Представляю вам новую версию pdoTools, в которой вы можете отключить использование функции modX::makeUrl() во всех сниппетах.
Если на вашем сайте включены friendly_urls и вы генерируете большие массивы страниц, то можно указывать новый тип &scheme — uri.
[[!pdoMenu?
&parents=`0`
&level=`3`
&scheme=`uri`
&showLog=`1`
]]
Тогда вместо запуска modx::makeUrl() в плейсхолдер [[+link]] будет подставлено содержимое поля uri ресурса. Если же это сделать не получается, то будет запущен оригинальный метод.По умолчанию modx::makeUrl() используется всегда, что может приводить к тормозам. Теперь вы можете его отключить.
Для проверки скорости я сгенерировал меню modx.pro и получил вот такой лог:
0.0082948: pdoTools loaded 0.0000319: xPDO query object created 0.0005062: Added selection of modResource: SQL_CALC_FOUND_ROWS `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `content`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties`, `hide_on_start`, `show_on_start`, `ticket_rating` 0.0000708: Processed additional conditions 0.0005760: Added where condition: modResource.parent:IN(1,15,5162,30,7595,47,40,3327,3439,4423,4724,12,17,13,21,16,14,18,19,20,22,23,24,4441,31,32,33,34,3,41,42,43,46,44,45,50), OR:modResource.id:IN(1,15,5162,30,7595,47,40,3327,3439,4423,4724,12,17,13,21,16,14,18,19,20,22,23,24,4441,31,32,33,34,3,41,42,43,46,44,45,50), modResource.published=1, modResource.hidemenu=0, modResource.deleted=0, modResource.context_key=web 0.0000770: Sorted by modResource.menuindex, ASC 0.0003381: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `modResource`.`id`, `modResource`.`type`, `modResource`.`contentType`, `modResource`.`pagetitle`, `modResource`.`longtitle`, `modResource`.`description`, `modResource`.`alias`, `modResource`.`link_attributes`, `modResource`.`published`, `modResource`.`pub_date`, `modResource`.`unpub_date`, `modResource`.`parent`, `modResource`.`isfolder`, `modResource`.`introtext`, `modResource`.`content`, `modResource`.`richtext`, `modResource`.`template`, `modResource`.`menuindex`, `modResource`.`searchable`, `modResource`.`cacheable`, `modResource`.`createdby`, `modResource`.`createdon`, `modResource`.`editedby`, `modResource`.`editedon`, `modResource`.`deleted`, `modResource`.`deletedon`, `modResource`.`deletedby`, `modResource`.`publishedon`, `modResource`.`publishedby`, `modResource`.`menutitle`, `modResource`.`donthit`, `modResource`.`privateweb`, `modResource`.`privatemgr`, `modResource`.`content_dispo`, `modResource`.`hidemenu`, `modResource`.`class_key`, `modResource`.`context_key`, `modResource`.`content_type`, `modResource`.`uri`, `modResource`.`uri_override`, `modResource`.`hide_children_in_tree`, `modResource`.`show_in_tree`, `modResource`.`properties`, `modResource`.`hide_on_start`, `modResource`.`show_on_start`, `modResource`.`ticket_rating` FROM `modx_site_content` AS `modResource` WHERE ( ( `modResource`.`parent` IN (1,15,5162,30,7595,47,40,3327,3439,4423,4724,12,17,13,21,16,14,18,19,20,22,23,24,4441,31,32,33,34,3,41,42,43,46,44,45,50) OR `modResource`.`id` IN (1,15,5162,30,7595,47,40,3327,3439,4423,4724,12,17,13,21,16,14,18,19,20,22,23,24,4441,31,32,33,34,3,41,42,43,46,44,45,50) ) AND `modResource`.`published` = 1 AND `modResource`.`hidemenu` = 0 AND `modResource`.`deleted` = 0 AND `modResource`.`context_key` = 'web' ) ORDER BY modResource.menuindex ASC " 0.0680649: SQL executed 0.0002029: Total rows: 4392 0.0556550: Rows fetched 0.1302130: Returning raw data 0.0671182: Tree was built 0.0181720: Start template tree 0.0054049: Created inline chunk with name "ad22a6773e8643db35baf6e56fa79c5d" 1.8507850: Created inline chunk with name "dc6d3757597108f87f958f868cf1591a" 0.5560040: End template tree 2.7648549: Total time 90 439 680: Memory usage2.8 сек. для генерации меню из 4 392 ресурсов.
И это с родными чанками, а если указать чанк Fenom:
[[!pdoMenu?
&parents=`0`
&level=`3`
&showLog=`1`
&scheme=`uri`
&tpl=`@INLINE <li{$classes}><a href="{$link}" {$attributes}>{$menutitle}</a>{$wrapper}</li>`
]]
то0.0084081: pdoTools loaded 0.0000329: xPDO query object created 0.0004718: Added selection of modResource: SQL_CALC_FOUND_ROWS `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `content`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties`, `hide_on_start`, `show_on_start`, `ticket_rating` 0.0000770: Processed additional conditions 0.0005898: Added where condition: modResource.parent:IN(1,15,5162,30,7595,47,40,3327,3439,4423,4724,12,17,13,21,16,14,18,19,20,22,23,24,4441,31,32,33,34,3,41,42,43,46,44,45,50), OR:modResource.id:IN(1,15,5162,30,7595,47,40,3327,3439,4423,4724,12,17,13,21,16,14,18,19,20,22,23,24,4441,31,32,33,34,3,41,42,43,46,44,45,50), modResource.published=1, modResource.hidemenu=0, modResource.deleted=0, modResource.context_key=web 0.0001080: Sorted by modResource.menuindex, ASC 0.0003691: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `modResource`.`id`, `modResource`.`type`, `modResource`.`contentType`, `modResource`.`pagetitle`, `modResource`.`longtitle`, `modResource`.`description`, `modResource`.`alias`, `modResource`.`link_attributes`, `modResource`.`published`, `modResource`.`pub_date`, `modResource`.`unpub_date`, `modResource`.`parent`, `modResource`.`isfolder`, `modResource`.`introtext`, `modResource`.`content`, `modResource`.`richtext`, `modResource`.`template`, `modResource`.`menuindex`, `modResource`.`searchable`, `modResource`.`cacheable`, `modResource`.`createdby`, `modResource`.`createdon`, `modResource`.`editedby`, `modResource`.`editedon`, `modResource`.`deleted`, `modResource`.`deletedon`, `modResource`.`deletedby`, `modResource`.`publishedon`, `modResource`.`publishedby`, `modResource`.`menutitle`, `modResource`.`donthit`, `modResource`.`privateweb`, `modResource`.`privatemgr`, `modResource`.`content_dispo`, `modResource`.`hidemenu`, `modResource`.`class_key`, `modResource`.`context_key`, `modResource`.`content_type`, `modResource`.`uri`, `modResource`.`uri_override`, `modResource`.`hide_children_in_tree`, `modResource`.`show_in_tree`, `modResource`.`properties`, `modResource`.`hide_on_start`, `modResource`.`show_on_start`, `modResource`.`ticket_rating` FROM `modx_site_content` AS `modResource` WHERE ( ( `modResource`.`parent` IN (1,15,5162,30,7595,47,40,3327,3439,4423,4724,12,17,13,21,16,14,18,19,20,22,23,24,4441,31,32,33,34,3,41,42,43,46,44,45,50) OR `modResource`.`id` IN (1,15,5162,30,7595,47,40,3327,3439,4423,4724,12,17,13,21,16,14,18,19,20,22,23,24,4441,31,32,33,34,3,41,42,43,46,44,45,50) ) AND `modResource`.`published` = 1 AND `modResource`.`hidemenu` = 0 AND `modResource`.`deleted` = 0 AND `modResource`.`context_key` = 'web' ) ORDER BY modResource.menuindex ASC " 0.0749900: SQL executed 0.0002191: Total rows: 4392 0.0871830: Rows fetched 0.1325550: Returning raw data 0.0684011: Tree was built 0.0181000: Start template tree 0.0049889: Created inline chunk with name "48e54d681cadea8b959ffb02a7661e02" 0.0610340: Compiled Fenom chunk with name "inline/48e54d681cadea8b959ffb02a7661e02" 0.3693681: Created inline chunk with name "dc6d3757597108f87f958f868cf1591a" 0.1056440: End template tree 0.9358311: Total time 90 439 680: Memory usageЧуть меньше секунды!
Вполне возможно, что в каких-то ситуациях url получатся неправильными, поэтому перед влючением советую проверить всё как следует.
В pdoResources параметр &scheme работает только при включении &useWeblinkUrl, а так как по умолчанию он отключен, проще сразу указывать плейсхолдер [[+uri]] в чанках.
Другие изменения
— Сниппет pdoTitle теперь передаёт все полученные параметры во вложенный вызов pdoCrumbs. Так что вы можете указывать параметр &exclude и другие.— Сниппет pdoSitemap научился обрабатывать теги MODX, если они вдруг встречаются в ссылках. Например, из-за мультиязычности этого сайта ссылка на файлохранилище унас выглядит так:
[[!++cultureKey:is=`ru`:then=`https://file.modx.pro`:else=`https://file.modx.pro/en/`]]
Новая версия уже в репозиториях, можно обновляться.
Комментарии: 32
При выводе TV с типом вывода Дата, отображает не так как настроено в TV. Т.е. выдаёт всё от дней до секунд. В настройках TV стоит %d-%m-%Y
Даёшь больше минусов без объяснения!
Даёшь чтение документации перед задаванием вопросов! Да и указание сниппета и вызова, чтобы можно было убедиться в наличии бага, тоже не помешает.
Параметр &processTVs.
Параметр &processTVs.
Отлично, спасибо!
мало минусов, больше злости =)
А если честно, то после такого страшно вопросы задавать.
А если честно, то после такого страшно вопросы задавать.
И не говори, страх какой в этом интернете — могут минус поставить!
Зная тебя — ставь.
Зная его — ставлю.
Это сообщение было удалено
Спасибо за &exclude в pdoTitle! :)
pdoCrumbs валит страницу, ошибка 500
UPD: Переустановил pdoTools, теперь все нормально. Спасибо :)
UPD: Переустановил pdoTools, теперь все нормально. Спасибо :)
Такая же проблема.
Переустановка пакета pdoTools не помогает.
Может нужен откат к предыдущей версии?
Переустановка пакета pdoTools не помогает.
Может нужен откат к предыдущей версии?
Попробуй откатится, потом обновить.
Откат — удаление — установка — работа pdoCrumbs
Спасибо за обновления! Подскажите, схема генерации uri (&scheme=`uri`) работает в режиме
&scheme=`full`
или &scheme=`abs`
?
URI в базе данных хранятся от корня сайта (но без первого слеша)
Тогда вместо запуска modx::makeUrl() в плейсхолдер [[+link]] будет подставлено содержимое поля uri ресурса. Если же это сделать не получается, то будет запущен оригинальный метод.Я имею ввиду, когда не удастся подставить uri поле ресурса — как будет генериться схема url в этом случае.
будет запущен оригинальный метод.с какой схемой? -)
С такой же, то есть -1.
ок! круто.
Василий, подскажи, почему не показываешь синтаксис феном во всей его красе — передача массивов сниппетам?
Василий, подскажи, почему не показываешь синтаксис феном во всей его красе — передача массивов сниппетам?
{$_modx->runSnippet('!pdoMenu',[
'parents' =>0,
'level' =>3,
'showLog' =>1,
'scheme' =>'uri',
'tpl' =>'@INLINE <li{$classes}><a href="{$link}" {$attributes}>{$menutitle}</a>{$wrapper}</li>'
])}
А если поставить значение link_tag_scheme — full. Всё равно uri будут в базе от корня без первого слеша?
Не знаю, но думаю, что да.
Вот, вы проверьте и нам расскажите))
Вот, вы проверьте и нам расскажите))
Если Я правильно всё сделал, то ты правильно думал)
По ходу, link_tag_scheme — full просто [[++site_url]] при генерации ссылок подставляет) В принципе, логично. Вдруг адрес сайта поменяется, а в базе ссылки со старым адресом)
По ходу, link_tag_scheme — full просто [[++site_url]] при генерации ссылок подставляет) В принципе, логично. Вдруг адрес сайта поменяется, а в базе ссылки со старым адресом)
Актуально только для некэшируемого pdoMenu.
__________
Кэп :)
__________
Кэп :)
Для работы pdoSitemap, также как и для pdoCrumbs требуется переустановка пакета pdoTools 2.2.5:
Деинсталлировать — Отмечаем Восстановить — затем Установить заново
Иначе ошибка 500 на страницах с вызовом сниппета
Деинсталлировать — Отмечаем Восстановить — затем Установить заново
Иначе ошибка 500 на страницах с вызовом сниппета
Вы бы хоть в логи заглянули, отчего такая ошибка вылезает у вас? Более 70 загрузок только из modstore, а об ошибке отписались всего 2 человека. При этом, переустановка решает вопрос.
Сдаётся мне, проблема не в компоненте.
Сдаётся мне, проблема не в компоненте.
Василий, а в Журнале ошибок MODX Revolution пусто
Ошибок 500 в журнале MODX не может быть по определению.
Ошибки сервера пишутся в лог сервера.
Ошибки сервера пишутся в лог сервера.
такая статистика на сервера была отключена — подключил
пока решил проблему таким же способом
Это сообщение было удалено
Это сообщение было удалено
А шаблон для категорий, указанный в tplCategoryFolder параметре, должен использоваться для ресурсов с isfolder=1?
В документации написано так
В документации написано так
&tplCategoryFolder Специальный чанк оформления категории. Категория — это документ с «isfolder = 1» и или нулевым шаблоном, или с атрибутом «rel=category»В коде такой проверки нет.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.