Здравствуйте.
Возникла необходимость в темизации блока корзины.
Переменную $icon_class мне необходимо выводить не в заголовке блока, как это принято по умолчанию, а в контенте блока. Поэтому внес соответствующие изменения в hook_theme модуля uc_cart:
return array(
'uc_cart_block_title' => array(
'arguments' => array('title' => NULL, 'collapsible' => FALSE),
),
'uc_cart_block_title_icon' => array(
'arguments' => array('icon_class' => NULL),
),
'uc_cart_block_content_cachable' => array(
'arguments' => array(),
),
'uc_cart_block_content' => array(
'arguments' => array('help_text' => NULL, 'icon_class' => FALSE, 'items' => NULL, 'item_count' => NULL, 'item_text' => NULL, 'total' => NULL, 'summary_links' => NULL),
),
И добавил переменную в функцию темизации:
$output = '';
.....
function theme_uc_cart_block_content($help_text, $icon_class, $items, $item_count, $item_text, $total, $summary_links) {
$output = '';
// Add the help text if enabled.
if ($icon_class) {
$output .= theme('uc_cart_block_title_icon', $icon_class);
}
.....
Все выводится правильно, изображение корзины сидит внутри блока, однако после этого изменения анонимы не могут добавить товар в корзину.
Все это крутится тут: test.maxi-krasota.ru
Спецы по CMF пожалуйста подскажите что сделал не так.
Комментарии
Хакать модуль это уже не правильно, возверни все взад и работай перекрывая theme функции.
1 мертвый котенок на твоей совести.
Ну хакать я изначально не хотел. Просто я не знаю способов передать в функцию темизации нужную мне переменную без редактирования hook_theme. theme функции я и так в template.php перекрываю.
переменную $icon_class можно получить как следует из кода блока:
<?php
$product_count = count(uc_cart_get_contents());
if(variable_get('uc_cart_block_image', TRUE)) {
if(!$product_count) {
$icon_class = 'cart-block-icon-empty';
}
else {
$icon_class = 'cart-block-icon-full';
}
}
else {
$icon_class = FALSE;
}
?>
и всех делов, и не надо ничего передавать.
Класс! Спасибо огромное!
На здоровье!
Вся правда в коде прежде чем что-то делать рекомендую всегда смотреть в код которым строится тот или иной контент, и если бы Вы посмотрели в код функции uc_cart_block которая строит и отображает блок корзины то вопросов бы у Вас не возникло.
Удачи.