Наумов Алексей

Наумов Алексей

Был в сети 28 июля 2026, 14:21
Заказы принимаю
как бы аналогично этому компоненту
modstore.pro/packages/ecommerce/looked
но:
1. не знаю, можно ли сниппету addLooked передать произвольный id, ведь по-умолчанию он просто текущую страницу добавляет
2. при удалении товара из корзины страница не обновляется, все через ajax.
Ни-че-го не понятно!

pdoPage — постраничный вывод
msProducts — выводим товары
parents — из указанной категории
limit — по 8 штук
sortby — сортируя по менюиндекс (sortdir скорее всего не учитывается теперь)

что надо то? Что написано в коде — то и делается.
Я бы в сниппет всю логику убрал…
Будет красивее и правильнее, нечего логике в разметке делать.

если не считать возможных опечаток, то как-то так:
$profile = $modx->user->getOne('Profile');
$extended = $profile->get('extended');
// здесь нужно посмотреть, $extended это уже массив?
$kp = $extended['ваш ключ'];

// получаем товар, если их несколько, то getCollection и цикл
// или msProducts вместо modResource
$product = $modx->getObject('modResource', array('pagetitle' => $kp, 'published' => 1, 'deleted' => 0));
$data = $product->get('ваше поле');
// или все поля
$data = $product->toArray();

$modx->getChunk('ЧАНК с разметкой', $data);
$id = isset($_REQUEST['id']) ? (int) $_REQUEST['id'] : 0;
if (empty($id)) {
    exit();
};

$resource = $modx->getObject('modResource', $id);

// ресурс есть, он опубликован и не удален
if(!$resource || !$resource->get('published') || $resource->get('deleted')) {
    exit();
}
// еще бы проверку добавить, что это товар, а не какая-либо другая страница

$data = $resource->toArray();
$data['some_tv'] = $resource->getTVValue('some_tv');

return $modx->getChunk('ВАШ_ЧАНК_С_HTML', $data);
Пример вывода сниппета ecThreadRating:
<div class="ec-stars" title="4.5" itemscope itemtype="http://schema.org/AggregateRating">
    <meta itemprop="ratingValue" content="4.5" />
    <meta itemprop="bestRating" content="5" />
    <meta itemprop="worstRating" content="1" />
    <meta itemprop="ratingCount" content="2" />
    <span style="width: 90%"></span>
</div>
Вы можете переопределить любой чанк и настроить вывод под себя.
У меня нет свежего кода mSearch2.

Но в старом я за 2 минуты нашел код подключения файла кастомных фильтров в файле msearch2.class.php:

public function loadCustomClasses($dir)
{
...
include $customPath . '/' . $file;
...
}
здесь используется include. В вашем случае он кажется 2 раза вызывается, и пытается еще раз объявить класс myCustomFilter, который уже объявлен.

Ищите, почему 2 раза подключается!