[РЕШЕНО] Проблема с темизацией блока корзины

Главные вкладки

Аватар пользователя darkkin@drupal.org darkkin@drupal.org 20 октября 2010 в 11:49

Здравствуйте.

Возникла необходимость в темизации блока корзины.
Переменную $icon_class мне необходимо выводить не в заголовке блока, как это принято по умолчанию, а в контенте блока. Поэтому внес соответствующие изменения в hook_theme модуля uc_cart:

function uc_cart_theme() {
  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),
     ),

И добавил переменную в функцию темизации:

function maximum_uc_cart_block_title($title, $collapsible = TRUE) {
  $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 пожалуйста подскажите что сделал не так.

Комментарии

Аватар пользователя glu2006 glu2006 20 октября 2010 в 12:51

Хакать модуль это уже не правильно, возверни все взад и работай перекрывая theme функции.

1 мертвый котенок на твоей совести.

Аватар пользователя darkkin@drupal.org darkkin@drupal.org 20 октября 2010 в 13:05

Ну хакать я изначально не хотел. Просто я не знаю способов передать в функцию темизации нужную мне переменную без редактирования hook_theme. theme функции я и так в template.php перекрываю.

Аватар пользователя glu2006 glu2006 20 октября 2010 в 13:19

переменную $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;
}
?>

и всех делов, и не надо ничего передавать.

Аватар пользователя glu2006 glu2006 20 октября 2010 в 13:31

На здоровье!
Вся правда в коде прежде чем что-то делать рекомендую всегда смотреть в код которым строится тот или иной контент, и если бы Вы посмотрели в код функции uc_cart_block которая строит и отображает блок корзины то вопросов бы у Вас не возникло.
Удачи.