Приватный проект для aquaweb

Yurg18 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
24.03.2011

Модуль для D6/Ubercart uc_catalog. Каталог построен на основе таксономии. Модуль переопределяет breadcrumbs c учетом вложенности терминов таксономии, таким образом, что:

Термин1

*Термин2

**Термин3 (выбран)

..выводятся в breadcrumbs как Термин1 > Термин2 >Термин3

Но словарь позволяет мультивыбор терминов, таким образом, что если выбрать

Термин1

*Термин2

**Термин3 (выбран)

*Термин4

**Термин5 (выбран)

.. то в breadcrumbs выведется

Термин1 > Термин2 > Термин3 > Термин4 > Термин5

При этом, ссылка на страницу товара (path) формируется как (domain.tld/термин1/термин4/термин5)

Задача: выводить в breadcrumbs только ту цепочку, которая соответствует path.

Код этой части модуля:

/**

* Implementation of hook_nodeapi().

*/

function uc_catalog_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {

static $parents = array();

if (uc_product_is_product($node->type)) {

switch ($op) {

case 'view':

if ($a4 == TRUE && variable_get('uc_catalog_breadcrumb', TRUE)) {

$crumbs = array();

if (variable_get('site_frontpage', 'node') != 'catalog') {

$crumbs[] = l(t('Home'), '');

}

$terms = taxonomy_node_get_terms_by_vocabulary($node, variable_get('uc_catalog_vid', 0));

if (count($terms)) {

$crumbs[] = l(variable_get('uc_catalog_name', t('Catalog')), variable_get('uc_catalog_url', 'catalog'));

$used_tids = array();

foreach ($terms as $term) {

if (!isset($parents[$term->tid])) {

$parents[$term->tid] = taxonomy_get_parents_all($term->tid);

}

foreach (array_reverse($parents[$term->tid]) as $parent) {

if (!in_array($parent->tid, $used_tids)) {

/* fixed NODE breadcrumbs path

$crumbs[] = l($parent->name, module_invoke('taxomony','term_path',$parent));

*/

$crumbs[] = l($parent->name, 'catalog/'. $parent->tid);

}

}

}

}

drupal_set_breadcrumb($crumbs);

}

break;

}

}

}

Заявки фрилансеров