Сustom display cart - Ubercart 3. Как вывести поле вес в режим просмотр корзины Ubercart 3 ?

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

Аватар пользователя veshiyi veshiyi 1 декабря 2014 в 17:12

Добрый день. Подскажите пожалуйста как добавить поле "Вес" продукта (Ubercart 3) в функцию просмотр корзины (/cart).

нашел хук, добавляет поле Weight в cart_display, но вот числовое значение веса продукта не выводит.

function uc_mymodule_form_alter(&$form, $form_state, $form_id) {
if ($form_id = 'uc_cart_view_form') {
// Add an extra column Weight to the cart pane between Qty. and Total
$form['items']['#columns']['weight'] = array('cell' => 'weight', 'weight' => 3);
// let's show the data
foreach ($form['items'] as $key => $item) {
if (is_numeric($key)) {
if (isset($form['items'][$key]['nid'])) {
$node = node_load($form['items'][$key]['nid']['#value']);
$form['items'][$key]['weight'] = array('#type' => 'value', '#value' => $node->weight[0]['value'], '#theme' => 'uc_product_weight');
}
}
}
}
}

подскажите пожалуйста, где и что надо поправить?

Комментарии

Аватар пользователя veshiyi veshiyi 2 декабря 2014 в 10:07

решил таким хуком

<?php
function custom_tapir_tapir_table_alter(&$table, $table_id) {
if ($table_id != 'uc_cart_view_table') return;
// Register new column to tapir

$table['#columns']['weight_item'] = array(
'cell' => t('Weight'),
'weight' => 2.1, );
foreach (element_children($table) as $key) {
if (empty($table[$key]['nid']['#value'])) continue;
// This db-expensive node_load call can be easily avoided by using
// single SQL select. But,
// that's not so important if visitor usually adds 1-5 products to cart.
$n = node_load($table[$key]['nid']['#value']);
$p = $n->weight; // Add data to our new column
$table[$key]['weight_item'] = array(
'#theme' => 'uc_product_weight',
'#amount' => $p,
'#cell_attributes' => array('class' =>array('weight')) );
}
}