Тележка Ubercart - совмещаем с Видами Views

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

Аватар пользователя Eugef Eugef 30 мая 2008 в 16:43

Давно меня мучила проблема - в стандартный вывод каталога Ubercart нельзя было вставить отображение дополнительных свойств товара сделанных с помощью CCK. Зато это можно легко сделать с Views.
Но если Видом переопределить стандартную страницу каталога - то терялась навигация по разделам каталога, а она в Ubercart сделана очень даже хорошо.

В общем от Вида хотелось взять настраиваемую таблицу вывода товаров, а от каталога Ubercart - навигацию по разделам и все это объединить.

После нескольких часов упорной работы мысли и чтения drupal.org нашел простое решение - вставить вывод Вида внутрь страницы каталога, еще час пошел на то, чтобы это сделать и отладить, в результате вышел вот такой код, который надо вставить в файл template.php темы. Предварительно нужно создать Вид, который будет отображать товары, добавить в него аргумент "Term ID" и назвать 'products'

<?php
/**
* Display a formatted catalog page.
*
* If the category has products in it, display them in a TAPIr table. Subcategories
* are linked along the top of the page. If it does not have products, display
* subcategories in a grid with their images and subcategories.
*
* param $tid
* Catalog term id from URL.
* return
* Formatted HTML of the catalog page.
*/
function phptemplate_uc_catalog_browse($tid = 0) {
drupal_add_css(drupal_get_path('module', 'uc_catalog') .'/uc_catalog.css');

$output = '';
$catalog = uc_catalog_get_page((int)$tid);
drupal_set_title(check_plain($catalog->name));
drupal_set_breadcrumb(uc_catalog_set_breadcrumb($catalog->tid));
$types = module_invoke_all('product_types');
$links = array();
$child_list = array();
foreach ($catalog->children as $child) {
if ($child->nodes) {
$links[] = array('title' => $child->name . (variable_get('uc_catalog_breadcrumb_nodecount', false) ? ' ('. $child->nodes .')' : ''), 'href' => uc_catalog_path($child),
'attributes' => array('rel' => 'tag'),
);
}
if ($child->image) {
$image = '

';
if (module_exists('imagecache')) {
$image .= l(theme('imagecache', 'category', $child->image['filepath']), uc_catalog_path($child), array(), null, null, false, true);
}
else {
$image.= l(theme('image', $child->image['filepath']), uc_catalog_path($child), array(), null, null, false, true);
}
$image .= '

';
}
else {
$image = '

';
}
$grandchildren = array();
$j = 0;
$max_gc_display = 3;
foreach ($child->children as $i => $grandchild) {
if ($j > $max_gc_display) {
break;
}
$g_child_nodes = 0;
foreach ($types as $type) {
$g_child_nodes += taxonomy_term_count_nodes($grandchild->tid, $type);
}
if ($g_child_nodes) {
$grandchildren[$i] = l($grandchild->name, uc_catalog_path($grandchild), array('class' => 'subcategory'));
$j++;
}
}
//$grandchildren = array_slice($grandchildren, 0, intval(count($grandchildren) / 2) + 1, true);
if ($j > $max_gc_display) {
array_push($grandchildren, l(t('More...'), uc_catalog_path($child), array('class' => 'subcategory')));
}
if ($child->nodes) {
//drupal_set_message('

'.print_r($child, true).'

');
//drupal_set_message('

'.uc_catalog_path($child).'

');
$cell_link = $image .''. l($child->name, uc_catalog_path($child)) .'';
if (variable_get('uc_catalog_show_subcategories', true)) {
$cell_link .= "
". implode(', ', $grandchildren) ."\n";
}
$child_list[] = $cell_link;
}
}

// Display table of child categories similar to an osCommerce site's front page.
$columns = variable_get('uc_catalog_category_columns', 3);
$cat_rows = array();
$row = array();
$i = 1;
foreach ($child_list as $cell) {
$row[] = array('data' => $cell, 'class' => 'category');
if ($i % $columns == 0) {
$cat_rows[] = $row;
$row = array();
}
$i++;
}
if (count($row) > 0 && count($row) < $columns) {
if (count($cat_rows) >= 1) {
$row = array_merge($row, array_fill(count($row), $columns - count($row), array('data' => ' ', 'class' => 'category')));
}
$cat_rows[] = $row;
}

/*
*
* вот здесь вместо стандартного вывода товаров - вставляем Вид
*/
if ($tid != 0) {
$view_name = 'products'; //а это название вида, который мы вставляем
$view_args = array($tid);
$view = views_get_view($view_name);
$view->url = $_GET['q'];
$catalog->products = views_build_view('embed', $view, $view_args, $view->use_pager, $view->nodes_per_page);
} else {
$catalog->products = '';
}

if ($catalog->products) {
if ($catalog->image) {
$output .= '

'. theme('imagecache', 'thumbnail', $catalog->image['filepath'], $catalog->name, $catalog->name, array('class' => 'category')) .'

';
}
if ($catalog->description) {
$output .= '

'. $catalog->description .'

';
}
$output .= theme('table', array(), $cat_rows, array('class' => 'category'));
$output .= $catalog->products;
} else {
if ($catalog->image && $catalog->description) {
$output .= '

'. theme('imagecache', 'thumbnail', $catalog->image['filepath'], $catalog->name, $catalog->name, array('class' => 'category')) .'

';
$output .= '

'. $catalog->description .'

';
}
$output .= theme('table', array(), $cat_rows, array('class' => 'category'));
}
return $output;
}
?>

