Добавляем поле "Цена" на страницу корзины в Ubercart

На странице /cart в Уберкарте показываются только такие поля:

Общая сумма, и кол-во элементов.

В одном проекте мне потребовалось добавить в таблицу корзины индивидуальную цену одного элемента, вот так:

после некоторого ковыряния, решилось десятком строк.

1. Создаем свой модуль.
2. Реализовываем в нем хук вашмодуль_tapir_table_alter. Это позволяет расширять многие таблицы, созданные через вспомогательный конструктор таблиц - tapir. Как вы могли догадаться, корзина в Уберкарте сделана именно через tapir.
3. Делаем хук похожим на мой:

<?php
function mymodule_tapir_table_alter(&$table, $table_id) {
  if (
$table_id != 'uc_cart_view_table') return;
 
 
// "Регистрируем" новую колонку
 
$table['#columns']['price_item'] = array(
   
'cell' => t('Price'),
   
'weight' => 2.5,
  );
 
  foreach (
element_children($table) as $key) {
    if (empty(
$table[$key]['nid']['#value'])) continue;
     
     
// Вообще, тут можно легко избежать "дорогого" в плане нагрузки вызова node_load, и обойтись sql селектом. Но, если у вас у пользователя обычно бывает 1-5 товаров в корзине, этим можно пренебречь.
     
$n = node_load($table[$key]['nid']['#value']);
     
$p = uc_price($n -> sell_price, array());

     

// И добавляем в новую колонку данные.
     
$table[$key]['price_item'] = array('#value' => $p, '#cell_attributes' => array('class' => 'price-item'));

   }
}

?>

end of story :)

Blog categories: 
24/11/2010 - 00:03

Comments

Спасибо, не знал о tapir.

А зачем новый модуль? Не проще ли это было закинуть сразу в template.php ?

я не уверен, что этот хук сработает из темы. И даже если сработает - этот функционал может понадобиться на других активных темах сайта. Попробуйте, может и из template.php заведется, но по-моему не должен.

Да действительно данный код из template.php не работает.
Пробовал на каталоге фирм BizLine.com.ua

Я бы еще кое-чего добавил конечно же, но по сути сказано практически все.

тест

Уважаемый автор, а не подскажите как добавить вместо цены термины таксономии этих товаров, которые в корзине?

Post new comment

  • No HTML tags allowed.
  • Lines and paragraphs break automatically.

Об авторе

Drupal developer

Антон Сидашин

Веб-разработчик (подробнее)

Комментарии

rss