Алексей

Алексей

С нами с 11 мая 2019; Место в рейтинге пользователей: #2608
Алексей
22 мая 2019, 16:14
0
Спасибо теске Наумову Алексею!
Переход на pdoMenu дал очень ускорительный результат!

Искал-искал и нашел.
Статья: Меню в MODX с помощью компонента pdoMenu. Modx pdomenu пример
prostoy-site.ru/modx/modx-pdomenu-primer.html

В середине есть подзаголовок:
pdoMenu как замена Wayfinder / Сниппеты / Modx Revolution / Технический блог веб-разработчика

В ней подробно о том, какие Основные параметры Wayfinder на какие менять для pdoMenu.
Wayfinder -->pdoMenu
&startId=`[­[*id]]` --> на &parents=`[­[*id]]`
&cacheResults --> &cache=`1`
&contexts --> &context
&hereTpl --> &tplHere

Параметры шаблонов
&outerTp --> &tplOuter
&innerTpl --> &tplInner

В результате вышло так:
/manager/?a=element/chunk/update&id=26
catalog_in_catalog
<!-- Goods Catalogue PDOmenu -->
[[!pdoMenu? 
   &context=`[[++catalogContext]]`
   &parents=`[[++IDcatalog]]` 
   &level=`3`
   &cache=`1`
   &cacheTime=`86400`
   &fastMode=`1`
   &hideSubMenus=`1`
! Удалил эту строку ---> &where=`[{"template:!=": "[[++IDtovarTpl]]"}]`
   &tplOuter=`catalog_outerTpl`
   &hereClass=`current_page` 
   &levelClass=``
   &firstClass=`first` 
   &lastClass =`last` 
]]
     <!-- End Goods Catalogue PDOmenu -->

В оригинале было так:
<!-- Goods Catalogue 2 -->
[[!Wayfinder? 
&contexts=`[[++catalogContext]]`
&startId=`[[++IDcatalog]]` 
&level=`3`
&hideSubMenus=`1`
&where=`[{"template:!=": "[[++IDtovarTpl]]"}]`
&outerTpl=`catalog_outerTpl`
&hereClass=`current_page` 
&levelClass=``
&firstClass=`first` 
&lastClass =`last` ]]
     <!-- End Goods Catalogue 2 -->
До удаления строки &where=`[{«template:!=»: "[[++IDtovarTpl]]"}]`
получал сотни не нужных ссылок в меню. После ее удаления (просто попробовал)
ненужные строки ушло.

Поясните, пожалуйста, не вылезут ли проблемы в будущем.

&where
JSON строка, в которой задаются параметры для выборки данных.
Например: &where=`[{«class_key:!=»: «msCategory»}]` То есть, не выводить те ресурсы, которые являются категориями Minishop.

Однако почему ее удаление дало положительный результат, я, конечно, не понял.
Буду благодарен за краткое пояснение. ;-)
Алексей
22 мая 2019, 14:03
0
Замена Wayfinder на pdoMenu
modx.pro/help/6887
Ситуацию не прояснило.

Не вижу его вызова, но на всякий случай
catalog
<!-- Goods Catalogue 1 -->
     [[Wayfinder? 
&contexts=`[[++catalogContext]]`
&startId=`[[++IDcatalog]]` 
&level=`1`
&outerTpl=`catalog_outerTpl` 
&hideSubMenus=`0`
&where=`[{"template:!=": "[[++IDtovarTpl]]"}]`
&hereClass=`current_page` 
&firstClass=`first` 
&lastClass =`last` ]]
     <!-- End Goods Catalogue 1 -->
Алексей
22 мая 2019, 13:39
0
pdoMenu нужно вызывать кешированным, зачем вы его некешированным вызываете?
Виноват — не разобрался.

Исправляюсь:
<!-- Goods Catalogue PDOmenu -->
[[!pdoMenu? 
   &contexts=`[[++catalogContext]]`
   &startId=`[[++IDcatalog]]` 
   &level=`3`
   &hideSubMenus=`1`
   &where=`[{"template:!=": "[[++IDtovarTpl]]"}]`
   &outerTpl=`catalog_outerTpl`
   &hereClass=`current_page` 
   &levelClass=``
   &firstClass=`first` 
   &lastClass =`last` 
-->   &cache=`1`
-->   &cacheTime=`86400`
-->   &fastMode=`1`
]]
     <!-- End Goods Catalogue PDOmenu -->
В результате скорость загрузки страницы сократилась с 15-25 сек, до 5-10 сек, что уже намного лучше!

catalog_outerTpl
<ul class="catalog_contaner">
[[+wf.wrapper]]
</ul>

catalog_tovar
<div><a href="[[~[[getDocFild? &id=`[[getDocFild? &id=`[[*parent]]` &fild=`parent`]]` &fild=`parent`]]]]"><<- [[getDocFild? &id=`[[getDocFild? &id=`[[getDocFild? &id=`[[*parent]]` &fild=`parent`]]` &fild=`parent`]]` &fild=`menutitle`]]</a></div>

[[!Wayfinder? 
&contexts=`[[++catalogContext]]`
&startId=`[[getDocFild? &id=`[[*parent]]` &fild=`parent`]]` 
&level=`1`
&hideSubMenus=`1`
&outerTpl=`catalog_outerTpl`
&hereClass=`current_page` 
&levelClass=``
&firstClass=`first` 
&lastClass =`last`
&where=`[{"template:!=": "[[++IDtovarTpl]]"}]`
]]

     <!-- End Goods Catalogue 3 -->