Если кому-то пригодится - готов ответить на все интересующий вопросы!

Комментарии

Аватар пользователя relogger relogger 31 мая 2008 в 10:31

Добрый день!
У меня стоит уберкарт, есть атрибуты товаров, я хочу добавить эти атрибуты к названию товара. Чтобы было видно какие размеры и цвета доступны. Ваш код решает этот вопрос?

Аватар пользователя Eugef Eugef 31 мая 2008 в 12:32

Если Вы добавите атрибуты товара в поля Вида - тогда решает!
Я сам атрибутами не пользуюсь - предпочитаю вместо них создавать ССК-поля нужного мне типа, и их выводить в Вид.

Аватар пользователя Didro Didro 9 августа 2008 в 17:50

Большое спасибо, очень полезно!

Однако пробую темизировать вид списка товаров при помощи wiews theme wizard и phptemplate,
и не могу добиться никакого результата.
Подскажите, в каком направлении копать?

апдейт:
прошу прощения, проблема решена. Вышеуказанный прекрасно совместим с темизацией.
Еще раз спасибо автору!

Аватар пользователя saken saken 27 сентября 2008 в 2:36

"Eugef" wrote:
Как выглядит Ubercart + Views - можно посмотреть здесь: http://disk-i-shina.com.ua/catalog/diski-alessio-arizona
На странице отображается раздел каталога, а список товаров сдела с помощью Вида

а чем сделан Подбор дисков и шин по авто как здесь ?

Аватар пользователя qman qman 3 января 2009 в 0:03

Не могу найти, каким образом в ubercart вводится кол-во товара на складе!
Как вы организовали отображение есть в наличии и отсутствует на складе?
Большое спасибо.
Возможно ли убрать поля - список стран и список областей , или ограничить список областей?

Аватар пользователя Terys Terys 17 февраля 2009 в 21:22

Повторю вопросик, может кто услышит.
Нужно что бы в категории картинка булы ссылкой на товар. Как это сделать? Готов оплатить помощь.

Аватар пользователя Sywooch Sywooch 21 февраля 2009 в 2:39

если вы имеете ввиду в списке товаров картинки залинкованы были на товар то это вроди не есть проблема. Опишите вопрос внятнее???

Аватар пользователя cpu cpu 18 июня 2009 в 14:57

