ВопросДополнительные поля в таблице корзины Ubercart

Корзина делалась до меня, в ней добавлены колонки с выводящимися данными.

Данные выбирвются модулем при помощи форм.

Теперь по дизайну нужно изменить и выводить не в колонках, а в одну строку под названием товара все эти данные.

Как это сделать или как добавить ещё одну строку и переместить все данные форм туда.

Зарание благодарен за помошь!

Комментарии

Аватар пользователя Spleshka
Spleshka написал:

Скажите, какая версия Друпала и Уберкарта? На самом деле, уберкарт довольно деревянный в этом плане. Я помню как-то даже пришлось переписывать всю страницу с выводом корзины, т.к. нельзя было сделать как-то иначе..

10.12.2011 03:35
Аватар пользователя Михаил
Михаил написал:

Drupal 6
Ubercart 2

10.12.2011 10:16
Аватар пользователя Spleshka
Spleshka написал:

Я наверное вас растрою, но именно с этими версиями я и работал. Посмотрите на вывод страницы /cart:

function uc_cart_view() {
  // Failsafe so that this function only works when called with no arguments.
  // This prevents the accidental wiping of the cart_order session variable.
  if (func_num_args() > 0) {
    return drupal_not_found();
  }
 
  // Clear the cart order session variable if it exists.
  if (!empty($_SESSION['cart_order'])) {
    unset($_SESSION['cart_order']);
  }
 
  // Load the array of shopping cart items.
  $items = uc_cart_get_contents();
 
  // Display the empty cart page if there are no items in the cart.
  if (empty($items)) {
    return theme('uc_empty_cart');
  }
 
  // Load through the cart panes...
  $output = '';
  foreach (uc_cart_cart_pane_list($items) as $pane) {
    // If the pane is enabled...
    if ($pane['enabled']) {
      // Add its output to the cart view.
      $output .= $pane['body'];
    }
  }
 
  // Add a custom cart breadcrumb if specified.
  if (($text = variable_get('uc_cart_breadcrumb_text', '')) !== '') {
    $link = l($text, variable_get('uc_cart_breadcrumb_url', '<front>'));
    drupal_set_breadcrumb(array($link));
  }
 
  return $output;
}

Всё жёстко забито. Никаких имплементаций, к сожалению, нет. Единственное, что я могу вам предложить, это заменить в своём модуле вывод страницы cart. Выглядеть это будет приблизительно так (файл ИМЯМОДУЛЯ.module):

<?php
 
/**
 * Implementation of hook_menu_alter()
 */
function ИМЯМОДУЛЯ_menu_alter(&$items) {
  $items['cart']['page callback'] = 'ИМЯМОДУЛЯ_cart_view';
  $items['cart']['file'] = 'ИМЯМОДУЛЯ.pages.inc';
}

Файл ИМЯМОДУЛЯ.pages.inc:

<?php
 
function ИМЯМОДУЛЯ_cart_view() {
  if (module_exists('uc_cart')) {
    // И тут уже реализация вывода корзины. Можно программно вызывать views, напримре.
    // Или изменить код существующей функции uc_cart_view().
  }
}

Надеюсь, идею вы уловили.

10.12.2011 22:42
Аватар пользователя Sadchenko
Sadchenko написал:

Столкнулся с Drupal'ом 6-м, и та же самая проблема. Не подскажете, есть ли документация именно по выводу корзины? как правильно выводить коризину с помощью своего модуля?
Что писать именно в самом теле

function ИМЯМОДУЛЯ_cart_view() {
  if (module_exists('uc_cart')) {
    // И тут уже реализация вывода корзины. Можно программно вызывать views, напримре.
    // Или изменить код существующей функции uc_cart_view().
  }
}
31.07.2016 03:17

Комментировать