Есть сайт boets-club.ru. Сайт на опен карте. Ситуация такая: Магазин торгует тремя разными товарами. Спорт снаряга, спортпитание, Инвентарь. В базе все товары естественно лежат в своей категории. Есть модуль "Рекомендуемые товары" На главной есть три кнопки с соответствующими наименованиями разделов. Идя такая чтобы при нажатии на какой-либо из разделов : 1) менялся общий фон 2) выводились нужные категории(соответствующие кнопке) + выводился модуль с рекомендуемыми товарами именно этой категории товаров. При нажатии на уже какую нибудь под категорию в выводились просто товары а не рекомендуемые. Помогите разобраться как это можно сделать и можно ли вообще..
В catalog/controller/common/header.php PHP: if (isset($this->request->get['route'])) { if (isset($this->request->get['product_id'])) { $class = '-' . $this->request->get['product_id']; } elseif (isset($this->request->get['path'])) { $class = '-' . $this->request->get['path']; } elseif (isset($this->request->get['manufacturer_id'])) { $class = '-' . $this->request->get['manufacturer_id']; } else { $class = ''; } $this->data['class'] = str_replace('/', '-', $this->request->get['route']) . $class; } else { $this->data['class'] = 'common-home'; } В catalog/view/theme/.../template/common/header.tpl <body class="<?php echo $class; ?>"> Не знаю, что у вас за модуль используется, но если стандартный вывод подкатегорий, то там уже это и прописано. PHP: $this->data['categories'] = array(); $results = $this->model_catalog_category->getCategories($category_id); foreach ($results as $result) { $data = array( 'filter_category_id' => $result['category_id'], 'filter_sub_category' => true ); $product_total = $this->model_catalog_product->getTotalProducts($data); $this->data['categories'][] = array( 'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $product_total . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url), 'thumb' => $this->model_tool_image->resize(($result['image']=='' ? 'no_image.jpg' : $result['image']), $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height')) ); } Если через модуль категорий, то там оно тоже прописано, надо только убрать при выводе Код: if ($category['children'] && ($category['children'] == $category['category_id'])) { Тут все просто, идем в Система-Дизайн-Схемы Создаем 3 новых схемы с названием категорий, путь естественно остается такой же, как и для категории product/category Идем в категорию - вкладка Дизайн, выбираем там схему, которую создали. Далее идем в Модуль рекомендуемых и создаем 3 вывода модуля с привязкой к каждой схеме. Если сделаете привязку по схемам, то этот пункт вычтется сам по себе.
Ух ты я уже не надеялся. Спасибо приогромое! Вроде бы сделал. Фон меняется категории я по айди вывел. С модулями тоже разобрался. Осталось вывести подкатегории подкатегорий ) не получаессо.... т.е. третий уровень. Есть три основные категории (скажем группы товаров) в них есть подкатегории по тематикам а у них еще есть подкатегории )...
Ну если грубо говоря, то выводится все через PHP: foreach ($results as $result) { foreach ($results as $result) { foreach ($results as $result) { foreach ($results as $result) { foreach ($results as $result) { foreach ($results as $result) { foreach ($results as $result) { foreach ($results as $result) { foreach ($results as $result) { Т.е. сколько вложенностей в массиве, столько и нужно сделать выводов. А дизайн и расположение блоков через схемы привязывается.
ок сейчас попробую. Спасиииибо! ) --- Добавлено, 7 апр 2016 --- category.tpl PHP: foreach ($categories as $category) { if(empty($_GET['id'])) { $_GET['id'] = 128; } if($category['category_id']==$_GET['id']) { echo ' <div style="clear:both;"></div>'; if ($category['children']) { foreach ($category['children'] as $child) { if ($child['category_id'] == $child_id) { echo '<a href="'.$child['href'].'&id='.$_GET['id'].'" class="list-group-item active">'.$child['name'].'</a>'; } else { echo '<a href="'.$child['href'].'&id='.$_GET['id'].'" class="list-group-item">'.$child['name'].'</a>'; } if($child['sister_id']) { echo '<ul>'; foreach($child['sister_id'] as $sisters) { echo '<li>'; if ($sisters['category_id'] == $sisters_id) { echo '<a href="'; echo $sisters['href']; echo '" class="active"> - '; echo $sisters['name']; echo '</a>'; } else { echo '<a href="'; echo $sisters['href']; echo '"> - '; echo $sisters['name']; echo '</a>'; } echo '</li>'; } echo '</ul>'; } } } } } category.php PHP: class ControllerModuleCategory extends Controller { public function index() { $this->load->language('module/category'); $data['heading_title'] = $this->language->get('heading_title'); if (isset($this->request->get['path'])) { $parts = explode('_', (string)$this->request->get['path']); } else { $parts = array(); } if (isset($parts[0])) { $data['category_id'] = $parts[0]; } else { $data['category_id'] = 0; } if (isset($parts[1])) { $data['child_id'] = $parts[1]; } else { $data['child_id'] = 0; } if (isset($parts[2])) { $this->data['sisters_id'] = $parts[2]; } else { $this->data['sisters_id'] = 0; } $this->load->model('catalog/category'); $this->load->model('catalog/product'); $data['categories'] = array(); $categories = $this->model_catalog_category->getCategories(0); foreach ($categories as $category) { $children_data = array(); $children = $this->model_catalog_category->getCategories($category['category_id']); foreach ($children as $child) { $sister_data = array(); $sisters = $this->model_catalog_category->getCategories($child['category_id']); if(count($sisters) >= 1) { foreach ($sisters as $sisterMember) { $sister_data[] = array( 'category_id' =>$sisterMember['category_id'], 'name' => $sisterMember['name'], 'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']. '_' . $sisterMember['category_id']) ); } $children_data[] = array( 'category_id' => $child['category_id'], 'sister_id' => $sister_data, 'name' => $child['name'], 'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']) ); } else{ $children_data[] = array( 'category_id' => $child['category_id'], 'sister_id' =>'', 'name' => $child['name'], 'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']) ); } } } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/category.tpl')) { return $this->load->view($this->config->get('config_template') . '/template/module/category.tpl', $data); } else { return $this->load->view('default/template/module/category.tpl', $data); } }} При попытке вывода print_r($categories); выводит пустой array в чем косяк? PS Думаю в классе где то косяк, но не могу сам найти