Вопрос ко всем, кто это реализовал:
Какие у вас настройки views?

У меня послу вставки этого кода, вместо картинок(привязанных к термину), вот это -
<img src="http://mysite.ru/sites/default/files/imagecache/category/image1.jpg" alt="" title="" class="imagecache imagecache-category" />

Аватар пользователя rotkiv rotkiv 19 июня 2009 в 15:37

Я переделал чуть под 6 друпал так как там views_build_view нет.
У меня таже проблема что и у cpu, но посидел и вроде разобрался вот код(может быть чуть кривоват) под drupal 6
Вообще код взят из модуля вывода самого ubercart и чуть подправил сам)

<?php
/**
 * Display a formatted catalog page.
 *
 * If the category has products in it, display them in a TAPIr table. Subcategories
 *   are linked along the top of the page. If it does not have products, display
 *   subcategories in a grid with their images and subcategories.
 *
 * param $tid
 *   Catalog term id from URL.
 * return
 *   Formatted HTML of the catalog page.
 */
function phptemplate_uc_catalog_browse($tid 0) {
  
drupal_add_css(drupal_get_path('module''uc_catalog') .'/uc_catalog.css');

  

$output '';
  
$catalog uc_catalog_get_page((int)$tid);
  
drupal_set_title(check_plain($catalog->name));
  
drupal_set_breadcrumb(uc_catalog_set_breadcrumb($catalog->tid));
  
$types uc_product_types();
  
$links = array();
  
$child_list = array();
  foreach (
$catalog->children as $child) {
    if (!empty(
$child->nodes)) {
      
$links[] = array('title' => $child->name . (variable_get('uc_catalog_breadcrumb_nodecount'FALSE) ? ' ('$child->nodes .')' ''), 'href' => uc_catalog_path($child),
        
'attributes' => array('rel' => 'tag'),
      );
    }
    if (!empty(
$child->image)) {
      
$image '<div>';
      if (
module_exists('imagecache')) {
        
$image .= l(theme('imagecache''uc_category'$child->image['filepath']), uc_catalog_path($child), array('html' => TRUE));
      }
      else {
        
$image .= l(theme('image'$child->image['filepath']), uc_catalog_path($child), array('html' => TRUE));
      }
      
$image .= '</div>';
    }
    else {
      
$image '<div></div>';
    }
    
$grandchildren = array();
    
$j 0;
    
$max_gc_display 3;
    foreach (
$child->children as $i => $grandchild) {
      if (
$j $max_gc_display) {
        break;
      }
      
$g_child_nodes 0;
      foreach (
$types as $type) {
        
$g_child_nodes += taxonomy_term_count_nodes($grandchild->tid$type);
      }
      if (
$g_child_nodes) {
        
$grandchildren[$i] = l($grandchild->nameuc_catalog_path($grandchild), array('class' => 'subcategory'));
        
$j++;
      }
    }
    
//$grandchildren = array_slice($grandchildren, 0, intval(count($grandchildren) / 2) + 1, TRUE);
    
if ($j $max_gc_display) {
      
array_push($grandchildrenl(t('More...'), uc_catalog_path($child), array('class' => 'subcategory')));
    }
    if (
$child->nodes) {
      
$cell_link $image .'<strong>'l($child->nameuc_catalog_path($child)) .'</strong>';
      if (
variable_get('uc_catalog_show_subcategories'TRUE)) {
        
$cell_link .= "<br/><span>"implode(', '$grandchildren) ."</span>\n";
      }
      
$child_list[] = $cell_link;
    }
  }

  

// Display table of child categories similar to an osCommerce site's front page.
  
$columns variable_get('uc_catalog_category_columns'3);
  
$cat_rows = array();
  
$row = array();
  
$i 1;
  foreach (
$child_list as $cell) {
    
$row[] = array('data' => $cell'class' => 'category');
    if (
$i $columns == 0) {
      
$cat_rows[] = $row;
      
$row = array();
    }
    
$i++;
  }
  if (
count($row) > && count($row) < $columns) {
    if (
count($cat_rows) >= 1) {
      
$row array_merge($rowarray_fill(count($row), $columns count($row), array('data' => '&nbsp;''class' => 'category')));
    }
    
$cat_rows[] = $row;
  }

  

/*
   *
   *  вот здесь вместо стандартного вывода товаров - вставляем Вид
   */
  
if ($tid != 0) {
    
$view_name 'cat'//а это название вида, который мы вставляем
    
$view_args = array($tid);
    
$view views_get_view($view_name);
    
$view->url $_GET['q'];
    
//$catalog->products = views_build_view('embed', $view, $view_args, $view->use_pager, $view->nodes_per_page);
    
$catalog->products views_embed_view($view_name'default'$tid);
    
//print $view_args;
    //print $tid;
    //print $view_args;
  
} else {
    
$catalog->products '';
  }

  if (

$catalog->products) {
    if (
$catalog->image) {
      
$output .= '<div class="uc-catalog-image">'theme('imagecache''thumbnail'$catalog->image['filepath'], $catalog->name$catalog->name, array('class' => 'category')) .'</div>';
    }
    if (
$catalog->description) {
      
$output .= '<div class="uc-catalog-description">'$catalog->description .'</div>';
    }
    
$output .= theme('table', array(), $cat_rows, array('class' => 'category'));
    
$output .= $catalog->products;
  } else {
    if (
$catalog->image && $catalog->description) {
      
$output .= '<div class="uc-catalog-image">'theme('imagecache''thumbnail'$catalog->image['filepath'], $catalog->name$catalog->name, array('class' => 'category')) .'</div>';
      
$output .= '<div class="uc-catalog-description">'$catalog->description .'</div>';
    }
    
$output .= theme('table', array(), $cat_rows, array('class' => 'category'));
  }
  return 
$output;
}
?>
Аватар пользователя Tiber Tiber 10 ноября 2015 в 11:46

