Есть два файла отвечающие за вывод товара . На одном из форумов посоветовали Order by `type_name`. Однако к желаемому результате не привело.
1. Compare.tpl
<?
if( !isset( $_COOKIE['compare'] ) || $_COOKIE['compare'] == '{}'){
$compare_html = '<p class="no-compare">Не выбраны товары для сравнения</p>';
}else{
$data = json_decode($_COOKIE['compare'],true);
$in_arr = implode(',',$data);
$sql = "SELECT
`i`.`id` as `type_id`,
`i`.`name` as `type_name`,
`c`.`id` as `cat_id`,
`c`.`name` as `cat_name`,
`ci`.`id` as `item_id`,
`jva`.`attr` as `attr_id`,
`jva`.`name` as `attr_name`,
`jva`.`value` as `attr_value`
FROM `plug_cat_join_cat_item` as `ci`
JOIN (
SELECT `v`.`write_id`, `v`.`attr`, `v`.`value`, `a`.`name` FROM `plug_cat_vals` as `v`
INNER JOIN `plug_cat_attr` as `a` ON `a`.`id` = `v`.`attr`
) `jva` ON `jva`.`write_id` = `ci`.`id`
INNER JOIN `plug_cat_item` as `i` ON `i`.`id` = `ci`.`item`
INNER JOIN `plug_cat_cat` as `c` ON `c`.`id` = `ci`.`cat`
WHERE `ci`.`id` IN (".$in_arr.")
ORDER BY `item_id` ";
$itms = $db->GetTable($sql);
$items = array();
foreach ($itms as $item) {
//$i = isset($items[$item['cat_id']]) ? sizeof($items[$item['cat_id']])+1 : 0;
$items[$item['cat_id']][$item['item_id']]['id'] = $item['item_id'];
$items[$item['cat_id']][$item['item_id']]['cat_id'] = $item['cat_id'];
$items[$item['cat_id']][$item['item_id']]['cat_name'] = $item['cat_name'];
if( $item['attr_id'] == 1 ){
$items[$item['cat_id']][$item['item_id']]['item_name'] = ( $item['attr_value']!='' ) ? $item['attr_value'] : $item['type_name'];
}
if( $item['attr_id'] == 3 ){
$items[$item['cat_id']][$item['item_id']]['item_price'] = ( $item['attr_value']!='' ) ? $item['attr_value'].' руб.' : 'Не указано';
}
if( $item['attr_id'] == 6 ){
$items[$item['cat_id']][$item['item_id']]['item_image'] = ( $item['attr_value']!='' ) ? $item['attr_value'] : '/plugins/catalog/front/img/default.gif';
}
if( $item['attr_id'] > 11 )
{
$items[$item['cat_id']][$item['item_id']]['attrs'][$item['attr_id']]['name'] = $item['attr_name'];
$items[$item['cat_id']][$item['item_id']]['attrs'][$item['attr_id']]['attr'] = $item['attr_id'];
$items[$item['cat_id']][$item['item_id']]['attrs'][$item['attr_id']]['value'] = $item['attr_value'];;
}
}
//$items = array_values($items);
$compare_html = '<a class="compare_print" href="javascript:window.print()">Распечатать страницу</a>';
foreach ($items as $cid => $itm) {
$table = '<p class="compare_table_name">'.$itm[key($itm)]['cat_name'].'</p>
<table class="compare_table">
<thead>
<tr>
<th>Товар</th>
<th>Цена</th>';
foreach ($itm[key($itm)]['attrs'] as $key => $value) {
$table .=' <th>'.$value['name'].'</th>';
}
$table .=' </tr>
</thead>
<tbody>';
$row = 1;
foreach ($itm as $item) {
$class = $row%2 == 0 ? 'odd' :'';
$table .= '<tr class="'.$class.'">
<td class="item-column">
<a class="item-link" href="'.$catalog->getItemURL($item['id']).'">
<img src="'.$item['item_image'].'" width="100px" />
<span>'.$item['item_name'].'</span>
<a href="#" class="del-compare" onClick="delCompare('.$item['id'].');location.reload();">Убрать из сравнения</a>
</a>
</td>
<td>'.$item['item_price'].'</td>';
foreach ($item['attrs'] as $key => $value) {
$table .= '<td>'.$value['value'].'</td>';
}
$table .= '</tr>';
$row++;
}
$table .= '</tbody>
</table>';
$compare_html .= $table;
}
}
?>
<div class="catalog">
<div class="compare">
<?=$compare_html?>
</div>
</div>
И tpl.tpl
<?
if( !preg_match('/\\/order(\\/{0,}$)/', $_SERVER['REQUEST_URI']) && $catalog->curCatId == 0 && $catalog->curItemId == 0 )
//$catalog->refFirstCatItem();
?>
<div class="catalog">
<?
if( $currentItemId==0 )
{
//$viewInPage = ( isset( $_GET['v'] ) && $_GET['v']>3 && $_GET['v']<28 && ($_GET['v'] % 4)==0 ) ? (int)$_GET['v'] : 12;
/*?>
<div class="for_select_view">
<?=$tpl->plug['cat_search']['content']?>
<label>Отображать количество на странице: </label>
<select name="view_cat_items">
<option <?if($viewInPage==4)echo 'selected="selected"';?> value="4">4</option>
<option <?if($viewInPage==8)echo 'selected="selected"';?> value="8">8</option>
<option <?if($viewInPage==12)echo 'selected="selected"';?> value="12">12</option>
<option <?if($viewInPage==16)echo 'selected="selected"';?> value="16">16</option>
<option <?if($viewInPage==20)echo 'selected="selected"';?> value="20">20</option>
<option <?if($viewInPage==24)echo 'selected="selected"';?> value="24">24</option>
<option <?if($viewInPage==28)echo 'selected="selected"';?> value="28">28</option>
</select>
</div>
<?*/
}
?>
<?
$cat_info = $catalog->getCatInfo($catalog->curCatId);
?>
<?
if( $currentItemId==0 ){
$itemsArr = array();
$viewInPage = ( isset( $_GET['v'] ) && $_GET['v']>3 && $_GET['v']<28 && ($_GET['v'] % 4)==0 ) ? (int)$_GET['v'] : 10;
$currPage = ( isset( $_GET['c'] ) && $_GET['c']>0 ) ? (int)$_GET['c'] : 1;
$itemsArr = $catalog->getItemList( $currentCatId, $currPage, $viewInPage );
$attrsArr = $catalog->getAttrsList($currentCatId);
$item_html ='';
$totalPages = $catalog->allViewPage;
$pagination = '<div class="pagination">';
if($totalPages>1){
$viewInPageClearLink = preg_replace('/[?|&](.*)?/', '', $_SERVER['REQUEST_URI']);
for($i = 1; $i<=$totalPages;$i++){
$active = $i == $currPage ? 'active' : '';
$params = $_GET;
$params['c'] = $i;
$viewPageLink = '?'.http_build_query($params);
$pagination .= '<a href="'.$viewPageLink.'" class="page '.$active.'">'.$i.'</a>';
}
}
$pagination .= '</div>';
?>
<h1><?=$cat_info['name']?></h1>
<div class="cat_list">
<?
echo $catalog->getCatList($catalog->curCatId,0,1);
?>
</div>
<?
if( $itemsArr != NULL ){
ob_start();
//$compare = isset($_COOKIE['compare'])?json_decode($_COOKIE['compare'], true):array();
?>
<div class="cat_itemlist">
<?
foreach( $itemsArr as $vvv ){
if( $vvv['price']=='' ) $vvv['price'] = '0';
$price = ( $vvv['price'] != '0' && $vvv['price'] != '' ) ? number_format($vvv['price'], 2 , ',' , ' ').' руб' : '';
$discountedPrice = ( $vvv['discountedPrice'] != '0' && $vvv['discountedPrice'] != '' ) ? number_format($vvv['discountedPrice'], 2 , ',' , ' ').' руб' : '';
?>
<div class="catalog-item" id="<?=$vvv['id']?>">
<div class="item-image">
<a class="name" href="<?=$vvv['link']?>">
<img width="150px" src="<?=$vvv['img']?>">
<span><?=$vvv['name']?></span>
</a>
</div>
<div class="item-price">
<? if($vvv['discount'] != 0){?>
<p class="usualprice">Цена: <span><?=$price?></span></p>
<p class="discountedprice"><span><?=$discountedPrice?></span></p>
<p class="catalog-item-discount">c учетом Вашей скидки <span><?=$vvv['discount']?>%</span></p>
<?} else {?>
<p class="price">Цена: <?=$vvv['price']?> руб.</p>
<?}?>
</div>
<div class="btns">
<input type="text" name="item_coun_put" value="1" />
<button class="put" onclick="plugCatPut(<?=$vvv['id']?>);return false">В корзину</button>
</div>
</div>
<?
}
?>
</div>
<?
$item_html = ob_get_clean();
}
$page->page['title'] = $page->page['id']==1 || $catalog->curCatId == 0 ? $page->page['title'] : $cat_info['name'];
echo '<div class="cat_description">'.$cat_info['description'].'</div>'.$item_html.$pagination;
$page->page['title'] = '';
$page->page['meta_title'] .= ' - '.$cat_info['name'];
}
?>
<?
if($currentItemId!=0)
{
$catalog->loadItemData( $currentItemId );
$page->page['meta_title'] = $catalog->itemTitle;
$page->page['meta_keywords'] = $catalog->itemKeywords;
$page->page['meta_description'] = $catalog->itemDescription;
$page->page['extra_meta'] .= $catalog->itemMeta;
$page->page['title'] = '';
$itemImage = $catalog->itemImage;
$itemImage = ( $itemImage!='' && file_exists( $_SERVER['DOCUMENT_ROOT'].$itemImage ) ) ? $itemImage : '/plugins/catalog/front/img/default.gif';
$itemDescript = $catalog->itemDescript;
//$compare = isset($_COOKIE['compare'])?json_decode($_COOKIE['compare'], true):array();
/* извлекаем в массив все картинки из описания товара */
//preg_match_all('/<img.*?alt="(.*?)"/',$itemDescript, $titlesArr);
/* сносим все картинки из описания товара */
/* preg_match_all('<img.+?src=[\"\'](.+?)[\"\'].+?>',$itemDescript, $imgsArr);
$itemDescript = preg_replace('/<img[^>]+>/i', '', $itemDescript);
*/
$backurl = preg_replace('/\\/item\\/.*/', '/', $_SERVER['REQUEST_URI']);
$attrsArr = $catalog->getAttrsListByItem($currentItemId);
?>
<div class="cat_itemData" id="<?=$catalog->curItemId?>">
<div class="item-left">
<div class="main-image">
<a rel="group" href="<?=$itemImage?>" class="lightbox">
<img src="<?=$itemImage?>" />
</a>
</div>
<?
if(sizeof($catalog->itemExtraImages)>0){
?>
<div class="additional-images">
<?
$i = 1;
foreach ($catalog->itemExtraImages as $img) {
$class = $i%3 == 0 ? 'third' : '';
echo '<a rel="group" href="'.$img.'" class="'.$class.' lightbox"><img src="'.$img.'" /></a>';
$i++;
}
?>
</div>
<?
}
?>
</div>
<div class="item-right">
<div class="item-name">
<h1><?=$catalog->itemName?></h1>
</div>
<div class="item-description">
<?=$itemDescript?>
</div>
<? if(sizeof($attrsArr)>0){
?>
<div class="item-attrs">
<?
foreach ($attrsArr as $attr){
?>
<div class="item-attr item-attr-<?=$attr['id']?>">
<span class="attr-name"><?=$catalog->itemOther[$attr['id']]['name']?>:</span>
<span class="attr-value"><?=$catalog->itemOther[$attr['id']]['value']!=''?$catalog->itemOther[$attr['id']]['value']:'Не указано'?></span>
</div>
<?
}
?>
</div>
<?
}
$price = ( $catalog->itemPrice != '0' && $catalog->itemPrice != '' ) ? number_format($catalog->itemPrice, 2 , ',' , ' ').' руб' : 'Не указано';
$discounedPrice = number_format($catalog->itemDiscountedPrice, 2 , ',' , ' ').' руб';
?>
<? if($catalog->itemDiscount != 0){?>
<div class="usualprice">Цена: <span><?=$price?></span></div>
<div class="discountedprice"><span><?=$discounedPrice?></span></div>
<div class="catalog-item-discount">c учетом скидки <span><?=$catalog->itemDiscount?>%</span></div>
<?} else {?>
<div class="item-price">Цена:<span class="price-value"><?=$price?></span></div>
<?}?>
<div class="btns">
Количество:
<input type="text" name="item_coun_put" value="1" />
<button class="put" onclick="plugCatPut(<?=$catalog->curItemId?>);return false">В корзину</button>
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
$(".lightbox").fancybox();
});
</script>
</div>
<?
//Если кукисы есть
if (isset($_COOKIE['vitems'])) {
//Получаем массив кукисов
$ArrayCookies=json_decode($_COOKIE['vitems'],true);
//если элементов больше 10 то удаляем 1й элемент
// var_dump($ArrayCookies);
// echo '<br />';
if (sizeof($ArrayCookies)>10) array_pop($ArrayCookies);
//Добавляем в массив id только что посещенного товара
array_unshift($ArrayCookies, $catalog->curItemId);
//На всякий случай удаляем повторяющиеся элементы, что бы небыло повторов
// var_dump($ArrayCookies);
// echo '<br />';
$ArrayCookies = array_unique($ArrayCookies);
// var_dump($ArrayCookies);
// echo '<br />';
//Записываем массив обратно в кукисы
setcookie("vitems", json_encode($ArrayCookies),time()+86400, "/");
?>
<div class="v_items">
<p>Ранее вы смотрели:</p>
<?
foreach ($ArrayCookies as $item) {
if($item != $catalog->curItemId){
$data = $catalog->getViewedItem($item);
$name = strlen($data['name'])>57 ? mb_substr($data['name'], 0, 57, 'UTF-8').'...': $data['name'];
?>
<div class="v_item">
<a href="<?=$data['url']?>">
<img src="<?=$data['image']?>" />
<span><?=$name?></span>
</a>
<span class="v_item_price"><?=number_format((double)$data['price'], 0 , '' , ' ');?> р</span>
</div>
<?
}
}
?>
</div>
<?
}
else
{
//Если кукисов нет, то записываем наш id
setcookie("vitems", json_encode(array($catalog->curItemId)),time()+86400, "/");
//var_dump('EMPTY!!!');
}
}
?>
</div>