мета при добавлении товара и не заниматься каким-то космическими обсчетами на всех стадиях?)
$categories = ''; if (count($parents) > 1) { $categoryParams = array_merge([ 'tpl' => '@FILE:comparison_category', 'ownerTPL' => '@FILE:comparison_categories', 'itemClass' => 'btn-secondary', 'activeClass' => 'btn-primary', 'prepare' => function($data, $modx, $DL, $eDL) { $data['class'] = $DL->getCFGDef('currentId') == $data['id'] ? $DL->getCFGDef('activeClass') : $DL->getCFGDef('itemClass'); return $data; }, ], $categoryParams, [ 'controller' => 'CustomLang', 'dir' => 'assets/plugins/commerce/src/Controllers/', 'currentId' => $currentCategory, 'idType' => 'documents', 'documents' => $parents, 'sortType' => 'doclist', ]); $categories = $modx->runSnippet('DocLister', $categoryParams); } $ids = $modx->db->getColumn('id', $modx->db->select('id', $table, "`parent` = '$currentCategory' AND `id` IN ('" . implode("','", array_unique($items)) . "')")); } else { $ids = array_values(array_unique($items)); $currentCategory = 0; } $params = array_merge([ 'ownerTPL' => '@FILE:comparison_table', 'headerTpl' => '@FILE:comparison_table_header_cell', 'footerTpl' => '@FILE:comparison_table_footer_cell', 'keyTpl' => '@FILE:comparison_table_key_cell', 'valueTpl' => '@FILE:comparison_table_value_cell', 'rowTpl' => '@FILE:comparison_table_row', 'customLang' => 'common,cart', ], $params, [ 'controller' => 'Comparison', 'dir' => 'assets/plugins/commerce/src/Controllers/', 'idType' => 'documents', 'sortType' => 'doclist', 'documents' => $ids, 'category' => $currentCategory, 'rows' => array_flip($items), ]); $docs = $modx->runSnippet('DocLister', $params); Вот такое внутри сниппета Comparison. То есть сначала доклистер для категорий, там, кстати, он тоже с лямбдой, и потом доклистер для товаров.
Советую ознакомиться: DocLister Commerce
Обсуждают сегодня