Николай, подскажи пжлста
остальные чанки редактируются без проблем
так где она находится то? я хочу в ней отредактировать чанк. (потому что по не понятным причинам в разделе элементы при редактировании одного чанка изменения не происходят, т.е. он сохраняется в админке, а на самом сайте нет)
Не в директории, а в базе данных. Это таблица.
Я новичок, подскажите в какой директории искать файл modx_site_htmlsnippets?
ОК. Пробуйте так в процессоре web/catalog/products/getdata:
protected function setSelection(xPDOQuery $c) { $c = parent::setSelection($c); ..................... if($user_id = $this->modx->user->id){ $OrdersTable = $this->modx->getTableName('Order'); $OrderProductTable = $this->modx->getTableName('OrderProduct'); $c->select(array( "(select count(*) FROM {$OrdersTable} o INNER JOIN {$OrderProductTable} pt on o.id = pt.order_id where pt.product_id = Product.id AND o.contractor = {$user_id} ) as `exists`", )); } return $c; }
Добрый день, Николай. Думается что условие обязательное ведь речь идет не только о текущей корзине, а вообще о тех товарах которые когда либо купил данный пользователь
$this внутри кода сниппета — это и есть сниппет.
Как получить имя и id сниппета из кода самого сниппета? Не передавая эти данные в сам сниппет (как это рекомендует BobRay вот здесь)
Полгода назад видел на каком-то форуме (вроде, community.modx-cms.ru) — было предложено решение. Тогда не проверил и не сохранил информацию. А вот сейчас приспичило.
Парсер modx вызывает сниппеты как функции и единственный способ добраться до имени сниппета — поля парсера (modx->parser). Но у парсера (согласно исходникам) нет полей, отвечающих за имя скрипта, выполняющегося в данный момент (только флаги _processingTag и _processingElement).
Можно было бы сказать, что задачу решить нельзя. Но ведь было решение. Было предложено решение, которое не могу нигде найти…
Собственно, и это гораздо меньше по объему, чем представленная в топике функция.