Такая вот мысль, вывести картинку принадлежащую термину в ubercart в строчке таблицы(которую рисует views).
Если создать тестовое поле CCK с фильтром php.
И вставить туда php код, выводящий картинку термина, которому пренадлежит нода.
Я верстальщик, php не знаю, кто-нибудь сможет помощь, какой код нужен?
вот так
В моем скрине я просто вставил
<img height="75" width="100" title="" alt="" src="http://drupal.site/sites/default/files/imagecache/uc_category/dead7.jpg"/>

Аватар пользователя Sywooch Sywooch 26 июня 2009 в 17:48

А как реализовать вывод подкаталогов если таковые имеются?

Данная конструкция работает если нет сложенных каталогов.

Аватар пользователя Eugef Eugef 27 июня 2009 в 0:28

"Sywooch" wrote:
А как реализовать вывод подкаталогов если таковые имеются?

Данная конструкция работает если нет сложенных каталогов.

Список подкаталогов прекрасно выводятся над самим видом силами самого Ubercart.

Если в виде для аргумента таксономии установить глубину 1 или 2, то можно сразу показывать товары из текщуего каталога и всех его вложенных подкаталогов

Аватар пользователя Sywooch Sywooch 27 июня 2009 в 2:48

Значит я что то не так делаю.не выводится у меня каталоги.
Выводятся все товары данной категории включая товары из подкатегории.
А вот подкатегории не выводятся.

ЗЫ, понаписал так что сам ничего не понимаю.

Аватар пользователя jin123 jin123 6 июля 2009 в 22:48

Drupal 6 + Ubercart. Попробовал поставить код. все нормально - только не различает товар и категорию. либо картинок нет - либо View.
( в зависимости от того, catalog или products указать в Пути) Может кто подскажет - где м.б. ошибка)

Аватар пользователя Sywooch Sywooch 7 июля 2009 в 11:49

Разобрался.
Создаем вид с названием указанным тут:

$view_name = 'cat'; //а это название вида, который мы вставляем