Нашел немного ссылок в помощь тем, кто столкнется с этим заданием.
Вопрос про pdoMenu и кеширование обсуждали здесь
modx.pro/help/4812
[[pdoMenu?
  &cache=`1`
  &cacheTime=`180`
  &fastMode=`1`

MODX Docs — pdoMenu
docs.modx.pro/komponentyi/pdotools/snippetyi/pdomenu
&fastMode 0 — Быстрый режим обработки чанков. Все необработанные теги (условия, сниппеты и т.п.) будут вырезаны
&cache 0 — Кэширование результатов работы сниппета
&cacheTime 3600 — Время актуальности кэша, в секундах

Большой рассказ про pdoTools, часть первая
bezumkin.ru/training/course2/3005/
Есть еще один интересный параметр обработки плейсхолдеров — &fastMode.
Он выключает передачу плейсхолдеров в родной парсер MODX, и то, что не смог обработать pdoParser просто будет вырезано.
В последних версиях pdoTools его использовать нет нужды, потому что если pdoParser всё обработал, и в чанке не осталось ни одного [[+tag]], то он сразу отдаёт результат, не трогая modParser. Но вы можете его включить как принудительное требование для тех людей, которые меняют чанки — чтобы они не могли использовать трехэтажные конструкции.
Алексей
22 мая 2019, 04:32
0
Нашел статью MODx Revo: кешируем сниппет wayfinder
capweb.ru/modx-revo-snippet-wayfinder-cache-getcache.html

Установил сниппет getCachemodx.com/extras/package/getcache
модифицировал меню:

<!-- Goods Catalogue 2ch -->
[[!getCache? 
&element=`Wayfinder` 
&cacheKey=`global_cache` 
&contexts=`[[++catalogContext]]`
&startId=`[[++IDcatalog]]`
&level=`3`   
&hideSubMenus=`1`
&where=`[{"template:!=": "[[++IDtovarTpl]]"}]`
&outerTpl=`catalog_outerTpl`
&hereClass=`current_page` 
&levelClass=``
&firstClass=`first` 
&lastClass =`last` 
&debug=`0`
]]
     <!-- End Goods Catalogue 2ch -->
Директория /core/cache/global_cache создалась.
Элементы меню (каталога) в папке этой появились.

Но результат нулевой — как формировалось меню по 10 — 15 секунд, так и осталось.
Беда, беда…
Алексей
21 мая 2019, 21:25
0
Время загрузки страницы около 10,02 сек.
Из них Wayfinder тратит 7.63 сек.
Буду благодарен за помощь с оптимизацией.



Ссылка на полную картинку https://file.modx.pro/files/d/0/e/d0eb40c077170cdd126cceb3c51a7442.jpg

Wayfinder
Total parse time	10.0207360 s
Total queries	466
Total queries time	0.1870720 s
Memory peak usage	43 Mb
MODX version	MODX Revolution 2.7.1-pl (traditional)
PHP version	5.6.38
Database version	mysql 5.5.61-log
From cache	false
Алексей
21 мая 2019, 21:20
0
[[!pdoMenu? 
   &contexts=`[[++catalogContext]]`
   &startId=`[[++IDcatalog]]` 
   &level=`3`
   &hideSubMenus=`1`
   &where=`[{"template:!=": "[[++IDtovarTpl]]"}]`
   &outerTpl=`catalog_outerTpl`
   &hereClass=`current_page` 
   &levelClass=``
   &firstClass=`first` 
   &lastClass =`last` 
]]
     <!-- End Goods Catalogue 2 -->
Алексей
21 мая 2019, 21:03
0
Меню на Wayfinder


pdoMenu — слева внизу какие-то «надписи». Что-то лишнее выводит.
Алексей
21 мая 2019, 20:55
0
Благодарю за ответ.

Заменил Wayfinder на pdoMenu.
Оказывается для pdoMenu нужно pdoTools. ;-)
Поставил. Меню глючит, но работает чуть лучше.

Полагаете вот эти предупреждения на скорость формирования pdoMenu не влияют?
И целые секунды уходят на построение меню?

с pdoMenu лог такой:
[2019-05-21 20:40:18] (DEBUG @ /home/finside/web/bezriska.net/public_html/core/model/modx/modlexicon.class.php : 416) Language string not found: "Will output the parameters passed in, as well as the end output. Leave off when not testing."
[2019-05-21 20:40:18] (WARN @ /home/finside/web/bezriska.net/public_html/core/model/modx/modcontext.class.php : 248) `9190` was requested but no alias was located.
[2019-05-21 20:40:18] (INFO in modContext::makeUrl @ resource 163) Resource with id 9190 was not found in context catalog
[2019-05-21 20:40:18] (WARN @ /home/finside/web/bezriska.net/public_html/core/model/modx/modcontext.class.php : 248) `9191` was requested but no alias was located.
[2019-05-21 20:40:18] (INFO in modContext::makeUrl @ resource 163) Resource with id 9191 was not found in context catalog
[2019-05-21 20:40:18] (WARN @ /home/finside/web/bezriska.net/public_html/core/model/modx/modcontext.class.php : 248) `4105` was requested but no alias was located.
[2019-05-21 20:40:18] (INFO in modContext::makeUrl @ resource 163) Resource with id 4105 was not found in context catalog