Евгений
С нами с 10 октября 2018; Место в рейтинге пользователей: #2191вывод всех опций из категории
Добрый день!
Написал снипет, который должен выбирать все опции из категории. Он запрос делает правильный, но почему то результирующий массив пуст. Хотя если этот же запрос выполнить в phpmyadmin то все нормально выводится
Запрос в итоге —
Но если сделать print_r($res) — ПУСТО!
Подскажите пожалуйста — в чем ошибся?
Еще выяснилось, что любой запрос к msOption выводит пустой результат, даже такой —
Но прямой запрос — работает!!!
Написал снипет, который должен выбирать все опции из категории. Он запрос делает правильный, но почему то результирующий массив пуст. Хотя если этот же запрос выполнить в phpmyadmin то все нормально выводится
<?php
$q = $modx->newQuery('msOption');
$q->leftJoin('msCategoryOption', 'msCategoryOption', 'msCategoryOption.option_id=msOption.id');
$q->select(array(
$this->modx->getSelectColumns('msOption', 'msOption'),
$this->modx->getSelectColumns('msCategoryOption', 'msCategoryOption', '', array('id', 'option_id'),
true),
));
$q->where(array(
'msCategoryOption.category_id' => 9,
));
$q->prepare();
$q->stmt->execute();
$res = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
echo $q->toSQL();
Запрос в итоге —
SELECT `msOption`.`id`, `msOption`.`key`, `msOption`.`caption`, `msOption`.`description`, `msOption`.`measure_unit`, `msOption`.`category`, `msOption`.`type`, `msOption`.`properties`, `msCategoryOption`.`category_id`, `msCategoryOption`.`rank`, `msCategoryOption`.`active`, `msCategoryOption`.`required`, `msCategoryOption`.`value` FROM `modx_ms2_options` AS `msOption` LEFT JOIN `modx_ms2_category_options` `msCategoryOption` ON msCategoryOption.option_id=msOption.id WHERE `msCategoryOption`.`category_id` = '9'
если в phpmyadmin — Но если сделать print_r($res) — ПУСТО!
Подскажите пожалуйста — в чем ошибся?
Еще выяснилось, что любой запрос к msOption выводит пустой результат, даже такой —
$q = $modx->newQuery('msOption', array('id:>' => 0));
$q->prepare();
$q->stmt->execute();
echo $q->toSQL();
$res = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($res as $v) {
echo $v['key'];
}
результат — Но прямой запрос — работает!!!
$sql = "SELECT op.*, catop.* FROM `modx_ms2_options` as op LEFT JOIN `modx_ms2_category_options` as catop on op.id = catop.option_id where catop.category_id = 9";
$q = $modx->prepare($sql);
$q->execute();
$res = $q->fetchAll(PDO::FETCH_ASSOC);
foreach ($res as $v) {
echo $v['key'] . ' | ';
}
Убрать вложенность url у товаров
Добрый день!
Подскажите пожалуйста, есть ли возможность убрать вложенность url только у товаров minishop2, у все остальных ресурсов — сохранить вложенность?
версия modx 2.6.5pl
Можно, конечно, плагином при сохранении товара замораживать uri.
Но при использовании компонента импорта, uri будет прописываться как в настройках сайта, т.е вложенный.
Пока вижу решение в таком плагине —
p.s. Вобщем это похоже единственное решение, и в процессоре minishop2 create вызывается
fireBeforeSaveEvent(), а там invokeEvent('OnBeforeDocFormSave').
Так что при импорте должно быть все в порядке.
Подскажите пожалуйста, есть ли возможность убрать вложенность url только у товаров minishop2, у все остальных ресурсов — сохранить вложенность?
версия modx 2.6.5pl
Можно, конечно, плагином при сохранении товара замораживать uri.
Но при использовании компонента импорта, uri будет прописываться как в настройках сайта, т.е вложенный.
Пока вижу решение в таком плагине —
<?php
$eventName = $modx->event->name;
switch($eventName) {
case 'OnDocFormSave':
if ($resource->get('class_key') == 'msProduct') {
$alias = $resource->get('alias');
$resource->set('uri',$alias);
$resource->set('uri_override', 1);
$resource->save();
}
break;
}
p.s. Вобщем это похоже единственное решение, и в процессоре minishop2 create вызывается
fireBeforeSaveEvent(), а там invokeEvent('OnBeforeDocFormSave').
Так что при импорте должно быть все в порядке.