Или cat меняем на свое. и настраиваем дефолтный видон.

никаких страниц не добавляем!!!!

Добавляем сортировку: Таксономия: Term ID (with depth) (depth - можно установить глубину каталога.

Ну и добавляем нужные нам поля. вот и все!

Только в самой категории картинка та что с права вверху чето не отображается.

Аватар пользователя Sywooch Sywooch 9 июля 2009 в 0:25

Еще в последнем коде небольшая ошибка с картинкой каталога:

Надо thumbnail на uc_thumbnail заменить.

Меня картинка эта бесила я вобще убрал.

По итогу:

<?php
function phptemplate_uc_catalog_browse($tid 0) {
  
drupal_add_css(drupal_get_path('module''uc_catalog') .'/uc_catalog.css');

  

$output '';
  
$catalog uc_catalog_get_page((int)$tid);
  
drupal_set_title(check_plain($catalog->name));
  
drupal_set_breadcrumb(uc_catalog_set_breadcrumb($catalog->tid));
  
$types uc_product_types();
  
$links = array();
  
$child_list = array();
  foreach (
$catalog->children as $child) {
    if (!empty(
$child->nodes)) {
      
$links[] = array('title' => $child->name . (variable_get('uc_catalog_breadcrumb_nodecount'FALSE) ? ' ('$child->nodes .')' ''), 'href' => uc_catalog_path($child),
        
'attributes' => array('rel' => 'tag'),
      );
    }
    if (!empty(
$child->image)) {
      
$image '<div>';
      if (
module_exists('imagecache')) {
        
$image .= l(theme('imagecache''uc_category'$child->image['filepath']), uc_catalog_path($child), array('html' => TRUE));
      }
      else {
        
$image .= l(theme('image'$child->image['filepath']), uc_catalog_path($child), array('html' => TRUE));
      }
      
$image .= '</div>';
    }
    else {
      
$image '<div></div>';
    }
    
$grandchildren = array();
    
$j 0;
    
$max_gc_display 3;
    foreach (
$child->children as $i => $grandchild) {
      if (
$j $max_gc_display) {
        break;
      }
      
$g_child_nodes 0;
      foreach (
$types as $type) {
        
$g_child_nodes += taxonomy_term_count_nodes($grandchild->tid$type);
      }
      if (
$g_child_nodes) {
        
$grandchildren[$i] = l($grandchild->nameuc_catalog_path($grandchild), array('class' => 'subcategory'));
        
$j++;
      }
    }
    
//$grandchildren = array_slice($grandchildren, 0, intval(count($grandchildren) / 2) + 1, TRUE);
    
if ($j $max_gc_display) {
      
array_push($grandchildrenl(t('More...'), uc_catalog_path($child), array('class' => 'subcategory')));
    }
    if (
$child->nodes) {
      
$cell_link $image .'<strong>'l($child->nameuc_catalog_path($child)) .'</strong>';
      if (
variable_get('uc_catalog_show_subcategories'TRUE)) {
        
$cell_link .= "<br/><span>"implode(', '$grandchildren) ."</span>\n";
      }
      
$child_list[] = $cell_link;
    }
  }

  

// Display table of child categories similar to an osCommerce site's front page.
  
$columns variable_get('uc_catalog_category_columns'3);
  
$cat_rows = array();
  
$row = array();
  
$i 1;
  foreach (
$child_list as $cell) {
    
$row[] = array('data' => $cell'class' => 'category');
    if (
$i $columns == 0) {
      
$cat_rows[] = $row;
      
$row = array();
    }
    
$i++;
  }
  if (
count($row) > && count($row) < $columns) {
    if (
count($cat_rows) >= 1) {
      
$row array_merge($rowarray_fill(count($row), $columns count($row), array('data' => '&nbsp;''class' => 'category')));
    }
    
$cat_rows[] = $row;
  }

  

/*
   *
   *  вот здесь вместо стандартного вывода товаров - вставляем Вид
   */
  
if ($tid != 0) {
    
$view_name 'uc_products'//а это название вида, который мы вставляем
    
$view_args = array($tid);
    
$view views_get_view($view_name);
    
$view->url $_GET['q'];
    
//$catalog->products = views_build_view('embed', $view, $view_args, $view->use_pager, $view->nodes_per_page);
    
$catalog->products views_embed_view($view_name'default'$tid);
    
//print $view_args;
    //print $tid;
    //print $view_args;
  
} else {
    
$catalog->products '';
  }

  if (

$catalog->products) {
    if (
$catalog->image) {
  
//    $output .= '<div class="uc-catalog-image">'. theme('imagecache', 'uc_thumbnail', $catalog->image['filepath'], $catalog->name, $catalog->name, array('class' => 'category')) .'</div>';
    
}
    if (
$catalog->description) {
      
$output .= '<div class="uc-catalog-description">'$catalog->description .'</div>';
    }
    
$output .= theme('table', array(), $cat_rows, array('class' => 'category'));
    
$output .= $catalog->products;
  } else {
    if (
$catalog->image && $catalog->description) {
     
// $output .= '<div class="uc-catalog-image">'. theme('imagecache', 'uc_thumbnail', $catalog->image['filepath'], $catalog->name, $catalog->name, array('class' => 'category')) .'</div>';
      
$output .= '<div class="uc-catalog-description">'$catalog->description .'</div>';
    }
    
$output .= theme('table', array(), $cat_rows, array('class' => 'category'));
  }
  return 
$output;
}
?>
Аватар пользователя keereel@drupal.org keereel@drupal.org 13 октября 2009 в 21:15

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

Аватар пользователя keereel@drupal.org keereel@drupal.org 25 октября 2009 в 0:08

спасибо. я просто не добавил аргумент. Views - очень мощный инструмент, но понять его непросто. Я, например, как раз про аргументы и не понял - что это, для чего надо и как их использовать в путях.

Аватар пользователя Eugef Eugef 14 января 2010 в 19:29

"perry" wrote:
опишите плз что за модули поиска - обычный и подбор по параметрам?

Все сделано на Views + фильтры

Аватар пользователя dusk13 dusk13 6 февраля 2010 в 22:48

Всем привет.

Может кто-нибудь подробно расскажет (скажет где почитать) как сделана "Панель выбора параметров" на http://disk-i-shina.com.ua/search/disk и "Подбор диска по размеру" на http://disk-i-shina.com.ua/disk/6205.htm.

Заранее огромное спасибо.

Аватар пользователя RuGeN RuGeN 5 сентября 2010 в 1:02

Доброго
Данный код нужно вставлять с заменой всего содержимого файла template.php или добавлять ниже(серьезно, не понял)

Аватар пользователя RuGeN RuGeN 5 сентября 2010 в 1:32

Все сделал по шагам:
1.Установил УБЕРКАРТ, выставил блоки «карзина» и «catalog», добавил товар
2. В «представлениях» создал вид с типом «материал» и названием «oopstyle»
3. Поставил стиль «сетка»
4. В аргументах отметил «Таксономия: ID Термина (с глубиной)»..сохранил как было(может что и надо указать сдесь еще)
5. Вывел поле «Продукт: Buy it now button»…сохранил как было
6. В файл template.php вставил код из публикации Sywooch (заменил uc_products на oopstyle)
… Причем,код вставлял различными способами: вместо стандартного, после стандартного, после стандартного с удалением <?php во втором случае
7. Или белый экран, или без изменений(никакой сетки в каталоге)
Уже 4 дня парюсь.ПИКЕЦ(((
Помогите, пожалуйста

Аватар пользователя F10 F10 5 сентября 2010 в 20:10

Код вставляете полностью, старое удалять не нужно.
template.php должен начинаться с <?php но закрываться не должен...

Аватар пользователя RuGeN RuGeN 7 сентября 2010 в 1:38

Спасибо огромное!!! Но у меня почему-то весь товар на oopstyle.ru 2 раза выходит, это нормально? (ссылку дал для наглядности, сайт еще не доделан)
...
Обязуюсь, друзья, как только заработаю первую деньгу, помогу проекту...он незаменим!!!

Аватар пользователя F10 F10 7 сентября 2010 в 12:41

"RuGeN" wrote:
это нормально?
- нет.
Проблемы скорее всего в настройках представления которое цепляете к каталогу.

Аватар пользователя borodavka borodavka 29 сентября 2010 в 23:08

В стандартоном advanced catalog если вставить в tamplate.php

function phptemplate_uc_catalog_browse($tid = 0) {
if (variable_get('uc_advanced_catalog', FALSE) && module_exists('uc_advanced_catalog')) {
return uc_advanced_catalog_browse($tid);
}
// default is ubercart handler
return theme_uc_catalog_browse($tid);
}
то будет сортировка по по цене...

После вставки кода автора сортировка исчезает, что делать? Помогите вернуть.

Аватар пользователя ArmRus ArmRus 25 апреля 2011 в 17:34

возникла небольшая проблема.
После переопределения каталога уберката, в странице товара есть список терминов
к примеру http://site/category/каталог/букеты/розы при клике открывается страница, с каталогом где все продукты данной категории отображены но без темизации.
у меня вопрос такой, можно ли переопределить ссылки терминов чтобы было на как выше а catalog/[tid]?
или же чтобы осталось как есть, но при клике открывалось тоже что при клике в блоке навигации по каталогу?

Аватар пользователя JokerCut JokerCut 3 мая 2011 в 12:24

"Предварительно нужно создать Вид, который будет отображать товары, добавить в него аргумент "Term ID" и назвать 'products'" -как это сделать? Работаю на друпале всего пару дней. Помогите пожалуйста

Аватар пользователя NIKS_ArtReaktor NIKS_ArtReaktor 20 сентября 2011 в 1:54

народ, а если в вьювсе применяю exposed filters - то после нажатия применить перехожу на другую страницу - можно ли form action как то в коде прописать?
Просто если в вьювсе сделать вид страница- то какой адрес страницы прописывать, чтобы после применения фильтров на этой странице дальше обрабатывались.

Аватар пользователя NIKS_ArtReaktor NIKS_ArtReaktor 6 октября 2011 в 3:12

[Решение] Замена Ubercart, с помощью Views, вывода категорий, подкатегорий и списка товаров [Два метода]

Вот два метода решения

Метод 1 www.ArtReaktor.com

Метод 2 www.ArtReaktor.com

Надеюсь это сэкономит кому-то время!

В статьях

Замена Ubercart, с помощью Views 2, вывода категорий, подкатегорий и списка товаров.

В данных статьях описывается как заменить вывод категорий и подкатегорий и списка товаров Ubercart, с помощью Views.
Решение для системы Drupal 6.х (в данном случае испытывалось на версии 6.22)

Цель:
Более гибкий вывод списка товаров, а именно:
Корректное применение Views Exposed filters для списка товаров категории.
и другие приятные возможности Views

Решено вывод информации о подкаталогах (child term или дочерние термины)

------------------------------------------------------------
На мой взгляд минусы замены функции Ubercart:
нерешенный вопросом с Exposed filters, а именно - после применения фильтров возвращение на страницу где были, а не на какую-то.

Изменить url form action удалось только в модуле views.module. Есть функция - которая обрабатывает exposed form - проставил там $form['#action'] = $_SERVER["REQUEST_URI"]; вместо geturl(); Почти заменили url form action. После применения фильтра оставался на этой же странице и фильтры применялись к списку товаров именно той категории в которой находились в этот момент.

функция fix-а не маленькая.
Возможны обновления модуля - и тогда не будет совпадения функций, так как поидее мы переписываем полностью определенную функцию.

------------------------------------------------------------