Готов заплатить за помощь! Выборка по параметрам текущего ресурса.

Приветствую, подскажите пожалуйста, я уже вторые сутки бьюсь с этим… как указать правильно в where опцию текущего ресурса?
Допусти я вызываю на странице товара:
[[!msProducts?
			  &tpl=`gridProductTpl`
			  &parents=`0`
			  &where=`тут нужно фильтрануть по полям color и series из текущего товара`
			  ]]
тоесть, чтобы поля color и series, брались из товара который на страничке.

<!DOCTYPE html>
<html lang="ru">
  <head>
    [[$meta]]
	[[$title]]
	[[$head]]
  </head><!--/head-->
  <style>
	.pic {
	  text-align: center; /* Выравнивания картинки по центру в html */ 
	}
  </style>
  <body>
	[[$headerShop]]
	[[$breadcrumbsCart]]
	<section>
	  <div class="container">
		<div class="row">
		  <div class="col-sm-12 padding-right">
			<div class="product-details"><!--product-details-->
			  <div class="col-sm-5">
				<div class="view-product" style="center-pic">
				  [[msGallery]]
				</div>
			  </div>
			  <div class="col-sm-7">
				<div class="product-information"><!--/product-information-->
				  <form class="form-horizontal ms2_form" method="post">
					<input type="hidden" name="id" value="[[*id]]"/>
					<div class="bs-example" style="margin-bottom: 40px;">
				    [[+new:!empty=`<span class="label label-danger">Новинка</span>`]]
				    [[+favorite:!empty=`<span class="label label-success">Скидка</span>`]]
				    [[+popular:!empty=`<span class="label label-info">Рекомендуем</span>`]]
					</div>
					<h2>[[*pagetitle]]</h2>
			  <a href="[[~[[+vendor.resource]]]]"><img src="[[+vendor.logo]]"></a>
			  </br> [[!msOptions?
			          &tpl=`msOptionsTpl`
	                    &options=`series`
                    ]]
			  </br>[[!msOptions?
			          &tpl=`msOptionsTpl1`
	                    &options=`color`
                    ]]
			  </br>Страна: [[+vendor.country]]
			  </br>Артикул: [[+article]]
			  </br>
			<span>
			  <span>[[+price]] [[%ms2_frontend_currency]]</span>
			  <label>Количество:</label>
			  <input type="number" name="count" value="1" />
			  <button type="submit" name="ms2_action" value="cart/add" class="btn btn-fefault cart">
				<i class="fa fa-shopping-cart"></i>
				В корзину
			  </button>
			</span>
			<a href=""><img src="assets/images/product-details/share.png" class="share img-responsive"  alt="" /></a>
		  </div><!--/product-information-->
		</div>
	  </form>
	</div><!--/product-details-->
	<div class="category-tab shop-details-tab"><!--category-tab-->
	  <div class="col-sm-12">
		<ul class="nav nav-tabs">
		  <li class="active"><a href="#reviews" data-toggle="tab">Краткое описание</a></li>
		  <li><a href="#components" data-toggle="tab">Компоненты</a></li>
		  <li><a href="#vendorinfo" data-toggle="tab">О производителе</a></li>
		  <li><a href="#comments" data-toggle="tab">Отзывы</a></li>
		</ul>
	  </div>
		<div class="tab-content">
		<div class="tab-pane" id="comments" >
			<div class="col-sm-12">
				[[!TicketComments?
				&allowGuest=`1`
				&tplCommentFormGuest=`commentFormTpl`
				&tplCommentGuest=`commentTpl`
				&tplCommentAuth=`commentTpl`
				&tplComments=`commentsWrapperTpl`
				&gravatarSize=`70`
				]]
			</div>
		</div>
		<div class="tab-pane" id="vendorinfo" >
		  <div class="col-sm-12">
			[[$vendorInfoT]]
		  </div>
		</div>
		<div class="tab-pane" id="components" >
		  <div class="col-sm-12">
			  [[!msProducts?
			  &tpl=`gridProductTpl`
			  &parents=`0`
			  &link=`4`
			  &master=`[[*id]]`
			  ]]
		  </div>
		</div>
		<div class="tab-pane fade active in" id="reviews" >
		  <div class="col-sm-12">
			<p>[[*introtext]]</p>
			[[msProductOptions?
			&tpl=`productOptionsTpl`
			]]
			<p><img src="[[getQRcode]]" /></p>
		  </div>
		</div>
	  </div>
	</div><!--/category-tab-->
                        
                          [[!msProducts?
			  &tpl=`gridProductTpl`
			  &parents=`0`
			  &where=`тут нужно фильтрануть по полям color и series из текущего товара`
			  ]]

  </div>
