[частично решено] Изменить вид корзины

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

Аватар пользователя revanto revanto 19 октября 2011 в 19:42

Здравствуйте!
Очень нужно изменить вид корзины в Ubercart 3 под Drupal 7.8. Убрать все текстовые ссылки и сделать только одну иконку, у которой рядом будет написано что-то вроде "В корзине Х товаров на Y рублей". Иконка уже запускает просмотр корзины в блоке "content".
Я ковырялся в тексте соответствующего модуля, там все сделано через массивы такого вида:

$summary_links = array(
        'cart-block-view-cart' => array(

          'href' => 'cart',
          'attributes' => array('rel' => 'nofollow'),
        ),
      );

То есть, условно, вот эту функцию t('View cart') заменить бы на стандартную функцию вывода картинки - но как?
Прошу помочь!
Для Drupal 6.x для корзины написано много интересного, а вот для 7.х практически ничего нет.

И еще вопрос - проще ли или сложнее ли подобную задачу решить на eCommerce?

UPD: Нашел решение через CSS.
Оно мне не очень нравится, но уровень знаний другого не позволяет.
Вот как это выглядит (лишние строчки опускаю):

#block-uc-cart-cart
 {  background: #fff url(/sites/default/files/cart.png) no-repeat 10px 10px;  }

#block-uc-cart-cart table[class=cart-block-items] { display: none; }

#block-uc-cart-cart table[class=cart-block-summary]
 { position:relative;
   top:25px;
   left:60px; }

#block-uc-cart-cart li { border:none; }

#block-uc-cart-cart li a
 { display:block;
   width:40px;
   height:40px;
   position:absolute;
   top:-15px;
   left:-50px; }

#block-uc-cart-cart li[class="cart-block-checkout last"] { display: none; }

Плюс в тексте модуля в t('View cart') надо убрать текст.

Остаются артефакты - правее и ниже остается небольшая текстовая зона (ее можно "нащупать" мышкой, вид курсора меняется). Если не вставить строчку #block-uc-cart-cart li { border:none; } справа от этой области появляется граница. Как избавиться от этой области, сохранив ссылку, я не нашел.
Мне кажется, в строке 'title' => t('View cart'), вместо t('View cart') можно закинуть какое-то пустое значение, и тогда эта область исчезнет, но я не соображу, какое именно.

Если можно что-то улучшить, прошу прокомментировать.

Комментарии

Аватар пользователя inglar inglar 3 ноября 2011 в 23:28

Вам нужно просто текст убрать?
ну в css так можно убрать
какой то ID или class {
display: block;
text-indent: -9999px;
width: 0;
}

Аватар пользователя SergO SergO 10 ноября 2011 в 10:00
Переопределив в template.php функцию theme_uc_cart_block_content (contrib/ubercart/uc_cart/uc_cart.module, line 574), можно с видом корзины реализовать все свои самые извращённые желания.
Аватар пользователя realovich realovich 13 апреля 2012 в 15:45

Открываем template.php нашей темы и переопределяем вышеуказанную функцию таким образом:

<?phpfunction YOURTHEME_uc_cart_block_summary($variables) {
  $item_count = $variables['item_count'];
  $item_text = $variables['item_text'];
  $total = $variables['total'];
  $summary_links = $variables['summary_links'];

  $output = '<table class="cart-block-summary"><tbody><tr>'
           . '<td class="cart-block-summary-items">В вашей корзине<br />' . $item_text . '<br />на сумму ' . theme('uc_price', array('price' => $total)) . '</td></tr>';
  $output .= '</tbody></table>';

  return $output;
}?>

*Меняем YOURTHEM на название нашей темы.