[pdoTools] Версия 1.8.3: Новый сниппет pdoMenu

Новая версия pdoTools знаменует собой окончание активной разработки компонента.

Я написал все, что хотел: удобную библиотеку и 8 сниппетов для самых распространенных задач.
  • pdoResources — замена getResources с широчайшими возможностями. Можно и присоединять таблицы, и выбирать только нужные поля, и гибко указывать разные параметры выборки и все это на очень высоких скоростях.
  • pdoPage — замена getPage, которая отлично строит пагинацию, запрещает указывать нехорошие параметры в запросах и быстрее работает.
  • pdoMenu — замена Wayfinder. Однозначно быстрее при первом запуске, на повторных разница уже не столь заметна. Зато можно более гибко указывать параметры выбоки + быстрый рендер чанков.
  • pdoUsers — Сниппет вывода пользователей сайта, с различными условиями, включая фильтрацию по группам и ролям.
  • pdoSitemap — Генерация карты сайта, в разы быстрее GoogleSiteMap.
  • pdoCrumbs — Вывод навигационных хлебных крошек, замена Breadcrumb.
  • pdoNeighbors — Вывод соседних документов: предыдущий, следующий и наверх.
  • pdoField — Вывод поля указанного ресурса или его родителя на разных уровнях. Замена getResourceField и UltimateParent.

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

На следующие три недели у меня запланировано создание серьезного корпоративного сайта-визитки и проведение курса по написанию компонентов.

Про курс скоро будет отдельное объявление, как только улажу некоторые технические вопросы.

Про серьезный корпоративный сайт новости тоже будут, как никак — первый сайт, построенный целиком на наших компонентах (разве что FormIt используем для обратной связи). В общем — однозначная личная веха.

Изменения

Добвален сниппет pdoMenu.

Метод getChunk теперь запускает обработку чанка через парсер только в том случае, если в нем остались плейсхолдеры. Можно сказать — это автоматический fastMode.

Для сниппета pdoField добавлен «toPlaceholder».

Улучшена работа с файловыми ТВ параметрами. За это можно смело благодарить Андрея Чирко.

Улучшена передача дополнительных параметров при вызове pdoResources в конечные чанки. Еще одна благодарность Андрею. Теперь при вызове:
[[!pdoResources?
	&parents=`25`
	&depth=`1`
	&myparam=`value`
]]
в чанк попадёт только [[+myparam]], а не все $scriptProperties. Это существенно ускоряет обработку чанков, так как при запуске через getPage (pdoPage) лишних параметров было много и на их подготовку тратилось время.

Добавлена поддержка системных плейсхолдеров [^q^] и [^qt^]. Правда, для их нормальной работы вам нужно обновиться до версии MODX 2.2.10.
Да и сам лог теперь ведется немного точнее.

Ну и несколько разных багфиксов, до кучи.

Заключение

Как обычно, обновляемся и пишем отзывы.

Мой сайт теперь работает только на Tickets + pdoTools, циферки времени генерации страницы можно посмотреть в футере.

Следующая заметка
[BannerY] Версия 1.2.0-beta Новый сниппет вывода
Предыдущая заметка
[pdoTools] Версия 1.8.0-rc: Сниппет pdoPage


