У нас есть рабочее расширение на нашем сайте, которое позволяет клиентам запрашивать образцы — код на наших страницах категорий:
<?php if (Mage::helper('floorsamples')->isSamplesEnabled($_product->getId())): ?>
<a href="<?php echo $this->getUrl('samples/cart/add') . '?product=' . $_product->getId(); ?>" class="link-compare" onclick="sampleconfirm()"><img src="<?php echo $this->getSkinUrl('images/cat-freesample.png')?>" /></a>
<?php else: ?>
<a href="<?php echo $_product->getProductUrl() ?>"><img src="<?php echo $this->getSkinUrl('images/cat-moreinfo.png')?>" /></a>
<?php endif; ?>
Однако проверка доступности опции samples вызывает исключение. Остальная часть модуля представляется полностью функциональной — за исключением этого исключения.
Функции:
public function isSamplesEnabled($productId) {
if (!$this->getConfigClass()->enabled) {
return false;
}
$product = $this->_getProduct($productId);
foreach ($product->getCategoryCollection() as $category) {
if ($this->_isSamplesEnabledHelper($product, $category)) {
return true;
}
}
return false;
}
private function _isSamplesEnabledHelper($product, $category, $recursive = false) {
$category = Mage::getModel("catalog/category")->load($category->getEntityId());
if ($this->_getData($category)) {
return true;
}
if ($recursive) {
foreach ($category->getChildrenCategories() as $child) {
if ($this->_isSamplesEnabledHelper($product, $child, $recursive)) {
return true;
}
}
}
return false;
}
Спасибо!
PS. Ниже из журналов
a:5:{i:0;s:202:"SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1";i:1;s:6240:"#0
Задача ещё не решена.
Других решений пока нет …