О проекте

Данный сайт попытка повысить коммуникацию самых активных разработчиков на CMS Drupal - блоггеров. Если Вы ведете свой блог о Друпале, значит Вы готовы делиться вашими знаниями, помочь другим. Не всегда ваши знания доходят до потребителя. Задача данного сайта агрегировать знания различных блогов в единую ленту и привести на Ваши блоги активных пользователей.

Активность пользователей на Вашем сайте будет дополнительным стимулом к дальнейшей работе.

Удачи во всех Ваших начинаниях!

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

-7 votes
+
-

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

Общая сумма, и кол-во элементов.
В одном проекте мне потребовалось добавить в таблицу корзины индивидуальную цену одного элемента, вот так:
после некоторого ковыряния, решилось десятком строк.
1. Создаем свой модуль.
2. Реализовываем в нем хук вашмодуль_tapir_table_alter. Это позволяет расширять многие таблицы, созданные через вспомогательный конструктор таблиц - tapir. Как вы могли догадаться, корзина в Уберкарте сделана именно через tapir.
3. Делаем хук похожим на мой:
<?phpfunction 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: Drupal

Полный оригинальный материал:

Sidashin.ru