Комментарии ()

  1. Александр Наумов 21 октября 2013, 00:23 # 0
    Круто!!!
    Ждал данный сниппет, что бы начать делать новый сайт только на MODX, pdoTools и Tickets.
    1. Viktor Minator 21 октября 2013, 01:24 # 0
      спасибо. потестим.
      1. Роман Наумов 21 октября 2013, 01:29 # 0
        Здорово!
        Видел обновление pdoTools, ждал, когда Василий об этом напишет.
        Обновился, буду тестить.
        1. Василий Наумкин 21 октября 2013, 07:40 # 0
          И правильно! Там еще куча правок была, после первого выпуска =)
        2. Виктор Долгий 21 октября 2013, 02:28 # 0
          При вызове на странице компонента mFilter, а затем использование pdoCrumbs приводит к тому, что pdoCrumbs выводит не хлебные крошки, а то же, что и mFilter. По отдельности работают ок.
          1. Виталий Батушев 21 октября 2013, 03:02 # 0
            Подтверждаю, пришлось вытащить «крошки» наружу из аутера mFilter.
            1. Василий Наумкин 21 октября 2013, 07:39 # 0
              Не могу повторить. Работает и в tplOuter и в чанках результатов.

              Если ты вставляешь вызов pdoCrumbs внутрь блока
              <div id="mse2_results">
              	[[+results]]
              </div>
              то он, конечно, будет переписан результатами при первой же фильтрации. И не только он, а любой контент.

              В общем, объясни пожалуйста, как воспроизвести проблему.
              1. Виталий Батушев 21 октября 2013, 10:24 # 0
                Я использовал при вызове mFilter параметр &paginator=`pdoPage`:
                [[!mFilter2?
                					&limit=`8`
                					&parents=`[[*id]]`
                					&element=`msProducts`
                					&class=`msProduct`
                					&filters=`
                						msoption|tags
                						,ms|vendor:vendors
                					`
                					&paginator=`pdoPage`
                					&suggestionsRadio=`ms|new`
                					&sort=`ms|price:asc`
                					&tplFilter.row.ms|vendor=`tpl.mFilter2.filter.checkbox2`
                					&tplFilter.row.msoption|tags=`tpl.mFilter2.filter.checkbox2`
                					&tpls=`shop.msProducts.row`
                					&showLog=`0`
                					&tplOuter=`shop.mFilter2.outer`
                					&includeThumbs=`120x120`
                
                					&tplPageWrapper=`@INLINE <ul class="pagination pagination-sm col-lg-12" id="mse2_pagination">[[+first]][[+prev]][[+pages]][[+next]][[+last]]</ul>`
                					&tplPageFirst=`@INLINE <li class="control"><a[[+classes]][[+title]] href="[[+href]]">Первая</a></li>`
                					&tplPageLast=`@INLINE <li class="control"><a[[+classes]][[+title]] href="[[+href]]">Последняя</a></li>`
                					&tplPagePrev=`@INLINE <li class="control"><a[[+classes]][[+title]] href="[[+href]]"><i class=" icon-double-angle-left"></i></a></li>`
                					&tplPageNext=`@INLINE <li class="control"><a[[+classes]][[+title]] href="[[+href]]"><i class=" icon-double-angle-right"></i></a></li>`
                					&tplPageActive=`@INLINE <li class="active"><a [[+title]] href="[[+href]]">[[+pageNo]]</a></li>`
                					&tplPageSkip=`@INLINE <li class="control"><span>...</span></li>`
                					
                				]]
                
                Внутри tplOuter был вызов pdoCrumbs:
                <div class="container" id="mse2_mfilter">
                			<div class="page-header"><h1>[[*pagetitle]]</h1></div>
                			[[!pdoCrumbs?
                				&tplWrapper=`@INLINE <ol class="breadcrumb">[[+output]]</ol>`
                				&tpl=`@INLINE <li><a href="[[+link]]">[[+pagetitle]]</a></li>`
                				&tplHome=`@INLINE <li><a href="[[+link]]">[[++site_name]]</a></li>`
                				&tplCurrent=`@INLINE <li class="active">[[+pagetitle]]</li>`
                				&outputSeparator=``
                			]]
                
                	<div class="row">
                		<div class="col-lg-3">
                			[[subCatalog?&parent=`[[*id]]`]]
                			
                			<form action="" method="post" id="mse2_filters">
                					[[+filters]]
                			</form>
                			<div class="goodstotal">Найдено товаров: <span id="mse2_total">[[+total:default=`0`]]</span> шт.</div>
                		</div>
                
                		<div class="catalog catalog-list col-lg-9">
                			<div class="row">
                
                				<div class="sortblock" id="mse2_sort">
                					Сортировать:
                					<a href="#" data-sort="ms|price" data-dir="[[+mse2_sort:is=``:then=`asc`]]" data-default="asc" class="sort">по цене <span></span></a> |
                					<a href="#" data-sort="resource|pagetitle" data-dir="" data-default="asc" class="sort">по наименованию <span></span></a> |
                					<a href="#" data-sort="resource|publishedon" data-dir="" data-default="desc" class="sort">по дате публикации <span></span></a> |
                					<label class="form-group pull-right">[[%mse2_limit]] 
                						<select name="mse_limit" id="mse2_limit">
                							<option value="5" [[+limit:is=`8`:then=`selected`]]>8</option>
                							<option value="10" [[+limit:is=`16`:then=`selected`]]>16</option>
                							<option value="25" [[+limit:is=`32`:then=`selected`]]>32</option>
                							<option value="50" [[+limit:is=`64`:then=`selected`]]>64</option>
                							<option value="100" [[+limit:is=`128`:then=`selected`]]>128</option>
                						</select>
                					</label>
                				</div>
                			</div>
                
                			<div class="products-list row">
                				<div id="mse2_results" class="col-lg-12">
                					[[+results]]
                					<div class="product product-list row">
                						<div class="product-line col-lg-12"></div>
                					</div>
                				</div>
                				[[+page.nav]]
                			</div>
                		</div>
                	</div>
                </div>
                
                Собственно, я сейчас убрал отсюда «крошки», потому что непринципиально для меня. Но был удивлен, когда заменил Breadcrumb на pdoCrumbs и увидел:
                1. Василий Наумкин 21 октября 2013, 12:58 # 0
                  @INLINE чанки — это конечно круто, но не нужно злоупотреблять.

                  У тебя в
                  &tplWrapper=`@INLINE <ol class="breadcrumb">[[+output]]</ol>`
                  есть плейсхолдер [[+output]] и mFilter2 вставляет в него свой вывод.

                  Задай чанки наблром параметров и вызывай вот так:
                  [[!pdoCrumbs@mySet]]
                2. Борис 14 ноября 2014, 21:03 # 0
                  Выкрутился из проблемы с pdoCrumbs настройкой набора параметров.
              2. Наумов Алексей 21 октября 2013, 10:00 # 0
                Что за фамильная атака)))
                1. Роман Наумов 21 октября 2013, 23:15 # 0
                  Ага, нас тут много :)
                2. Виктор Банев 21 октября 2013, 12:07 # 0
                  pdoMenu не прописывает href у дочерней ссылки
                  при этом href у дочерних ресурсов прописывается на ура, меню работает
                  дочерняя символическая ссылка тоже выводится с пустым href
                  в поле ссылка пишу [[~447]]

                  UPD: написал 447 в поле ссылка — все заработало

                  1. Василий Наумкин 21 октября 2013, 12:49 # 0
                    Так и должно быть, насколько я знаю.

                    Подобная обработка документов-ссылок используется и в других сниппета — тэг там не нужен, только id.
                  2. Павел Левин 21 октября 2013, 12:14 # 0
                    Есть подозрение, что при вызове более одного раза, идёт конфликт или еще что, но страница существенно дольше грузит при первом запросе, чем при связке pdoMenu+WF или WF+WF.

                    Возможно ошибаюсь.
                    1. Василий Наумкин 21 октября 2013, 12:18 # 0
                      1. Павел Левин 21 октября 2013, 12:27 # 0
                        [2013-10-21 12:24:36] (WARN @ /home/site/core/components/pdotools/model/pdotools/pdotools.class.php : 249) PHP notice: Array to string conversion
                        [2013-10-21 12:24:36] (WARN @ /home/site/core/components/pdotools/model/pdotools/pdotools.class.php : 249) PHP notice: Array to string conversion
                        и так 10+ мб лога ошибок.
                        1. Василий Наумкин 21 октября 2013, 12:45 # 0
                          У меня все чисто и на тесте и на продакшене (специально включал сейчас вывод всех ошибок).

                          Подождем еще сообщений, но вообще строка 249 давно не менялась. Тем более, там и должны быть массивы — проверь, может у тебя пакет криво обновился?
                          1. Павел Левин 21 октября 2013, 13:00 # 0
                            Удалил компонент. Загрузил и установил по новой.

                            Всё равно лог забивается:
                            [2013-10-21 12:59:43] (WARN @ /home/site/core/components/pdotools/model/pdotools/pdotools.class.php : 249) PHP notice: Array to string conversion
                            постепенно доходит до 100мб+
                            1. Василий Наумкин 21 октября 2013, 13:06 # 0
                              Попробуй локализовать проблему. Вызови сниппеты на отдельной странице, без шаблона, потом с шаблоном. Сначала по одному, потом в куче и т.д.

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

                              У меня сейчас нет времени разбираться — надо работать.
                              1. Павел Левин 21 октября 2013, 13:09 # 0
                                Хорошо.
                                1. Павел Левин 21 октября 2013, 14:04 # 0
                                  Условия проверки: Пустой шаблон, вызов определенного компонента pdoTools.

                                  1. Вызов pdoMenu — Лог забит ошибками
                                  2. Вызов pdoResources — Лог пуст
                                  3. Вызов pdoNeighbors — Лог пуст
                                  4. Вызов pdoCrumbs — Лог забит ошибками

                                  Остальные компоненты не проверял.
                                  1. Василий Наумкин 21 октября 2013, 14:09 # 0
                                    Осталось понять, почему это только у тебя. Это с родными чанками, или ты еще что-то указываешь?

                                    Пробовал проверять на modx-test.com?
                                    1. Павел Левин 21 октября 2013, 14:11 # 0
                                      Базовые параметры, убирал кэширование, если требовался родитель, ставил 0.

                                      — Сейчас попробую на modx-test.com.
                                      1. Павел Левин 21 октября 2013, 15:02 # 0
                                        На modx-test.com нормально, без ошибок… единственное что у меня MODX Revolution 2.2.9-pl. Сейчас попробую обновиться.
                                        1. Павел Левин 21 октября 2013, 16:14 # 0
                                          Обновился, к сожалению, ошибки не пропали, на момент обновления лог 350мб весил.

                                          Буду дальше думать, в чем проблема.
                                          1. Павел Левин 21 октября 2013, 19:41 # 0
                                            Я сделал так (это не хорошо, но попробовать стоило), заигнорил ошибки "@", "pdotools.class.php: 249".

                                            в итоге выдал:
                                            [2013-10-21 19:36:36] (WARN @ /home/site/core/cache/includes/elements/modsnippet/14.include.cache.php : 34) PHP notice: Undefined variable: conifg
                                            [2013-10-21 19:36:36] (WARN @ /index.php) Could not load package metadata for package quickbar.
                                            [2013-10-21 19:36:36] (WARN @ /index.php) `4` was requested but no alias was located.
                                            [2013-10-21 19:36:36] (WARN @ /index.php) `42` was requested but no alias was located.
                                            1. Павел Левин 22 октября 2013, 15:30 # 0
                                              pdoMenu — поддерживает шаблоны Wayfinder?

                                              Пример:
                                              <li [[+wf.classes]]>
                                              	<a href="[[+wf.link]]" [[+wf.attributes]]>[[+wf.linktext]]</a>
                                              	[[+wf.wrapper]]
                                              </li>
                                              м.б. в них проблема?… хотя в пустую вызывал.

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

                                              1. Павел Левин 22 октября 2013, 15:58 # 0
                                                Может быть дело в PHP?

                                                У меня 5.4.12
                                                1. Павел Левин 23 октября 2013, 15:24 # 0
                                                  Тем временем:
                                                  1. Василий Наумкин 23 октября 2013, 15:44 # 0
                                                    Паша, не мучайся.

                                                    Используй getResources, Wayfinder и getPage. Я же их не забрал у тебя?
                                                    1. Павел Левин 23 октября 2013, 16:05 # 0
                                                      То понятно, но почему всё что у всех работает у меня не хочет работать, хотя до этого работало. Пытаюсь воспроизвести ошибку на тесте, но пока не получается.

                                                      Хотя на тесте также передаётся 2 массива в str_replace, переменные $pl['pl'] и $pl['vl'].

                                                      У меня также передаются 2 массива, хотя по идее, он на это и ругается, а на тесте нет… м.б. на серверном уровне отключены выводы ошибок?
                                                      1. Василий Наумкин 23 октября 2013, 16:49 # 0
                                                        Я вообще не понимаю, почему у тебя ошибки php выводятся в журнал MODX, а не
                                                        1. отключены
                                                        2. или пишутся в лог сервера

                                                        Еще настораживает тот факт, что только у тебя есть ошибка в основной функции pdoTools, которая используется во всех компонентах.
                                                        1. Павел Левин 23 октября 2013, 17:01 # 0
                                                          Ошибки пишутся т.к. log_level = 2.

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

                                                          Ошибки пропадают, когда делаю так:
                                                          $content = str_replace(array_shift($pl['pl']), array_shift($pl['vl']), $chunk['content']);
                                                          но при этом перестаёт работать pdoCrumbs.

                                                          Я сам не могу понять, почему при аналогичном значении переменных, на modx-test.com всё хорошо, как будто так и должен работать str_replace
                                                          1. Павел Левин 23 октября 2013, 17:22 # 0
                                                            Если смотреть на то как должна работать данная функция и мои ошибки

                                                            mixed str_replace ( mixed search, mixed replace, mixed subject [, int &count] )

                                                            Получается несовпадение кол-ва значений в массивах mixed search и mixed replace, но я проверил это так:
                                                            if(count($pl['pl']) != count($pl['vl'])) {echo '<!-- WARN -->';}
                                                            никакого WARN в html не появилось -___-

                                                            print_r() — данных переменных, выводит 502 ошибку, а на тесте, пустую страницу.

                                                            У себя я использую Articles и на тесте так же его установил и сделал тестовые записи. Все шаблоны меню, я так же скопипастил на тест и вывожу меню таким же способом.

                                                            Хлебные крошки, так же вывожу.

                                                            — Хорошо, я запутался… всё равно разберусь в этом.
                                        2. Вадим Хомчик 21 октября 2013, 19:50 # 0
                                          pdoMenu. Похоже некорректно обрабатывается showUnpublished. По умолчанию показывает неопубликованные. При явном добавлении параметра никак не влияет.
                                          1. Василий Наумкин 21 октября 2013, 19:56 # 0
                                            А может, ты просто авторизован в админке?
                                            1. Вадим Хомчик 21 октября 2013, 19:58 # 0
                                              Смотрел в режиме инкогнито браузера
                                              1. Василий Наумкин 21 октября 2013, 20:02 # 0
                                                Проверяй на modx-test.com и если там тоже самое — пиши, будем чинить.
                                                1. Василий Наумкин 21 октября 2013, 20:21 # 0
                                                  Похоже, я знаю в чем может быть проблема.

                                                  Ты в админке открыл сайт — меню сгенерировалось и закэшировалось. Потом зашел из анонимного режима — полученные документы отдались из кэша.

                                                  В общем, укажи сниппету
                                                  &cache=`0`
                                                  А я отключу этот кэш по умолчанию в следующей версии. Толку от него все равно нет — просто сделал как у Wayfinder.
                                                  1. Вадим Хомчик 21 октября 2013, 20:35 # 0
                                                    не помогло :( полная очистка кэша тоже
                                                    проблема тут —
                                                    if (!empty($scriptProperties['previewUnpublished']) && $modx->hasPermission('view_unpublished')) {
                                                    	$scriptProperties['showUnpublished'] = 1;
                                                    }
                                                    
                                                    почему-то hasPermission возвращает true, хотя по политике базовые настройки и для anonymous view_unpublished нет. Буду разбираться.
                                                    1. Вадим Хомчик 21 октября 2013, 20:40 # 0
                                                      Нашел. Забавно. Вообщем если использовать session less контекст для быстродействия (http://develop.modx.com/blog/2012/04/05/new-for-2.2.1-session-less-contexts), то результат работы $modx->hasPermission будет true.
                                                      1. Василий Наумкин 21 октября 2013, 20:41 # 0
                                                        Логично.

                                                        Ты отключил сессии — как проверять права?
                                                        1. Вадим Хомчик 21 октября 2013, 21:15 # 0
                                                          Да понятно что никак :) думал все же, что там идет проверка политикой по умолчанию какой или еще как, а не так что если сессия не инициализирована return true.
                                                          Быть может previewUnpublished по умолчанию сделать 0? Все же на мой взгляд это больше для тестирования необходимо.
                                                          Второй момент, что явное указание showUnpublished = 0 похоже перетирается.
                                                          1. Василий Наумкин 21 октября 2013, 21:19 # 0
                                                            Да, согласен.

                                                            Сейчас отключу и обновлю пакет.
                                                            1. Вадим Хомчик 21 октября 2013, 21:33 # 0
                                                              Супер. Спасибо!
                                            2. De Ribaskin 22 октября 2013, 15:25 # 0
                                              Привет Василий! В новой версии pdoResources перестал работать плейсхолдер [[+limit]]. Так и должно быть?
                                              1. Василий Наумкин 22 октября 2013, 15:31 # 0
                                                Да.

                                                Плейсхолдеры из параметров сниппета не попадают в чанки, ибо и очень много и от этого замедляется вывод.
                                                Ты сам указываешь &limit — значит, можешь и в чанке его заранее прописать, если нужно.
                                              2. De Ribaskin 22 октября 2013, 22:00 # 0
                                                После обновления последнего модификатор notempty перестал отрабатывать в tpl в pdoResources.
                                                Такая конструкция выводит все подряд.
                                                [[+tv.logotip:notempty=`
                                                <item>
                                                	<img>[[+tv.logotip]]</img>
                                                	<signature>[[+menutitle]]</signature>
                                                	<url>[[+tv.site]]</url>
                                                </item>`]]
                                                1. Cyrax_02 26 октября 2013, 11:38 # 0
                                                  по поводу pdoResources гляньте вот сюда:
                                                  bezumkin.ru/sections/help/1615/#comment-16538
                                                  1. Антон Соловьёв 29 октября 2013, 08:53 # 0
                                                    Что-то у меня pdoResources внезапно перестал отображаться tv migx — resourcealbum
                                                    В чем проблема может быть? Раньше показывался. Возможно, я обновился и не посмотрел… Не понял, когда параметр пропал.
                                                    0.0001590: pdoTools loaded
                                                    0.0000548: xPDO query object created
                                                    0.0006850: Included list of tvs: price, resourcealbum
                                                    0.0004900: leftJoined modTemplateVarResource as TVprice
                                                    0.0004270: leftJoined modTemplateVarResource as TVresourcealbum
                                                    0.0007861: Added selection of modResource: SQL_CALC_FOUND_ROWS `pagetitle`, `content`, `introtext`, `alias`
                                                    0.0000160: Added selection of TVprice: IFNULL(`value`, '') AS `tv.price`
                                                    0.0000138: Added selection of TVresourcealbum: IFNULL(`value`, '') AS `tv.resourcealbum`
                                                    0.0007780: Processed additional conditions
                                                    0.0013239: Added where condition: modResource.parent:IN(8,60,51,52,37,39,38,61), modResource.published=1, modResource.deleted=0, modResource.isfolder=0
                                                    0.0000851: Replaced TV conditions
                                                    0.0001211: Sorted by menuindex, ASC
                                                    0.0000081: Limited to 3, offset 0
                                                    0.0004752: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `modResource`.`pagetitle`, `modResource`.`content`, `modResource`.`introtext`, `modResource`.`alias`, IFNULL(`TVprice`.`value`, '') AS `tv.price`, IFNULL(`TVresourcealbum`.`value`, '') AS `tv.resourcealbum` FROM `modx_site_content` AS `modResource` LEFT JOIN `modx_site_tmplvar_contentvalues` `TVprice` ON `TVprice`.`contentid` = `modResource`.`id` AND `TVprice`.`tmplvarid` = 9 LEFT JOIN `modx_site_tmplvar_contentvalues` `TVresourcealbum` ON `TVresourcealbum`.`contentid` = `modResource`.`id` AND `TVresourcealbum`.`tmplvarid` = 24 WHERE  ( `modResource`.`parent` IN (8,60,51,52,37,39,38,61) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 AND `modResource`.`isfolder` = 0 )  ORDER BY menuindex ASC LIMIT 3 "
                                                    0.0001249: SQL executed
                                                    0.0001631: Total rows: 7
                                                    0.0000949: Rows fetched
                                                    0.0047989: Prepared and processed TVs
                                                    0.0018740: Loaded chunk "roomTpl"
                                                    0.2731199: Returning processed chunks
                                                    0.2832680: Total time
                                                    15 728 640: Memory usage
                                                    1. Василий Наумкин 29 октября 2013, 10:15 # 0
                                                      В чанке указан [[+tv.resourcealbum]]?
                                                      При вызове указан &processTVs=`1`?
                                                      1. Антон Соловьёв 29 октября 2013, 13:38 # 0
                                                        1 — да
                                                        2 — да.

                                                        Собственно, тот же чанк и примерно с теми же настройками нормально отрабатывается getResources (на который сейчас и вернулся). До вчерашнего дня все и на pdoResources работало.

                                                        Собстна вот как сейчас.
                                                        [[!getPage@PagingRU?
                                                            &elementClass=`modSnippet`
                                                            &element=`getResources`
                                                            &showHidden=`1`
                                                            &tpl=`roomTpl`
                                                            &limit=`3`
                                                        	&includeContent=`1`
                                                            &includeTVs=`1`
                                                            &processTVs=`1`
                                                            &parents=`8`
                                                            &hideContainers=`1`
                                                        	&pageLimit=`2`
                                                            &pageNavVar=`page.nav`    
                                                            ]]
                                                        [[-getPage@PagingRU?
                                                            &elementClass=`modSnippet`
                                                            &element=`pdoResources`
                                                            &showHidden=`1`
                                                            &tpl=`roomTpl`
                                                            &parents=`[[*id]]`
                                                            &includeTVs=`price,resourcealbum`
                                                            &where=``
                                                            &processTVs=`1`
                                                            &select=`pagetitle,content,introtext,alias`
                                                            &hideContainers=`1`
                                                            &limit=`3`
                                                            &pageLimit=`2`
                                                            &pageNavVar=`page.nav`
                                                            &sortby=`menuindex`
                                                            &sortdir=`ASC`
                                                            &showLog=`1`
                                                        ]]
                                                        </ul>
                                                        <ul class='pagination'>
                                                            [[!+page.nav]]
                                                        </ul>
                                                        Ну и содержание [[+tv.resourcealbum]] (сократил)

                                                        [{"MIGX_id":"12","title":"","image":"_08A5913.jpg","description":"","set":"1","tumb-img":"\/assets\/img\/prev-cach\/_08A5913.jpg"},{"MIGX_id":"2","image":"_08A5855.jpg","deleted":"0","set":1,"tumb-img":"\/assets\/img\/prev-cach\/_08A5855.jpg"]}
                                                    2. slobik 06 ноября 2013, 14:28 # 0
                                                      после обновления до последней версии, появились проблемы с экспортом заказа:

                                                      Warning: json_decode() expects parameter 1 to be string, array given in /var/www/berrak/data/www/berrak-shop.com/core/cache/includes/elements/modsnippet/16.include.cache.php on line 137

                                                      Warning: json_decode() expects parameter 1 to be string, array given in /var/www/berrak/data/www/berrak-shop.com/core/cache/includes/elements/modsnippet/16.include.cache.php on line 137

                                                      miniShop2 версии 2.0.1

                                                      Подскажите в чем проблема ??
                                                      1. Василий Наумкин 06 ноября 2013, 14:31 # 0
                                                        Мне нужно угадать, что за экспорт и что за сниппет?

                                                        Не, сегодня нет настроения.
                                                        1. slobik 06 ноября 2013, 14:35 # 0
                                                          после обновления pdoTools до последней версии при экспорте заказа в «miniShop2 :: Заказы» в exel такие ошибки:

                                                          Warning: json_decode() expects parameter 1 to be string, array given in /var/www/berrak/data/www/berrak-shop.com/core/cache/includes/elements/modsnippet/16.include.cache.php on line 137

                                                          Warning: json_decode() expects parameter 1 to be string, array given in /var/www/berrak/data/www/berrak-shop.com/core/cache/includes/elements/modsnippet/16.include.cache.php on line 137
                                                          1. Василий Наумкин 06 ноября 2013, 14:36 # 0
                                                            Ты в курсе, что в miniShop2 нет экспорта заказов?

                                                            Если он у тебя есть — его кто-то дописал.
                                                            1. slobik 06 ноября 2013, 14:40 # 0
                                                              Не знал) Спасибо за ответ!
                                                              1. Василий Наумкин 06 ноября 2013, 14:42 # 0
                                                                Вот изменение работы с JSON полями.

                                                                Тебе надо зайти в сниппет с id = 16, найти там примерно на 133 строке json_decode и убрать. Должно помочь.
                                                                Преед изменениями лучше сделать копию сниппета.
                                                      2. slobik 06 ноября 2013, 15:06 # 0
                                                        pdoNeighbors использует другие сниппеты pdoTools?
                                                        1. Василий Наумкин 06 ноября 2013, 15:07 # 0
                                                          pdoNeighbors и есть сниппет pdoTools. А pdoTools это название компонента и имя основного класса.

                                                          Предлагаю немного ознакомиться с предметом.
                                                        2. Dmitry Rodionov 11 февраля 2014, 13:36 # 0
                                                          два запроса которые должны работать одинаково — так не делают, это конечно затрудняет переход на pdofield
                                                          [[*id:pdofield=`{"topLevel":3,"field":"id"}`]]
                                                          [[!UltimateParent?&id=`[[*id]]` &topLevel=`3`]]
                                                          Дерево выглядит так:
                                                          WEB->Продукты(2)
                                                          WEB->Продукты(2)->Карандаши(3)
                                                          WEB->Продукты(2)->Ручки(4)
                                                          WEB->Продукты(2)->Ручки(4)->Ручки автоматические(7)
                                                          WEB->Продукты(2)->Ручки(4)->Ручки шариковые(8)
                                                          
                                                          когда я в:
                                                          1) Ручки(4) — я хочу получить ID=4
                                                          2) Когда в Продукты(2) — ID=2
                                                          3) Когда в Ручки шариковые(8), опять ID=4
                                                          Можно решить эту проблему используя pdoField?
                                                          1. Dmitry Rodionov 14 марта 2014, 08:20 # 0
                                                            Хотелось бы увидеть, Василий, твой комментарий
                                                            1. Василий Наумкин 14 марта 2014, 08:25 # 0
                                                              Если pdoField не работает, как тебе нужно, а UltimateParent работает — используй его.

                                                              Если найдешь ошибку в pdoField — запости на github, чтобы я ее поправил.
                                                              1. Dmitry Rodionov 14 марта 2014, 12:08 # 0
                                                                То что я описал выше — считать это ошибкой или чем?
                                                                1. Чикин Артур 14 марта 2014, 13:00 # 0
                                                                  Василий разработал и разрабатывает очень много дополнение. И переключатся между разработкой одного компонента на другой не так легко как кажется, к тому же на это не всегда есть время. По этому каждую хотелку и каждый баг и недочет невозможно моментально реализовать или исправить. По этому есть несколько вариантов:

                                                                  1 написать грамотный issues и прислать Василию, и когда у него будет время и возможность он найдет и исправит.
                                                                  2 исследовать код и найти ошибку самому и прислать Василию уже готовое решение и тогда моментально выйдет обновленный компонент без ошибки.
                                                                  3 нанять программиста который найдет ошибку и решит ее.
                                                                  1. Dmitry Rodionov 15 марта 2014, 08:51 # 0
                                                                    речь не об этом, в данном случае я спросил чем это считать багом/недочетом или фичей и как это должно работать? Смысл мне искать и исправлять под себя код — если это никому кроме меня не надо и всех устраивает как это работает сейчас, вот и все. Поэтому я надеялся на то, что автор просветит меня в этом вопросе и скажет — да так работать не должно или да так как работает сейчас — все верно.
                                                                    1. Чикин Артур 15 марта 2014, 14:08 # 0
                                                                      Здесь помой му есть ответ на твой вопрос:
                                                                      Если pdoField не работает, как тебе нужно, а UltimateParent работает — используй его.

                                                                      Если найдешь ошибку в pdoField — запости на github, чтобы я ее поправил.
                                                                      Работать должно как в UltimateParent
                                                                      Да это ошибка.
                                                                      И Василий дал понять ясно что пока ему некогда разбираться и искать ее. Просьбой прислать коммит исправления.
                                                                      1. Василий Наумкин 15 марта 2014, 17:03 # 0
                                                                        Если считаешь, что это баг — пиши в багтрекер.

                                                                        Если нет — нет.

                                                                        Я сам не помню как оно должно работать, потому что, только не смейся, не пользуюсь этим сниппетом. Он написан для вас — вы и говорите, как должно быть.
                                                                        1. Dmitry Rodionov 16 марта 2014, 00:18 # 0
                                                                          Отписался с фиксом
                                                            Добавление новых комментариев отключено.