Каждый отдельный ТВ-параметр нужно приджойнить отдельно: Выборка ресурсов с TV-параметрами
Всем привет. Ситуация такая, есть несколько ресурсов, пытаюсь сделать выборку по ТВ-параметрам, нужно выбирать так что бы по заданным ТВ было точное совпадение SQL запрос SELECT * FROM modx_site_content
AS modResource
JOIN modx_site_tmplvar_contentvalues
TemplateVarResources
ON modResource
.id
= TemplateVarResources
.contentid
JOIN modx_site_tmplvars
tv
ON tv.id=TemplateVarResources.tmplvarid WHERE ( ( modResource
.deleted
= 0 AND modResource
.hidemenu
= 0 AND modResource
.published
= 1 ) AND ( ( tv
.name
= 'item_country' AND TemplateVarResources
.value
= '1' ) AND ( tv
.name
= 'item_color' AND TemplateVarResources
.value
= '2' ) ) ) xPDO function prepareQueryBeforeCount(xPDOQuery $c){
$c = parent::prepareQueryBeforeCount($c);
//$filter = $this->prepareFilterCriteria($this->getProperty('filter'));
$filter = array(
array(
'tv.name' => 'item_country',
"TemplateVarResources.value" => 1
),
array(
'tv.name' => 'item_color',
"TemplateVarResources.value" => 2
)
);
if ($filter){
$c->innerJoin('modTemplateVarResource', 'TemplateVarResources');
$c->innerJoin('modTemplateVar', 'tv', "tv.id=TemplateVarResources.tmplvarid");
$c->where($filter);
}
return $c;
} подскажите пожалуйста где я ошибаюсь
Здравствуйте! Николай, возможность добавить товар и удалить заказ в данный момент есть в сборке?
Добрый день! Появилась необходимость добавить еще 1 поле в заказ. Поле называется OPLATA. Поле будет служить для определения способа оплаты (наличными, платежной картой visa/mastercard) При оформлении заказа клиент будет выбирать способ оплаты и после принятия заказа менеджером в управлении заказами будет кнопка «оплатить» (если выбрана он-лайн оплата). Что я сделал: Добавил в таблицу modx_shopmodx_orders поле oplata varchar(4). Файл shopmodxorder.map.inc.php: 'oplata' => 'opl',
'oplata' => array ( 'dbtype' => 'text', 'precision' => '100', 'phptype' => 'string', 'null' => false, 'default' => 'opl' ), Файл object.class.php protected function prepareObject(& $object){ $oplata = $OrderProduct->oplata;
$object->fromArray(array(
"positions" => $positions,
"total" => $quantity,
"quantity" => $quantity,
"sum" => $sum,
"oplata" =>$oplata,
"paysystem_name" => $oplata,
"discount" => $object->discount,
"original_sum" => $original_sum,
"products_ids" => $products_ids,
)); Как бы все работает.
Данные в таблицу пишутся, данные получить могу. Но в логах появляются не красивые записи: [2016-08-14 20:46:16] (ERROR @ /index.php) ShopmodxOrder: Attempt to set NOT NULL field oplata to NULL Такая запись появляется при обновлении главной страницы с пустой корзиной… Никак не могу понять где формируется запрос который потом так ругается. Подскажите какой файл посмотреть?
Все, сделал. В common.js дописал if(action == 'order/submit'){ setTimeout(function(){ window.location.replace('/'); }, 1000 // Интервал в милисекундах ) }
Денис, добрый день! Да, есть у нас ошибка во фронте, не туда запрос идет. Лечение: немного подправить файл core/components/shopmodx/processors/shopmodx/public/action.class.php, вот ревизия (у вас на сайте поправил).
Добрый день! Столкнулся с проблемой — новый пользователь не может залогинится. При попытке сделать вход — получается сообщение Действие не существует или не может быть выполнено Как лечить?