Как вывести свойства товарной группы в каталоге товаров Ksenmart
При разработке интернет-магазина на Joomla с помощью компонента Ksenmart, иногда заказчики желают в каталоге товаров вывести все свойства товарной группы.
В самом каталоге выводится основной товар, и так как в товарной группе может быть несколько товаров, стандартный шаблон каталога Ksenmart не позволяет это сделать.
В этой заметке я расскажу как дополнить шаблон.
Сам шаблон вывода товаров находится в ваш_сайт\components\com_ksenmart\views\catalog\tmpl\default_item.php
В нашем случае нам нужно вывести свойства "подача, мощность и давление" у товарной группы насоса.
Код файла default_item.php будет иметь вид:
<?php
/**
* @copyright Copyright (C) 2013. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
$db = JFactory::getDbo();
$query = $db->getQuery(true);
/* найдем все продукты товарной группы */
$query->select('id')->from('#__ksenmart_products')->where('parent_id = ' . $this->product->id );
$db->setQuery($query);
$rows = $db->loadObjectList();
$pod=array(); $nap=array(); $mosh=array();
foreach($rows as $prop){
$id=KSMProducts::getProperties($prop->id);
foreach($id as $_id){
/* запишем все данные в массив */
if($_id->alias == "podacha") $pod[] = str_replace(" м3/ч","",$_id->text);
if($_id->alias == "moschnost") $mosh[] = str_replace(" кВт","",$_id->text);
if($_id->alias == "davlenie") $nap [] = str_replace(" м","",$_id->text);
}
}
/* удалим дубли и разделим точкой с запятой */
$pod = implode("; ",array_unique($pod));
$mosh = implode("; ",array_unique($mosh));
$nap = implode("; ",array_unique($nap));
?>
<tr class="pupmplistItem">
<td><?php if (!empty($this->product->product_code)): ?>
<?php echo $this->product->product_code; ?>
<?php endif; ?> </td>
<td><a href="<?php echo $this->product->link; ?>"><?php echo $this->product->title; ?></a></td>
<td><?php
if (!empty($this->product->manufacturer_title)){ ?>
<a href="http://<?php echo $_SERVER['HTTP_HOST'];?>/katalog/search/<?php echo $this->product->manufacturer_alias; ?>"><?php echo $this->product->manufacturer_title; ?></a>
<?php } ?></td>
<td class="txtCenter"><?php echo $pod; ?></td>
<td class="txtCenter"><?php echo $nap; ?></td>
<td>
<?php
foreach($this->product->properties as $a=>$prop){
/* вывод свойства товарной группы с типом список значений */
if($prop->property_id == 9){
$a=0;
foreach($prop->values as $val){
$a++;
echo ' <a href="http://'.$_SERVER['HTTP_HOST'].'/katalog/search/sreda='.$val->alias.'">'.$val->title.'</a>';
if($a<count($prop->values))echo ', ';
}
}
}
?>
</td>
<td class="txtCenter"><?php echo $mosh; ?></td>
<td>
<div class="grnButton">
<div class="left"></div>
<div class="right"></div>
<div class="content">
<a href="#">запросить стоимость</a>
</div>
</div>
</td>
</tr>
В итоге получится такая картина: