Ребята нужна помощь!

Тема в разделе "PHP", создана пользователем bemsik, 4 апр 2016.

  1. bemsik

    bemsik

    Регистрация:
    4 апр 2016
    Сообщения:
    0
    Симпатии:
    0
    Есть сайт boets-club.ru. Сайт на опен карте.
    Ситуация такая: Магазин торгует тремя разными товарами. Спорт снаряга, спортпитание, Инвентарь.
    В базе все товары естественно лежат в своей категории. Есть модуль "Рекомендуемые товары"
    На главной есть три кнопки с соответствующими наименованиями разделов.
    Идя такая чтобы при нажатии на какой-либо из разделов :
    1) менялся общий фон
    2) выводились нужные категории(соответствующие кнопке)
    + выводился модуль с рекомендуемыми товарами именно этой категории товаров.
    При нажатии на уже какую нибудь под категорию в выводились просто товары а не рекомендуемые.
    Помогите разобраться как это можно сделать и можно ли вообще..
     
  2. alex_storm

    alex_storm webdev

    Регистрация:
    11 дек 2012
    Сообщения:
    1.151
    Симпатии:
    667
    В 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 вывода модуля с привязкой к каждой схеме.

    Если сделаете привязку по схемам, то этот пункт вычтется сам по себе.
     
  3. bemsik

    bemsik

    Регистрация:
    4 апр 2016
    Сообщения:
    0
    Симпатии:
    0
    Ух ты я уже не надеялся. Спасибо приогромое! Вроде бы сделал. Фон меняется категории я по айди вывел. С модулями тоже разобрался. Осталось вывести подкатегории подкатегорий ) не получаессо.... т.е. третий уровень. Есть три основные категории (скажем группы товаров) в них есть подкатегории по тематикам а у них еще есть подкатегории )...
     
  4. alex_storm

    alex_storm webdev

    Регистрация:
    11 дек 2012
    Сообщения:
    1.151
    Симпатии:
    667
    Ну если грубо говоря, то выводится все через
    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) {
    Т.е. сколько вложенностей в массиве, столько и нужно сделать выводов. А дизайн и расположение блоков через схемы привязывается.
     
  5. bemsik

    bemsik

    Регистрация:
    4 апр 2016
    Сообщения:
    0
    Симпатии:
    0
    ок сейчас попробую. Спасиииибо! )
    --- Добавлено, 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 Думаю в классе где то косяк, но не могу сам найти