Фильтр товаров по производителю и меткам
teldrim
4 июля 2023 г.
Добрый день!
Подскажите пожалуйста, выводятся товары на страницеhttps://template17.2231747.ru/shop/11/
Если фильтровать только по производителю или только по метке работает правильно, если одновременно выбрать производителя и метку, то фильтрует только по метке.
Код ТДС:
Подскажите пожалуйста, выводятся товары на странице
Если фильтровать только по производителю или только по метке работает правильно, если одновременно выбрать производителя и метку, то фильтрует только по метке.
Код ТДС:
<?php
// function debug_to_console($data) {
// $output = $data;
// if (is_array($output))
// $output = implode(',', $output);
// echo "<script>console.log(JSON.parse('Debug Objects: " . $output . "' ));</script>";
// }
function debug_to_console($data, $context = 'Debug in Console') {
// Buffering to solve problems frameworks, like header() in this and not a solid return.
ob_start();
$output = 'console.info(\'' . $context . ':\');';
$output .= 'console.log(' . json_encode($data) . ');';
$output = sprintf('<script>%s</script>', $output);
echo $output;
}
$Shop_Controller_Show = Core_Page::instance()->object;
$oShop = Core_Entity::factory('Shop', Core_Array::get(Core_Page::instance()->libParams, 'shopId'));
// print '<pre>'; print_r($Shop_Controller_Show->group); print '</pre>';
$xslName = $Shop_Controller_Show->item
? Core_Array::get(Core_Page::instance()->libParams, 'shopItemXsl')
: Core_Array::get(Core_Page::instance()->libParams, 'shopXsl');
$Shop_Controller_Show->addEntity(
Core::factory('Core_Xml_Entity')
->name('ТекущаяГруппа')->value(
intval(is_array($Shop_Controller_Show->group)
? Core_Array::first($Shop_Controller_Show->group)
: $Shop_Controller_Show->group
)
)
)->addEntity(
Core::factory('Core_Xml_Entity')
->name('show_comments')->value(Core_Array::get(Core_Page::instance()->libParams, 'showComments', 1))
)->addEntity(
Core::factory('Core_Xml_Entity')
->name('show_add_comments')->value(Core_Array::get(Core_Page::instance()->libParams, 'showAddComment', 2))
);
$Shop_Controller_Show->tags(TRUE);
$Shop_Controller_Tag_Show = new Shop_Controller_Tag_Show($oShop);
if ($Shop_Controller_Show->item == 0)
{
$Shop_Controller_Show->itemsForbiddenTags(array('text'));
// tag from shoptag
if (Core_Array::getPost('shoptag'))
{
$iTagId = intval(Core_Array::getPost('shoptag'));
if ($iTagId > 0) {
$oTag = Core_Entity::factory('Tag')->getById($iTagId);
$Shop_Controller_Show->tag($oTag->path);
/*
$oalltags = $Shop_Controller_Tag_Show->queryBuilder()->execute()->asObject()->result();
// print '<pre>'; print_r($oalltags); print '</pre>';
foreach ($oalltags as $t) {
if ($t->id == $iTagId) {
$Shop_Controller_Show->tag($t->path);
break;
}
}
*/
}
/////////////////////////////
if (Core_Array::getPost('producer_id'))
{
// Producer filtering logic
$iProducerId = intval(Core_Array::getPost('producer_id'));
$Shop_Controller_Show->producer($iProducerId);
$Shop_Controller_Show->limit(30);
}
// Rest of the tag filtering logic
$oProducersXmlEntity = Core::factory('Core_Xml_Entity')->name('producers');
// List of producers and adding them as child entities to the 'producers' XML entity
$oShop_Producers = $oShop->Shop_Producers;
debug_to_console($oShop->Shop_Producers);
$oShop_Producers->queryBuilder()
->select('shop_producers.*')
->distinct()
->join('shop_items', 'shop_items.shop_producer_id', '=', 'shop_producers.id')
->where('shop_items.shop_group_id', '=', $Shop_Controller_Show->group)
->where('shop_items.deleted', '=', 0);
$aShop_Producers = $oShop_Producers->findAll();
foreach ($aShop_Producers as $oShop_Producer)
{
// Add each producer as a child entity to the 'producers' XML entity
$oProducersXmlEntity->addEntity(
$oShop_Producer->clearEntities()
);
}
////////////////////////////////////
$Shop_Controller_Show->addEntity(
Core::factory('Core_Xml_Entity')
->name('currentshoptagid')->value($iTagId)
);
}
// Producers
if (Core_Array::getPost('producer_id'))
{
$iProducerId = intval(Core_Array::getPost('producer_id'));
$Shop_Controller_Show->producer($iProducerId);
$Shop_Controller_Show->limit(30);
}
if (Core_Array::getGet('filter') || Core_Array::getGet('sorting'))
{
$Shop_Controller_Show->addEntity(
Core::factory('Core_Xml_Entity')
->name('filter')->value(1)
);
// Sorting
$sorting = intval(Core_Array::getGet('sorting'));
($sorting == 1 || $sorting == 2)
&& $Shop_Controller_Show->orderBy('absolute_price', $sorting == 1 ? 'ASC' : 'DESC');
$sorting == 3 && $Shop_Controller_Show->orderBy('shop_items.name', 'ASC');
$Shop_Controller_Show->addEntity(
Core::factory('Core_Xml_Entity')
->name('sorting')->value($sorting)
);
// Prices
$Shop_Controller_Show->setFilterPricesConditions($_GET);
// Additional properties
$Shop_Controller_Show->setFilterPropertiesConditions($_GET);
}
/* Производители */
$oShop = $Shop_Controller_Show->getEntity();
// XML-сущность, к которй будут добавляться производители
$oProducersXmlEntity = Core::factory('Core_Xml_Entity')->name('producers');
// Добавляем XML-сущность контроллеру показа
$Shop_Controller_Show->addEntity($oProducersXmlEntity);
// Список производителей
$oShop_Producers = $oShop->Shop_Producers;
$oShop_Producers->queryBuilder()
->select('shop_producers.*')
->distinct()
->join('shop_items', 'shop_items.shop_producer_id', '=', 'shop_producers.id')
->where('shop_items.shop_group_id', '=', $Shop_Controller_Show->group)
->where('shop_items.deleted', '=', 0);
$aShop_Producers = $oShop_Producers->findAll();
foreach ($aShop_Producers as $oShop_Producer)
{
// Добавляем производителя потомком XML-сущности
$oProducersXmlEntity->addEntity(
$oShop_Producer->clearEntities()
);
}
// Метки
if (Core::moduleIsActive('shop') && Core::moduleIsActive('tag'))
{
/*
$Shop_Controller_Tag_Show = new Shop_Controller_Tag_Show($oShop);
$Shop_Controller_Tag_Show
->xsl(Core_Entity::factory('Xsl')
->getByName('ОблакоТеговНовыйСайт3'))
->show();
*/
// XML-сущность, к которой будут добавляться метки
$oShopTagsXmlEntity = Core::factory('Core_Xml_Entity')->name('shoptags');
// Добавляем XML-сущность контроллеру показа
$Shop_Controller_Show->addEntity($oShopTagsXmlEntity);
// Преобразуем ассоциативный массив тегов в XML-сущности
$alltags = $Shop_Controller_Tag_Show->queryBuilder()->execute()->asAssoc()->result();
foreach ($alltags as $tag1) {
// echo '<pre>'; print_r($tag1); echo '</pre>';
$oShopOneTagXmlEntity = Core::factory('Core_Xml_Entity')->name('shoptag');
$oShopTagsXmlEntity->addEntity($oShopOneTagXmlEntity);
foreach ($tag1 as $name => $value) {
$oShopOneTagXmlEntity->addEntity(Core::factory('Core_Xml_Entity')
->name($name)
->value($value)
);
}
}
} else {
}
}
else
{
$Shop_Controller_Show
->associatedItems(TRUE)
->modifications(TRUE)
->comments(TRUE)
->tabs(TRUE)
;
if (Core_Array::getPost('add_comment') && Core_Array::get(Core_Page::instance()->libParams, 'showComments', 1))
{
$oShop = $Shop_Controller_Show->getEntity();
$Shop_Controller_Show->cache(FALSE);
$oLastComment = Core_Entity::factory('Comment')->getLastCommentByIp(
Core_Array::get($_SERVER, 'REMOTE_ADDR')
);
$oXmlCommentTag = Core::factory('Core_Xml_Entity')
->name('document');
$siteuser_id = 0;
if (Core::moduleIsActive('siteuser'))
{
$oSiteuser = Core_Entity::factory('Siteuser')->getCurrent();
if ($oSiteuser)
{
$siteuser_id = $oSiteuser->id;
}
}
$oComment = Core_Entity::factory('Comment');
$allowable_tags = '<b><strong><i><em><br><p><u><strike><ul><ol><li>';
$oComment->parent_id = intval(Core_Array::getPost('parent_id', 0));
$oComment->active = $oShop->comment_active;
$oComment->author = Core_Str::stripTags(Core_Array::getPost('name'));
$oComment->email = Core_Str::stripTags(Core_Array::getPost('email'));
$oComment->phone = Core_Str::stripTags(Core_Array::getPost('phone'));
$oComment->grade = intval(Core_Array::getPost('grade', 0));
$oComment->subject = Core_Str::stripTags(Core_Array::getPost('subject'));
$oComment->text = nl2br(Core_Str::stripTags(Core_Array::getPost('text'), $allowable_tags));
$oComment->siteuser_id = $siteuser_id;
$oShop_Item = Core_Entity::factory('Shop_Item', $Shop_Controller_Show->item);
$oXmlCommentTag
->addEntity($oComment)
->addEntity($oShop_Item);
if (is_null($oLastComment) || time() > Core_Date::sql2timestamp($oLastComment->datetime) + ADD_COMMENT_DELAY)
{
if ($oShop->use_captcha == 0 || $siteuser_id > 0 || Core_Captcha::valid(Core_Array::getPost('captcha_id'), Core_Array::getPost('captcha')))
{
// Antispam
if (Core::moduleIsActive('antispam'))
{
$Antispam_Controller = new Antispam_Controller();
$bAntispamAnswer = $Antispam_Controller
->addText($oComment->author, 'author')
->addText($oComment->email, 'email')
->addText($oComment->phone, 'phone')
->addText($oComment->subject, 'subject')
->addText($oComment->text, 'text')
->execute();
// Check e-mail
if ($bAntispamAnswer)
{
$bAntispamAnswer = Antispam_Domain_Controller::checkEmail($oComment->email);
}
}
else
{
$bAntispamAnswer = TRUE;
}
if ($bAntispamAnswer)
{
$oComment->save();
$oComment
->dateFormat($oShop->format_date)
->dateTimeFormat($oShop->format_datetime);
$oShop_Item->add($oComment)->clearCache();
$oXmlCommentTag->addEntity($oShop);
// Отправка письма администратору
$sText = Xsl_Processor::instance()
->xml($oXmlCommentTag->getXml())
->xsl(
Core_Entity::factory('Xsl')
->getByName(Core_Array::get(Core_Page::instance()->libParams, 'addCommentAdminMailXsl'))
)
->process();
$aFrom = array_map('trim', explode(',', EMAIL_TO));
Core_Mail::instance()
->to(EMAIL_TO)
->from($aFrom[0])
->header('Reply-To', Core_Valid::email($oComment->email)
? $oComment->email
: $aFrom[0]
)
->subject(Core::_('Shop.comment_mail_subject'))
->message(trim($sText))
->contentType(Core_Array::get(Core_Page::instance()->libParams, 'commentMailNoticeType', 0) == 0
? 'text/plain'
: 'text/html'
)
->send();
}
else
{
$oXmlCommentTag->addEntity(Core::factory('Core_Xml_Entity')
->name('error_antispam')->value(1)
);
$oComment->text = Core_Str::br2nl($oComment->text);
$Shop_Controller_Show->addEntity($oComment);
}
}
else
{
$oXmlCommentTag->addEntity(Core::factory('Core_Xml_Entity')
->name('error_captcha')->value(1)
);
$oComment->text = Core_Str::br2nl($oComment->text);
$Shop_Controller_Show->addEntity($oComment);
}
}
else
{
$oXmlCommentTag->addEntity(Core::factory('Core_Xml_Entity')
->name('error_time')->value(1)
);
$oComment->text = Core_Str::br2nl($oComment->text);
$Shop_Controller_Show->addEntity($oComment);
}
// Результат добавления комментария
$xsl_result = Xsl_Processor::instance()
->xml($oXmlCommentTag->getXml())
->xsl(Core_Entity::factory('Xsl')->getByName(
Core_Array::get(Core_Page::instance()->libParams, 'addCommentNoticeXsl'))
)
->process();
$Shop_Controller_Show->addEntity(
Core::factory('Core_Xml_Entity')
->name('message')->value($xsl_result)
);
}
}
// В корне выводим из всех групп
/*if ($Shop_Controller_Show->group == 0 || !is_null($Shop_Controller_Show->tag))
{
$Shop_Controller_Show->group(FALSE)->forbidSelectModifications();
}*/
class Hostcms_Shop_Item_Observer
{
static public function onBeforeGetXml($object)
{
$object->addXmlTag('modifications_count', $object->Modifications->getCount());
}
static public function onBeforeSelectModifications($object, $args)
{
$args[0]
->queryBuilder()
->clearOrderBy()
->orderBy('shop_items.sorting', 'ASC')
->orderBy('shop_items.name', 'ASC');
}
}
if ($Shop_Controller_Show->item)
{
$oShop_Item_Sets = Core_Entity::factory('Shop_Item_Set');
$oShop_Item_Sets
->queryBuilder()
->where('shop_item_sets.shop_item_set_id', '=', $Shop_Controller_Show->item)
->limit(3);
$aShop_Item_Sets = $oShop_Item_Sets->findAll(FALSE);
if (count($aShop_Item_Sets))
{
$oXmlParentSets = Core::factory('Core_Xml_Entity')
->name('parent_sets');
foreach ($aShop_Item_Sets as $oShop_Item_Set)
{
$oShop_Item = $oShop_Item_Set->Shop_Item;
$newShopItem = clone $oShop_Item;
$newShopItem->id = $oShop_Item->id;
$oXmlParentSets->addEntity($newShopItem);
}
$Shop_Controller_Show->addEntity($oXmlParentSets);
}
$Shop_Controller_Show->warehousesItems(TRUE);
Core_Event::attach('shop_item.onBeforeSelectModifications', array('Hostcms_Shop_Item_Observer', 'onBeforeSelectModifications'));
}
else
{
Core_Event::attach('shop_item.onBeforeGetXml', array('Hostcms_Shop_Item_Observer', 'onBeforeGetXml'));
}
$Shop_Controller_Show
->xsl(
Core_Entity::factory('Xsl')->getByName($xslName)
)
// ->itemProperties(TRUE)
->show();
// function debug_to_console($data) {
// $output = $data;
// if (is_array($output))
// $output = implode(',', $output);
// echo "<script>console.log(JSON.parse('Debug Objects: " . $output . "' ));</script>";
// }
function debug_to_console($data, $context = 'Debug in Console') {
// Buffering to solve problems frameworks, like header() in this and not a solid return.
ob_start();
$output = 'console.info(\'' . $context . ':\');';
$output .= 'console.log(' . json_encode($data) . ');';
$output = sprintf('<script>%s</script>', $output);
echo $output;
}
$Shop_Controller_Show = Core_Page::instance()->object;
$oShop = Core_Entity::factory('Shop', Core_Array::get(Core_Page::instance()->libParams, 'shopId'));
// print '<pre>'; print_r($Shop_Controller_Show->group); print '</pre>';
$xslName = $Shop_Controller_Show->item
? Core_Array::get(Core_Page::instance()->libParams, 'shopItemXsl')
: Core_Array::get(Core_Page::instance()->libParams, 'shopXsl');
$Shop_Controller_Show->addEntity(
Core::factory('Core_Xml_Entity')
->name('ТекущаяГруппа')->value(
intval(is_array($Shop_Controller_Show->group)
? Core_Array::first($Shop_Controller_Show->group)
: $Shop_Controller_Show->group
)
)
)->addEntity(
Core::factory('Core_Xml_Entity')
->name('show_comments')->value(Core_Array::get(Core_Page::instance()->libParams, 'showComments', 1))
)->addEntity(
Core::factory('Core_Xml_Entity')
->name('show_add_comments')->value(Core_Array::get(Core_Page::instance()->libParams, 'showAddComment', 2))
);
$Shop_Controller_Show->tags(TRUE);
$Shop_Controller_Tag_Show = new Shop_Controller_Tag_Show($oShop);
if ($Shop_Controller_Show->item == 0)
{
$Shop_Controller_Show->itemsForbiddenTags(array('text'));
// tag from shoptag
if (Core_Array::getPost('shoptag'))
{
$iTagId = intval(Core_Array::getPost('shoptag'));
if ($iTagId > 0) {
$oTag = Core_Entity::factory('Tag')->getById($iTagId);
$Shop_Controller_Show->tag($oTag->path);
/*
$oalltags = $Shop_Controller_Tag_Show->queryBuilder()->execute()->asObject()->result();
// print '<pre>'; print_r($oalltags); print '</pre>';
foreach ($oalltags as $t) {
if ($t->id == $iTagId) {
$Shop_Controller_Show->tag($t->path);
break;
}
}
*/
}
/////////////////////////////
if (Core_Array::getPost('producer_id'))
{
// Producer filtering logic
$iProducerId = intval(Core_Array::getPost('producer_id'));
$Shop_Controller_Show->producer($iProducerId);
$Shop_Controller_Show->limit(30);
}
// Rest of the tag filtering logic
$oProducersXmlEntity = Core::factory('Core_Xml_Entity')->name('producers');
// List of producers and adding them as child entities to the 'producers' XML entity
$oShop_Producers = $oShop->Shop_Producers;
debug_to_console($oShop->Shop_Producers);
$oShop_Producers->queryBuilder()
->select('shop_producers.*')
->distinct()
->join('shop_items', 'shop_items.shop_producer_id', '=', 'shop_producers.id')
->where('shop_items.shop_group_id', '=', $Shop_Controller_Show->group)
->where('shop_items.deleted', '=', 0);
$aShop_Producers = $oShop_Producers->findAll();
foreach ($aShop_Producers as $oShop_Producer)
{
// Add each producer as a child entity to the 'producers' XML entity
$oProducersXmlEntity->addEntity(
$oShop_Producer->clearEntities()
);
}
////////////////////////////////////
$Shop_Controller_Show->addEntity(
Core::factory('Core_Xml_Entity')
->name('currentshoptagid')->value($iTagId)
);
}
// Producers
if (Core_Array::getPost('producer_id'))
{
$iProducerId = intval(Core_Array::getPost('producer_id'));
$Shop_Controller_Show->producer($iProducerId);
$Shop_Controller_Show->limit(30);
}
if (Core_Array::getGet('filter') || Core_Array::getGet('sorting'))
{
$Shop_Controller_Show->addEntity(
Core::factory('Core_Xml_Entity')
->name('filter')->value(1)
);
// Sorting
$sorting = intval(Core_Array::getGet('sorting'));
($sorting == 1 || $sorting == 2)
&& $Shop_Controller_Show->orderBy('absolute_price', $sorting == 1 ? 'ASC' : 'DESC');
$sorting == 3 && $Shop_Controller_Show->orderBy('shop_items.name', 'ASC');
$Shop_Controller_Show->addEntity(
Core::factory('Core_Xml_Entity')
->name('sorting')->value($sorting)
);
// Prices
$Shop_Controller_Show->setFilterPricesConditions($_GET);
// Additional properties
$Shop_Controller_Show->setFilterPropertiesConditions($_GET);
}
/* Производители */
$oShop = $Shop_Controller_Show->getEntity();
// XML-сущность, к которй будут добавляться производители
$oProducersXmlEntity = Core::factory('Core_Xml_Entity')->name('producers');
// Добавляем XML-сущность контроллеру показа
$Shop_Controller_Show->addEntity($oProducersXmlEntity);
// Список производителей
$oShop_Producers = $oShop->Shop_Producers;
$oShop_Producers->queryBuilder()
->select('shop_producers.*')
->distinct()
->join('shop_items', 'shop_items.shop_producer_id', '=', 'shop_producers.id')
->where('shop_items.shop_group_id', '=', $Shop_Controller_Show->group)
->where('shop_items.deleted', '=', 0);
$aShop_Producers = $oShop_Producers->findAll();
foreach ($aShop_Producers as $oShop_Producer)
{
// Добавляем производителя потомком XML-сущности
$oProducersXmlEntity->addEntity(
$oShop_Producer->clearEntities()
);
}
// Метки
if (Core::moduleIsActive('shop') && Core::moduleIsActive('tag'))
{
/*
$Shop_Controller_Tag_Show = new Shop_Controller_Tag_Show($oShop);
$Shop_Controller_Tag_Show
->xsl(Core_Entity::factory('Xsl')
->getByName('ОблакоТеговНовыйСайт3'))
->show();
*/
// XML-сущность, к которой будут добавляться метки
$oShopTagsXmlEntity = Core::factory('Core_Xml_Entity')->name('shoptags');
// Добавляем XML-сущность контроллеру показа
$Shop_Controller_Show->addEntity($oShopTagsXmlEntity);
// Преобразуем ассоциативный массив тегов в XML-сущности
$alltags = $Shop_Controller_Tag_Show->queryBuilder()->execute()->asAssoc()->result();
foreach ($alltags as $tag1) {
// echo '<pre>'; print_r($tag1); echo '</pre>';
$oShopOneTagXmlEntity = Core::factory('Core_Xml_Entity')->name('shoptag');
$oShopTagsXmlEntity->addEntity($oShopOneTagXmlEntity);
foreach ($tag1 as $name => $value) {
$oShopOneTagXmlEntity->addEntity(Core::factory('Core_Xml_Entity')
->name($name)
->value($value)
);
}
}
} else {
}
}
else
{
$Shop_Controller_Show
->associatedItems(TRUE)
->modifications(TRUE)
->comments(TRUE)
->tabs(TRUE)
;
if (Core_Array::getPost('add_comment') && Core_Array::get(Core_Page::instance()->libParams, 'showComments', 1))
{
$oShop = $Shop_Controller_Show->getEntity();
$Shop_Controller_Show->cache(FALSE);
$oLastComment = Core_Entity::factory('Comment')->getLastCommentByIp(
Core_Array::get($_SERVER, 'REMOTE_ADDR')
);
$oXmlCommentTag = Core::factory('Core_Xml_Entity')
->name('document');
$siteuser_id = 0;
if (Core::moduleIsActive('siteuser'))
{
$oSiteuser = Core_Entity::factory('Siteuser')->getCurrent();
if ($oSiteuser)
{
$siteuser_id = $oSiteuser->id;
}
}
$oComment = Core_Entity::factory('Comment');
$allowable_tags = '<b><strong><i><em><br><p><u><strike><ul><ol><li>';
$oComment->parent_id = intval(Core_Array::getPost('parent_id', 0));
$oComment->active = $oShop->comment_active;
$oComment->author = Core_Str::stripTags(Core_Array::getPost('name'));
$oComment->email = Core_Str::stripTags(Core_Array::getPost('email'));
$oComment->phone = Core_Str::stripTags(Core_Array::getPost('phone'));
$oComment->grade = intval(Core_Array::getPost('grade', 0));
$oComment->subject = Core_Str::stripTags(Core_Array::getPost('subject'));
$oComment->text = nl2br(Core_Str::stripTags(Core_Array::getPost('text'), $allowable_tags));
$oComment->siteuser_id = $siteuser_id;
$oShop_Item = Core_Entity::factory('Shop_Item', $Shop_Controller_Show->item);
$oXmlCommentTag
->addEntity($oComment)
->addEntity($oShop_Item);
if (is_null($oLastComment) || time() > Core_Date::sql2timestamp($oLastComment->datetime) + ADD_COMMENT_DELAY)
{
if ($oShop->use_captcha == 0 || $siteuser_id > 0 || Core_Captcha::valid(Core_Array::getPost('captcha_id'), Core_Array::getPost('captcha')))
{
// Antispam
if (Core::moduleIsActive('antispam'))
{
$Antispam_Controller = new Antispam_Controller();
$bAntispamAnswer = $Antispam_Controller
->addText($oComment->author, 'author')
->addText($oComment->email, 'email')
->addText($oComment->phone, 'phone')
->addText($oComment->subject, 'subject')
->addText($oComment->text, 'text')
->execute();
// Check e-mail
if ($bAntispamAnswer)
{
$bAntispamAnswer = Antispam_Domain_Controller::checkEmail($oComment->email);
}
}
else
{
$bAntispamAnswer = TRUE;
}
if ($bAntispamAnswer)
{
$oComment->save();
$oComment
->dateFormat($oShop->format_date)
->dateTimeFormat($oShop->format_datetime);
$oShop_Item->add($oComment)->clearCache();
$oXmlCommentTag->addEntity($oShop);
// Отправка письма администратору
$sText = Xsl_Processor::instance()
->xml($oXmlCommentTag->getXml())
->xsl(
Core_Entity::factory('Xsl')
->getByName(Core_Array::get(Core_Page::instance()->libParams, 'addCommentAdminMailXsl'))
)
->process();
$aFrom = array_map('trim', explode(',', EMAIL_TO));
Core_Mail::instance()
->to(EMAIL_TO)
->from($aFrom[0])
->header('Reply-To', Core_Valid::email($oComment->email)
? $oComment->email
: $aFrom[0]
)
->subject(Core::_('Shop.comment_mail_subject'))
->message(trim($sText))
->contentType(Core_Array::get(Core_Page::instance()->libParams, 'commentMailNoticeType', 0) == 0
? 'text/plain'
: 'text/html'
)
->send();
}
else
{
$oXmlCommentTag->addEntity(Core::factory('Core_Xml_Entity')
->name('error_antispam')->value(1)
);
$oComment->text = Core_Str::br2nl($oComment->text);
$Shop_Controller_Show->addEntity($oComment);
}
}
else
{
$oXmlCommentTag->addEntity(Core::factory('Core_Xml_Entity')
->name('error_captcha')->value(1)
);
$oComment->text = Core_Str::br2nl($oComment->text);
$Shop_Controller_Show->addEntity($oComment);
}
}
else
{
$oXmlCommentTag->addEntity(Core::factory('Core_Xml_Entity')
->name('error_time')->value(1)
);
$oComment->text = Core_Str::br2nl($oComment->text);
$Shop_Controller_Show->addEntity($oComment);
}
// Результат добавления комментария
$xsl_result = Xsl_Processor::instance()
->xml($oXmlCommentTag->getXml())
->xsl(Core_Entity::factory('Xsl')->getByName(
Core_Array::get(Core_Page::instance()->libParams, 'addCommentNoticeXsl'))
)
->process();
$Shop_Controller_Show->addEntity(
Core::factory('Core_Xml_Entity')
->name('message')->value($xsl_result)
);
}
}
// В корне выводим из всех групп
/*if ($Shop_Controller_Show->group == 0 || !is_null($Shop_Controller_Show->tag))
{
$Shop_Controller_Show->group(FALSE)->forbidSelectModifications();
}*/
class Hostcms_Shop_Item_Observer
{
static public function onBeforeGetXml($object)
{
$object->addXmlTag('modifications_count', $object->Modifications->getCount());
}
static public function onBeforeSelectModifications($object, $args)
{
$args[0]
->queryBuilder()
->clearOrderBy()
->orderBy('shop_items.sorting', 'ASC')
->orderBy('shop_items.name', 'ASC');
}
}
if ($Shop_Controller_Show->item)
{
$oShop_Item_Sets = Core_Entity::factory('Shop_Item_Set');
$oShop_Item_Sets
->queryBuilder()
->where('shop_item_sets.shop_item_set_id', '=', $Shop_Controller_Show->item)
->limit(3);
$aShop_Item_Sets = $oShop_Item_Sets->findAll(FALSE);
if (count($aShop_Item_Sets))
{
$oXmlParentSets = Core::factory('Core_Xml_Entity')
->name('parent_sets');
foreach ($aShop_Item_Sets as $oShop_Item_Set)
{
$oShop_Item = $oShop_Item_Set->Shop_Item;
$newShopItem = clone $oShop_Item;
$newShopItem->id = $oShop_Item->id;
$oXmlParentSets->addEntity($newShopItem);
}
$Shop_Controller_Show->addEntity($oXmlParentSets);
}
$Shop_Controller_Show->warehousesItems(TRUE);
Core_Event::attach('shop_item.onBeforeSelectModifications', array('Hostcms_Shop_Item_Observer', 'onBeforeSelectModifications'));
}
else
{
Core_Event::attach('shop_item.onBeforeGetXml', array('Hostcms_Shop_Item_Observer', 'onBeforeGetXml'));
}
$Shop_Controller_Show
->xsl(
Core_Entity::factory('Xsl')->getByName($xslName)
)
// ->itemProperties(TRUE)
->show();
Авторизация