.comment { color: gray; } .keyword { font-weight: bold; } .html .atribute .value { color: green; }

вторник, 16 марта 2010 г.

Проблема с Itemid в VirtueMart

При переходе между категориями к пути в адресной строке добавляется еще один параметр Itemid. Он берется из переменной сессии. То есть если я зашел в категорию с Itemid=1, то перейдя в другую категорию с другим Itemid=2, к пути добавится Itemid=1, а не Itemid=2, и так будет пока не закончится сессия. Это плохо влияет на отображение навигации, а также на SEF урлы.
Решение нашел здесь.
Варианты предлагались разные, но этот рабочий и наиболее изящный. Редактируется класс ps_session.php, ищите функцию getShopItemid(). Вот так она должна выглядеть после редакции:
function getShopItemid() {

if( empty( $_REQUEST['shopItemid'] )) {
$db = new ps_DB;
$db->query( "SELECT id FROM #__menu WHERE link='index.php?option=com_virtuemart' AND published=1");
if( $db->next_record() ) {
$_REQUEST['shopItemid'] = $db->f("id");
}
else {
if( !empty( $_REQUEST['Itemid'] )) {
$_REQUEST['shopItemid'] = intval( $_REQUEST['Itemid'] );
}
else {
$_REQUEST['shopItemid'] = 1;
}
}

// ЗДЕСЬ СОБСТНО ДОПОЛНЕНИЯ
} else {
return intval($_REQUEST['Itemid']);
}
// КОНЕЦ ДОПОЛНЕНИЯ
return intval($_REQUEST['shopItemid']);
}
Логика проста, если Itemid установлено (а при переходе в другую категорию оно передается), то функция не меняет его на сессионную переменную и оставляет как есть, что нам и нужно.

среда, 13 января 2010 г.

Расположение описания категории в Virtuemart

Virtuemart 1.1.3

У каждой категории, в том числе и у подкатегории, есть описание. Изначально оно располагается ниже элементов категории. Что бы описание располагалось сверху, необходимо в файле
components/com_virtuemart/thems/default/templates/browse/includes/browse_header_category.tpl.php
поменять местами следующие куски кода:
<\?php echo $navigation_childlist; ?>
- строка 14 и
<\?php echo $desc; ?>
- строка 19


Дополнено:

Если быть точным, то вместе с куском кода:
<\?php echo $desc; ?>
должен идти кусок с проверкой на НЕ ПУСТУЮ $desc, типа:
<\?php if( trim(str_replace( "
", "" , $desc)) != "" ) { ?>
и
<\?php } ?>
То есть весь кусок кода, который нужно будет двигать выглядит так(без слэшов перед ?php):
<\?php if( trim(str_replace( "
", "" , $desc)) != "" ) { ?>
<\?php echo $desc; ?>
<\?php } ?>