</div>
</div>
</section>
[[$footer]]
[[$scripts]]
<script>requirejs(["app/community", "app/counters"]);</script>
</body>
</html>
Вот какие параметры вытаскиваются вообще, если лог включен
[[msProducts?
	&tpl=`featureProductTpl`
	&showLog=`1`
	&parents=`0`
        ]]
Сам лог
0.0003290: pdoTools loaded.
0.0008061: Conditions prepared
0.0001059: xPDO query object created
0.0006080: leftJoined msProductData as Data
0.0004361: leftJoined msVendor as Vendor
0.0000169: Grouped by msProduct.id
0.0001130: Added selection of msProduct: `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `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`
0.0000679: Added selection of msProductData: `article`, `price`, `old_price`, `weight`, `image`, `thumb`, `vendor`, `made_in`, `new`, `popular`, `favorite`, `tags`, `color`, `size`, `source`, `availability`, `series`, `sort`
0.0000720: Added selection of msVendor: `name` AS `vendor.name`, `resource` AS `vendor.resource`, `country` AS `vendor.country`, `logo` AS `vendor.logo`, `address` AS `vendor.address`, `phone` AS `vendor.phone`, `fax` AS `vendor.fax`, `email` AS `vendor.email`, `description` AS `vendor.description`, `properties` AS `vendor.properties`
0.0000539: Processed additional conditions
0.0005679: Added where condition: class_key=msProduct, msProduct.published=1, msProduct.deleted=0
0.0001209: Sorted by msProduct.id, ASC
0.0000069: Limited to 10, offset 0
0.0008540: SQL prepared "SELECT `msProduct`.`id`, `msProduct`.`type`, `msProduct`.`contentType`, `msProduct`.`pagetitle`, `msProduct`.`longtitle`, `msProduct`.`description`, `msProduct`.`alias`, `msProduct`.`link_attributes`, `msProduct`.`published`, `msProduct`.`pub_date`, `msProduct`.`unpub_date`, `msProduct`.`parent`, `msProduct`.`isfolder`, `msProduct`.`introtext`, `msProduct`.`richtext`, `msProduct`.`template`, `msProduct`.`menuindex`, `msProduct`.`searchable`, `msProduct`.`cacheable`, `msProduct`.`createdby`, `msProduct`.`createdon`, `msProduct`.`editedby`, `msProduct`.`editedon`, `msProduct`.`deleted`, `msProduct`.`deletedon`, `msProduct`.`deletedby`, `msProduct`.`publishedon`, `msProduct`.`publishedby`, `msProduct`.`menutitle`, `msProduct`.`donthit`, `msProduct`.`privateweb`, `msProduct`.`privatemgr`, `msProduct`.`content_dispo`, `msProduct`.`hidemenu`, `msProduct`.`class_key`, `msProduct`.`context_key`, `msProduct`.`content_type`, `msProduct`.`uri`, `msProduct`.`uri_override`, `msProduct`.`hide_children_in_tree`, `msProduct`.`show_in_tree`, `msProduct`.`properties`, `Data`.`article`, `Data`.`price`, `Data`.`old_price`, `Data`.`weight`, `Data`.`image`, `Data`.`thumb`, `Data`.`vendor`, `Data`.`made_in`, `Data`.`new`, `Data`.`popular`, `Data`.`favorite`, `Data`.`tags`, `Data`.`color`, `Data`.`size`, `Data`.`source`, `Data`.`availability`, `Data`.`series`, `Data`.`sort`, `Vendor`.`name` AS `vendor.name`, `Vendor`.`resource` AS `vendor.resource`, `Vendor`.`country` AS `vendor.country`, `Vendor`.`logo` AS `vendor.logo`, `Vendor`.`address` AS `vendor.address`, `Vendor`.`phone` AS `vendor.phone`, `Vendor`.`fax` AS `vendor.fax`, `Vendor`.`email` AS `vendor.email`, `Vendor`.`description` AS `vendor.description`, `Vendor`.`properties` AS `vendor.properties` FROM `site_site_content` AS `msProduct` LEFT JOIN `site_ms2_products` `Data` ON `msProduct`.`id` =  `Data`.`id` LEFT JOIN `site_ms2_vendors` `Vendor` ON Data.vendor=Vendor.id WHERE  ( `msProduct`.`class_key` = 'msProduct' AND `msProduct`.`published` = 1 AND `msProduct`.`deleted` = 0 )  GROUP BY msProduct.id ORDER BY msProduct.id ASC LIMIT 10 "
0.0005500: SQL executed
0.0005229: Rows fetched
0.0010002: Returning raw data
0.0036218: Checked the active modifiers
0.0046482: Loaded "modChunk" with name "featureProductTpl"
0.0097759: Compiled Fenom chunk with name "modchunk/108"
0.0137429: Time to load products options
0.1659710: Total time
23 592 960: Memory usage
Pavel
05 декабря 2018, 14:47
modx.pro
1 210
0

Комментарии: 8

Vlad Brise
07 декабря 2018, 09:37
+3
Попробуй так, на феноме
{set $color = $_modx->resource.color}
{set $series = $_modx->resource.series}
{'!msProducts'|snippet:[
'parents' => 0,
'tpl' => 'gridProductTpl',
'where' => [
    'Data.color' => $color,
    'Data.series' => $series
    ]
]}
    Pavel
    11 декабря 2018, 09:04
    0
    у меня с феномом на сайте почему то не грузятся странички, вообще, пустая загружается при малейшем коде фенома на странице, даже через чанки.
    Вот такая ошибка падает.
    [2018-12-11 09:13:20] (ERROR @ C:\Site\OSPanel\domains\localhost\core\components\pdotools\model\pdotools\pdotools.class.php: 989) Unexpected tag 'parent' (this tag can be used with 'block') in 045eb54d7a0fb9871b507200a46554fd line 419, near '{parent:' < — there
      Андрей
      11 декабря 2018, 10:49
      0
      В тексте даже указана строка и сама ошибка =))

      Unexpected tag 'parent' (this tag can be used with 'block') in 045eb54d7a0fb9871b507200a46554fd line 419, near '{parent:'
      На 419 строке надо поставить пробел после фигурной скобки — { parent. Ну и если другие ошибки будут, исправить тем же способом.

      Включение pdotools_fenom_parser позволяет использовать синтаксис Fenom прямо в контенте документов и шаблонах страниц, но есть один нюанс — шаблонизатор может неверно реагировать на фигурные скобочки, которые в MODX очень любят.

      Если вы планируете включить Fenom глобально для всего сайта, вам нужно проверить, на всех ли страницах он нормально работает.
        Pavel
        11 декабря 2018, 11:29
        0
        419 строка такая? $this->fenom($data, $properties)
        Но modDevTools помог найти этот косяк. Спасибо за подсказку)))
        Страница теперь загружается… буду смотреть что с кодом
        Vlad Brise
        11 декабря 2018, 15:46
        +2
        Потому что у тебя конфликтуют спецсимволы фенома с другими скриптами, скорее всего с js, который непосредственно на странице записан, а не в отдельном файле. В логе пишет, что возле слова parent стоит {, после фигурной скобки поставь пробел и все заработает. После всех вообще фигурных скобок в скрипте поставь пробелы
      Pavel
      11 декабря 2018, 11:44
      0
      Блок товара всё таки не как не загружается, при 'showLog' => '1', страничка пустая…
      Хотел бы узнать, у меня после сохранения странички вечная ошибка
      Parse error: syntax error, unexpected '<' in C:\Site\OSPanel\domains\localhost\core\cache\includes\elements\modsnippet\54.include.cache.php on line 217
      Ругается на любой файлик кэша, там проблема такого рода…
      код дублируется, тоесть после
      }
      return;
      код вновь повторяется…
      <?php
      /** @var array $scriptProperties */
      /** @var pdoFetch $pdoFetch */
      я это побороть уже давно не могу, приходится постоянно вручную чистить кэш…
      вот полны код файла

      <?php
      /** @var array $scriptProperties */
      /** @var pdoFetch $pdoFetch */
      $fqn = $modx->getOption('pdoFetch.class', null, 'pdotools.pdofetch', true);
      $path = $modx->getOption('pdofetch_class_path', null, MODX_CORE_PATH . 'components/pdotools/model/', true);
      if ($pdoClass = $modx->loadClass($fqn, $path, false, true)) {
          $pdoFetch = new $pdoClass($modx, $scriptProperties);
      } else {
          return false;
      }
      $pdoFetch->addTime('pdoTools loaded');
      
      if (!isset($from) || $from == '') {
          $from = 0;
      }
      if (empty($to)) {
          $to = $modx->resource->id;
      }
      if (empty($direction)) {
          $direction = 'ltr';
      }
      if ($outputSeparator == '&nbsp;&rarr;&nbsp;' && $direction == 'rtl') {
          $outputSeparator = '&nbsp;&larr;&nbsp;';
      }
      if ($limit == '') {
          $limit = 10;
      }
      // For compatibility with BreadCrumb
      if (!empty($maxCrumbs)) {
          $limit = $maxCrumbs;
      }
      if (!empty($containerTpl)) {
          $tplWrapper = $containerTpl;
      }
      if (!empty($currentCrumbTpl)) {
          $tplCurrent = $currentCrumbTpl;
      }
      if (!empty($linkCrumbTpl)) {
          $scriptProperties['tpl'] = $linkCrumbTpl;
      }
      if (!empty($maxCrumbTpl)) {
          $tplMax = $maxCrumbTpl;
      }
      if (isset($showBreadCrumbsAtHome)) {
          $showAtHome = $showBreadCrumbsAtHome;
      }
      if (isset($showHomeCrumb)) {
          $showHome = $showHomeCrumb;
      }
      if (isset($showCurrentCrumb)) {
          $showCurrent = $showCurrentCrumb;
      }
      // --
      $fastMode = !empty($fastMode);
      $siteStart = $modx->getOption('siteStart', $scriptProperties, $modx->getOption('site_start'));
      
      if (empty($showAtHome) && $modx->resource->id == $siteStart) {
          return '';
      }
      
      $class = $modx->getOption('class', $scriptProperties, 'modResource');
      // Start building "Where" expression
      $where = array();
      if (empty($showUnpublished) && empty($showUnPub)) {
          $where['published'] = 1;
      }
      if (empty($showHidden)) {
          $where['hidemenu'] = 0;
      }
      if (empty($showDeleted)) {
          $where['deleted'] = 0;
      }
      if (!empty($hideContainers) && empty($showContainer)) {
          $where['isfolder'] = 0;
      }
      
      $resource = ($to == $modx->resource->id)
          ? $modx->resource
          : $modx->getObject($class, $to);
      
      if (!$resource) {
          $message = 'Could not build breadcrumbs to resource "' . $to . '"';
      
          return '';
      }
      
      $parents = $modx->getParentIds($resource->id, $limit, array('context' => $resource->get('context_key')));
      if (!empty($showHome)) {
          $parents[] = $siteStart;
      }
      
      $ids = array($resource->id);
      foreach ($parents as $parent) {
          if (!empty($parent)) {
              $ids[] = $parent;
          }
          if (!empty($from) && $parent == $from) {
              break;
          }
      }
      $where['id:IN'] = $ids;
      
      if (!empty($exclude)) {
          $where['id:NOT IN'] = array_map('trim', explode(',', $exclude));
      }
      
      // Fields to select
      $resourceColumns = array_keys($modx->getFieldMeta($class));
      $select = array($class => implode(',', $resourceColumns));
      
      // Add custom parameters
      foreach (array('where', 'select') as $v) {
          if (!empty($scriptProperties[$v])) {
              $tmp = $scriptProperties[$v];
              if (!is_array($tmp)) {
                  $tmp = json_decode($tmp, true);
              }
              if (is_array($tmp)) {
                  $$v = array_merge($$v, $tmp);
              }
          }
          unset($scriptProperties[$v]);
      }
      $pdoFetch->addTime('Conditions prepared');
      
      // Default parameters
      $default = array(
          'class' => $class,
          'where' => json_encode($where),
          'select' => json_encode($select),
          'groupby' => $class . '.id',
          'sortby' => "find_in_set(`$class`.`id`,'" . implode(',', $ids) . "')",
          'sortdir' => '',
          'return' => 'data',
          'totalVar' => 'pdocrumbs.total',
          'disableConditions' => true,
      );
      
      // Merge all properties and run!
      $pdoFetch->addTime('Query parameters ready');
      $pdoFetch->setConfig(array_merge($default, $scriptProperties), false);
      $rows = $pdoFetch->run();
      
      $output = array();
      if (!empty($rows) && is_array($rows)) {
          if (strtolower($direction) == 'ltr') {
              $rows = array_reverse($rows);
          }
      
          foreach ($rows as $row) {
              if (!empty($useWeblinkUrl) && $row['class_key'] == 'modWebLink') {
                  $row['link'] = is_numeric(trim($row['content'], '[]~ '))
                      ? $pdoFetch->makeUrl(intval(trim($row['content'], '[]~ ')), $row)
                      : $row['content'];
              } else {
                  $row['link'] = $pdoFetch->makeUrl($row['id'], $row);
              }
      
              $row = array_merge(
                  $scriptProperties,
                  $row,
                  array('idx' => $pdoFetch->idx++)
              );
              if (empty($row['menutitle'])) {
                  $row['menutitle'] = $row['pagetitle'];
              }
      
              if ($row['id'] == $resource->id && empty($showCurrent)) {
                  continue;
              } elseif ($row['id'] == $resource->id && !empty($tplCurrent)) {
                  $tpl = $tplCurrent;
              } elseif ($row['id'] == $siteStart && !empty($tplHome)) {
                  $tpl = $tplHome;
              } else {
                  $tpl = $pdoFetch->defineChunk($row);
              }
              $output[] = empty($tpl)
                  ? '<pre>' . $pdoFetch->getChunk('', $row) . '</pre>'
                  : $pdoFetch->getChunk($tpl, $row, $fastMode);
          }
      }
      $pdoFetch->addTime('Chunks processed');
      
      if (count($output) == 1 && !empty($hideSingle)) {
          $pdoFetch->addTime('The only result was hidden, because the parameter "hideSingle" activated');
          $output = array();
      }
      
      $log = '';
      if ($modx->user->hasSessionContext('mgr') && !empty($showLog)) {
          $log .= '<pre class="pdoCrumbsLog">' . print_r($pdoFetch->getTime(), 1) . '</pre>';
      }
      
      if (!empty($toSeparatePlaceholders)) {
          $output['log'] = $log;
          $modx->setPlaceholders($output, $toSeparatePlaceholders);
      } else {
          $output = implode($outputSeparator, $output);
          if ($pdoFetch->idx >= $limit && !empty($tplMax) && !empty($output)) {
              $output = ($direction == 'ltr')
                  ? $pdoFetch->getChunk($tplMax, array(), $fastMode) . $output
                  : $output . $pdoFetch->getChunk($tplMax, array(), $fastMode);
          }
          $output .= $log;
      
          if (!empty($tplWrapper) && (!empty($wrapIfEmpty) || !empty($output))) {
              $output = $pdoFetch->getChunk($tplWrapper, array('output' => $output, 'crumbs' => $output), $fastMode);
          }
      
          if (!empty($toPlaceholder)) {
              $modx->setPlaceholder($toPlaceholder, $output);
          } else {
              return $output;
          }
      }
      return;
      <?php
      /** @var array $scriptProperties */
      /** @var pdoFetch $pdoFetch */
      $fqn = $modx->getOption('pdoFetch.class', null, 'pdotools.pdofetch', true);
      $path = $modx->getOption('pdofetch_class_path', null, MODX_CORE_PATH . 'components/pdotools/model/', true);
      if ($pdoClass = $modx->loadClass($fqn, $path, false, true)) {
          $pdoFetch = new $pdoClass($modx, $scriptProperties);
      } else {
          return false;
      }
      $pdoFetch->addTime('pdoTools loaded');
      
      if (!isset($from) || $from == '') {
          $from = 0;
      }
      if (empty($to)) {
          $to = $modx->resource->id;
      }
      if (empty($direction)) {
          $direction = 'ltr';
      }
      if ($outputSeparator == '&nbsp;&rarr;&nbsp;' && $direction == 'rtl') {
          $outputSeparator = '&nbsp;&larr;&nbsp;';
      }
      if ($limit == '') {
          $limit = 10;
      }
      // For compatibility with BreadCrumb
      if (!empty($maxCrumbs)) {
          $limit = $maxCrumbs;
      }
      if (!empty($containerTpl)) {
          $tplWrapper = $containerTpl;
      }
      if (!empty($currentCrumbTpl)) {
          $tplCurrent = $currentCrumbTpl;
      }
      if (!empty($linkCrumbTpl)) {
          $scriptProperties['tpl'] = $linkCrumbTpl;
      }
      if (!empty($maxCrumbTpl)) {
          $tplMax = $maxCrumbTpl;
      }
      if (isset($showBreadCrumbsAtHome)) {
          $showAtHome = $showBreadCrumbsAtHome;
      }
      if (isset($showHomeCrumb)) {
          $showHome = $showHomeCrumb;
      }
      if (isset($showCurrentCrumb)) {
          $showCurrent = $showCurrentCrumb;
      }
      // --
      $fastMode = !empty($fastMode);
      $siteStart = $modx->getOption('siteStart', $scriptProperties, $modx->getOption('site_start'));
      
      if (empty($showAtHome) && $modx->resource->id == $siteStart) {
          return '';
      }
      
      $class = $modx->getOption('class', $scriptProperties, 'modResource');
      // Start building "Where" expression
      $where = array();
      if (empty($showUnpublished) && empty($showUnPub)) {
          $where['published'] = 1;
      }
      if (empty($showHidden)) {
          $where['hidemenu'] = 0;
      }
      if (empty($showDeleted)) {
          $where['deleted'] = 0;
      }
      if (!empty($hideContainers) && empty($showContainer)) {
          $where['isfolder'] = 0;
      }
      
      $resource = ($to == $modx->resource->id)
          ? $modx->resource
          : $modx->getObject($class, $to);
      
      if (!$resource) {
          $message = 'Could not build breadcrumbs to resource "' . $to . '"';
      
          return '';
      }
      
      $parents = $modx->getParentIds($resource->id, $limit, array('context' => $resource->get('context_key')));
      if (!empty($showHome)) {
          $parents[] = $siteStart;
      }
      
      $ids = array($resource->id);
      foreach ($parents as $parent) {
          if (!empty($parent)) {
              $ids[] = $parent;
          }
          if (!empty($from) && $parent == $from) {
              break;
          }
      }
      $where['id:IN'] = $ids;
      
      if (!empty($exclude)) {
          $where['id:NOT IN'] = array_map('trim', explode(',', $exclude));
      }
      
      // Fields to select
      $resourceColumns = array_keys($modx->getFieldMeta($class));
      $select = array($class => implode(',', $resourceColumns));
      
      // Add custom parameters
      foreach (array('where', 'select') as $v) {
          if (!empty($scriptProperties[$v])) {
              $tmp = $scriptProperties[$v];
              if (!is_array($tmp)) {
                  $tmp = json_decode($tmp, true);
              }
              if (is_array($tmp)) {
                  $$v = array_merge($$v, $tmp);
              }
          }
          unset($scriptProperties[$v]);
      }
      $pdoFetch->addTime('Conditions prepared');
      
      // Default parameters
      $default = array(
          'class' => $class,
          'where' => json_encode($where),
          'select' => json_encode($select),
          'groupby' => $class . '.id',
          'sortby' => "find_in_set(`$class`.`id`,'" . implode(',', $ids) . "')",
          'sortdir' => '',
          'return' => 'data',
          'totalVar' => 'pdocrumbs.total',
          'disableConditions' => true,
      );
      
      // Merge all properties and run!
      $pdoFetch->addTime('Query parameters ready');
      $pdoFetch->setConfig(array_merge($default, $scriptProperties), false);
      $rows = $pdoFetch->run();
      
      $output = array();
      if (!empty($rows) && is_array($rows)) {
          if (strtolower($direction) == 'ltr') {
              $rows = array_reverse($rows);
          }
      
          foreach ($rows as $row) {
              if (!empty($useWeblinkUrl) && $row['class_key'] == 'modWebLink') {
                  $row['link'] = is_numeric(trim($row['content'], '[]~ '))
                      ? $pdoFetch->makeUrl(intval(trim($row['content'], '[]~ ')), $row)
                      : $row['content'];
              } else {
                  $row['link'] = $pdoFetch->makeUrl($row['id'], $row);
              }
      
              $row = array_merge(
                  $scriptProperties,
                  $row,
                  array('idx' => $pdoFetch->idx++)
              );
              if (empty($row['menutitle'])) {
                  $row['menutitle'] = $row['pagetitle'];
              }
      
              if ($row['id'] == $resource->id && empty($showCurrent)) {
                  continue;
              } elseif ($row['id'] == $resource->id && !empty($tplCurrent)) {
                  $tpl = $tplCurrent;
              } elseif ($row['id'] == $siteStart && !empty($tplHome)) {
                  $tpl = $tplHome;
              } else {
                  $tpl = $pdoFetch->defineChunk($row);
              }
              $output[] = empty($tpl)
                  ? '<pre>' . $pdoFetch->getChunk('', $row) . '</pre>'
                  : $pdoFetch->getChunk($tpl, $row, $fastMode);
          }
      }
      $pdoFetch->addTime('Chunks processed');
      
      if (count($output) == 1 && !empty($hideSingle)) {
          $pdoFetch->addTime('The only result was hidden, because the parameter "hideSingle" activated');
          $output = array();
      }
      
      $log = '';
      if ($modx->user->hasSessionContext('mgr') && !empty($showLog)) {
          $log .= '<pre class="pdoCrumbsLog">' . print_r($pdoFetch->getTime(), 1) . '</pre>';
      }
      
      if (!empty($toSeparatePlaceholders)) {
          $output['log'] = $log;
          $modx->setPlaceholders($output, $toSeparatePlaceholders);
      } else {
          $output = implode($outputSeparator, $output);
          if ($pdoFetch->idx >= $limit && !empty($tplMax) && !empty($output)) {
              $output = ($direction == 'ltr')
                  ? $pdoFetch->getChunk($tplMax, array(), $fastMode) . $output
                  : $output . $pdoFetch->getChunk($tplMax, array(), $fastMode);
          }
          $output .= $log;
      
          if (!empty($tplWrapper) && (!empty($wrapIfEmpty) || !empty($output))) {
              $output = $pdoFetch->getChunk($tplWrapper, array('output' => $output, 'crumbs' => $output), $fastMode);
          }
      
          if (!empty($toPlaceholder)) {
              $modx->setPlaceholder($toPlaceholder, $output);
          } else {
              return $output;
          }
      }
      return;
        Pavel
        11 декабря 2018, 11:48
        0
        Нашел косяк с феномом))
        Стиль был указал в начале странички, запихнул в {ignore}{/ignore}
        Вот лог:
        0.0001810: pdoTools loaded.
        0.0004821: Conditions prepared
        0.0000639: xPDO query object created
        0.0003569: leftJoined msProductData as Data
        0.0002632: leftJoined msVendor as Vendor
        0.0000050: Grouped by msProduct.id
        0.0000770: Added selection of msProduct: `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `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`
        0.0000429: Added selection of msProductData: `article`, `price`, `old_price`, `weight`, `image`, `thumb`, `vendor`, `made_in`, `new`, `popular`, `favorite`, `tags`, `color`, `size`, `source`, `availability`, `series`, `sort`
        0.0000401: Added selection of msVendor: `name` AS `vendor.name`, `resource` AS `vendor.resource`, `country` AS `vendor.country`, `logo` AS `vendor.logo`, `address` AS `vendor.address`, `phone` AS `vendor.phone`, `fax` AS `vendor.fax`, `email` AS `vendor.email`, `description` AS `vendor.description`, `properties` AS `vendor.properties`
        0.0000510: Processed additional conditions
        0.0004640: Added where condition: class_key=msProduct, Data.color(серебряный), Data.series(Tacto), msProduct.published=1, msProduct.deleted=0
        0.0001159: Sorted by msProduct.id, ASC
        0.0000060: Limited to 10, offset 0
        0.0020580: SQL prepared "SELECT `msProduct`.`id`, `msProduct`.`type`, `msProduct`.`contentType`, `msProduct`.`pagetitle`, `msProduct`.`longtitle`, `msProduct`.`description`, `msProduct`.`alias`, `msProduct`.`link_attributes`, `msProduct`.`published`, `msProduct`.`pub_date`, `msProduct`.`unpub_date`, `msProduct`.`parent`, `msProduct`.`isfolder`, `msProduct`.`introtext`, `msProduct`.`richtext`, `msProduct`.`template`, `msProduct`.`menuindex`, `msProduct`.`searchable`, `msProduct`.`cacheable`, `msProduct`.`createdby`, `msProduct`.`createdon`, `msProduct`.`editedby`, `msProduct`.`editedon`, `msProduct`.`deleted`, `msProduct`.`deletedon`, `msProduct`.`deletedby`, `msProduct`.`publishedon`, `msProduct`.`publishedby`, `msProduct`.`menutitle`, `msProduct`.`donthit`, `msProduct`.`privateweb`, `msProduct`.`privatemgr`, `msProduct`.`content_dispo`, `msProduct`.`hidemenu`, `msProduct`.`class_key`, `msProduct`.`context_key`, `msProduct`.`content_type`, `msProduct`.`uri`, `msProduct`.`uri_override`, `msProduct`.`hide_children_in_tree`, `msProduct`.`show_in_tree`, `msProduct`.`properties`, `Data`.`article`, `Data`.`price`, `Data`.`old_price`, `Data`.`weight`, `Data`.`image`, `Data`.`thumb`, `Data`.`vendor`, `Data`.`made_in`, `Data`.`new`, `Data`.`popular`, `Data`.`favorite`, `Data`.`tags`, `Data`.`color`, `Data`.`size`, `Data`.`source`, `Data`.`availability`, `Data`.`series`, `Data`.`sort`, `Vendor`.`name` AS `vendor.name`, `Vendor`.`resource` AS `vendor.resource`, `Vendor`.`country` AS `vendor.country`, `Vendor`.`logo` AS `vendor.logo`, `Vendor`.`address` AS `vendor.address`, `Vendor`.`phone` AS `vendor.phone`, `Vendor`.`fax` AS `vendor.fax`, `Vendor`.`email` AS `vendor.email`, `Vendor`.`description` AS `vendor.description`, `Vendor`.`properties` AS `vendor.properties` FROM `site_site_content` AS `msProduct` LEFT JOIN `site_ms2_products` `Data` ON `msProduct`.`id` =  `Data`.`id` LEFT JOIN `site_ms2_vendors` `Vendor` ON Data.vendor=Vendor.id WHERE  ( `msProduct`.`class_key` = 'msProduct' AND `Data`.`color` =  AND `Data`.`series` =  AND `msProduct`.`published` = 1 AND `msProduct`.`deleted` = 0 )  GROUP BY msProduct.id ORDER BY msProduct.id ASC LIMIT 10 "
        0.0001848: SQL executed
        0.0000160: Rows fetched
        0.0000191: Returning raw data
        0.0047321: Total time
        22 282 240: Memory usage
        Но товар ни какой не выводит.
          Pavel
          11 декабря 2018, 14:25
          0
          [2018-12-11 13:55:02] (ERROR @ C:\Site\OSPanel\domains\localhost\core\xpdo\xpdo.class.php: 2553) PHP warning: PDO::quote() expects parameter 1 to be string, array given

          И вот такая ошибка, пишет, мол ожидалась строка, а там массив.
          Ну параметры color и series являются json объектами.
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            8