Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Присвоить класс каждой категории


Vadya25
 Поделиться

Рекомендованные сообщения

Здравствуйте. Подскажите ато сам никак немогу додуматся и найти в просторах интернета ничего немогу.

 

Opencart 2 как можно присвоить класс каждой категории меню. Чтобы каждая категория была индивидуальная.

 

Спасибо.

 

Вот файл с этим самым меню.



<div class="box category col-sm-3">
<div class="box-heading"><h3><?php echo $heading_title; ?></h3></div>
<div class="box-content">
<div class="box-category">
<ul class="list-unstyled category_menu">
<?php foreach ($categories as $category) { ?>
<?php if ($category['children']) { ?>
<li>
<a class="children" href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a>
 <?php foreach (array_chunk($category['children'], ceil(count($category['children']) )) as $children) { ?>
 <ul>
<?php foreach ($children as $child) {?>
<li>
<b><a href="<?php echo $child['href']; ?>"><?php echo $child['name']; ?></a></b>
<?php if ($child['subchildren']) { ?>
<ul>
<?php foreach ($child['subchildren'] as $subchild) { ?>
<li><a href="<?php echo $subchild['href']; ?>"><?php echo $subchild['name']; ?></a></li>
<?php } ?>
</ul>
<?php } ?>
<img src="<?php echo $child['thumb']; ?>" alt="<?php echo $child['name']; ?>" />
</li>
<?php } ?>
 </ul>
 <?php } ?>
</li>
<?php } else { ?>
<li><a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a></li>
<?php } ?>


<?php } ?>
</ul>
</div>
</div>
</div>

Ссылка на комментарий
Поделиться на других сайтах


Самый простой вариант это добавить тегам <li> клас или айдишник который будет содержать айди текущей категории. а дальше по этому айдишнику дописываете нужные стили.

<div class="box category col-sm-3">
<div class="box-heading"><h3><?php echo $heading_title; ?></h3></div>
<div class="box-content">
<div class="box-category">
<ul class="list-unstyled category_menu">
<?php foreach ($categories as $category) { ?>
<?php if ($category['children']) { ?>
<li id="cat_<?php echo $category['category_id']; ?>">
<a class="children" href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a>
<?php foreach (array_chunk($category['children'], ceil(count($category['children']))) as $children) { ?>
<ul>
<?php foreach ($children as $child) { ?>
<li id="cat_<?php echo $child['category_id']; ?>">
<b><a href="<?php echo $child['href']; ?>"><?php echo $child['name']; ?></a></b>
<?php if ($child['subchildren']) { ?>
<ul>
<?php foreach ($child['subchildren'] as $subchild) { ?>
<li id="cat_<?php echo $subchild['category_id']; ?>"><a href="<?php echo $subchild['href']; ?>"><?php echo $subchild['name']; ?></a></li>
<?php } ?>
</ul>
<?php } ?>
<img src="<?php echo $child['thumb']; ?>" alt="<?php echo $child['name']; ?>" />
</li>
<?php } ?>
</ul>
<?php } ?>
</li>
<?php } else { ?>
<li id="cat_<?php echo $category['category_id']; ?>"><a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a></li>
<?php } ?>
<?php } ?>
</ul>
</div>
</div>
</div>

Есть способ сложнее: добавить категориям еще одно поле в базе. сделать его редактирование в админке и выводить его значение. тогда можно написать какое то количество классов в стилях и дальше просто в админке указывать нужный для категории. и тогда не нужно будет при создании новой категории каждый раз дописывать код в цсс файл со стилями для данного айдишника.

Ссылка на комментарий
Поделиться на других сайтах

Спасибо Вам большое большое за отклик.

 

Но прошу прощения, не продвинутый пользователь, незнаю как закрепить id

Уже пробывал по разному всеравно никак.

Вот например есть категории 78 и 84, вставляю их ничего не меняется.

Если Вас не затруднит подскажите пожалуйста.

Ссылка на комментарий
Поделиться на других сайтах


Понимаю что выложили все на блюдце, но всеравно ноль. Не могу все собрать до кучи и нормально настроить

Ссылка на комментарий
Поделиться на других сайтах


Тогда только заказать, чтобы Вам сделали. Естественно, корыстно. Потому что Вы не помощи просите уже, а "сделайте за меня".

Ссылка на комментарий
Поделиться на других сайтах


<a class="<?php echo 'cat'.$category['id']; ?>" ....

 

 

упсс.. что-то не так?

 

А что советуют?

 

Самый простой вариант это добавить тегам <li> клас или айдишник который будет содержать айди текущей категории.

Ай = I

Ди = D

шник можно опустить

 

 

найдите

 

в этом коде

<li id="cat_<?php echo $category['category_id']; ?>">
<a class="children" href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a>
<?php foreach (array_chunk($category['children'], ceil(count($category['children']))) as $children) { ?>
<ul>

айдишник категории

Ссылка на комментарий
Поделиться на других сайтах

Я понял что нужно присвоить категории стиль и прописать айдишник самой категории, но проблема в том что присвоить id не получается, выдает или ошибку или просто сбивает все настройки и все стает как попало.

Благодарю всех кто откликнулся.

Ссылка на комментарий
Поделиться на других сайтах


Вот так прописываю. Не судите сильно, только недавно начал осваивать.

<li class="cat1<?php echo $category['category_id = 78']; ?>">

<a class="children" href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a>

<?php foreach (array_chunk($category['children'], ceil(count($category['children']))) as $children) { ?>

<ul>

Изменено пользователем Vadya25
Ссылка на комментарий
Поделиться на других сайтах


Но у Вас же не просто категория, а цикл идет. И то, что просто цифру 1 написали, то все главные категории будут одинаковые. Ищите в контроллере где у вас уникальный номер категории и выводите его в цикл. Проще эту задачу не решить.

Ссылка на комментарий
Поделиться на других сайтах


вау

 

<?php echo $category['category_id = 78']; ?>

 

 

ЧТО ЭТО!!!

Ссылка на комментарий
Поделиться на других сайтах

я так подозреваю, что вам придется познакомиться не только с шаблоном, но и с контроллером

 

потому что контроллер не передает в шаблон айдикатегроии

Ссылка на комментарий
Поделиться на других сайтах

Я так понял. Потому что проблема заключается на данный момент в том что не могу вывести id определенной категории.

Буду искать, пробовать...

Ссылка на комментарий
Поделиться на других сайтах


Судя по всему вы используете не стандартный модуль. В стандартном айдишник передается. Так что вам к автору модуля.

А вообще учить мат часть. Если хотите чтобы вам все сделали то это стоит денег. или найти альтруиста. Но тогда хоть полное описание что используете и где. а так "догадайтесь сами что и где я хочу сделать и напишите как это сделать"....

Вот шаблон стандартного модуля категорий /catalog/view/theme/default/template/module/category.tpl для opencart-2.1.0.2-rs

<div class="list-group">
  <?php foreach ($categories as $category) { ?>
  <?php if ($category['category_id'] == $category_id) { ?>
  <a href="<?php echo $category['href']; ?>" class="list-group-item active"><?php echo $category['name']; ?></a>
  <?php if ($category['children']) { ?>
  <?php foreach ($category['children'] as $child) { ?>
  <?php if ($child['category_id'] == $child_id) { ?>
  <a href="<?php echo $child['href']; ?>" class="list-group-item active">   - <?php echo $child['name']; ?></a>
  <?php } else { ?>
  <a href="<?php echo $child['href']; ?>" class="list-group-item">   - <?php echo $child['name']; ?></a>
  <?php } ?>
  <?php } ?>
  <?php } ?>
  <?php } else { ?>
  <a href="<?php echo $category['href']; ?>" class="list-group-item"><?php echo $category['name']; ?></a>
  <?php } ?>
  <?php } ?>
</div>

и все id тут есть.
 

Изменено пользователем Leva
Ссылка на комментарий
Поделиться на других сайтах

Модуль был вместе с шаблоном, не скачивал его.
 

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

Еще несколько раз попробую, и обращусь к тому кто сделает.
Понимаю что время стоит денег, Просто хотел попробовать сам...

Ссылка на комментарий
Поделиться на других сайтах


Да конечно вот...

 

.../catalog/controller/module/tm_category_menu.tpl

 


<?php

class ControllerModuleTmCategoryMenu extends Controller {

public function index() {

$this->load->language('module/tm_category_menu');

 

 

$this->document->addStyle('catalog/view/javascript/tmcategory/tm_category_menu.css');

$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;

}

 

$this->load->model('catalog/category');

 

$this->load->model('catalog/product');

$this->load->model('tool/image');

 

$data['categories'] = array();

 

$categories = $this->model_catalog_category->getCategories(0);

 

foreach ($categories as $category) {

 

// Level 2

$children_data = array();

//$subchildren_data = array();

 

$children = $this->model_catalog_category->getCategories($category['category_id']);

 

foreach ($children as $child) {

$filter_data = array(

'filter_category_id'  => $child['category_id'],

'filter_sub_category' => true

);

 

// Level 3

$subchildren_data = array();

$subchildren = $this->model_catalog_category->getCategories($child['category_id']);

 

foreach ($subchildren as $subchild) {

$filter_subdata = array(

'filter_category_id'  => $subchild['category_id'],

'filter_sub_category' => true

);

$subchildren_data[] = array(

'category_id' => $subchild['category_id'],

'name'  => $subchild['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_subdata) . ')' : ''),

'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'] . '_' . $subchild['category_id']),

 

);

}

if ($child['image']) {

$image = $this->model_tool_image->resize($child['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));

} else {

$image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));

}

$children_data[] = array(

'name'  => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),

'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']),

'thumb'       => $image,

'subchildren' => $subchildren_data

);

 

}

 

// Level 1

$data['categories'][] = array(

'name'     => $category['name'],

'children' => $children_data,

'column'   => $category['column'] ? $category['column'] : 1,

 

'href'     => $this->url->link('product/category', 'path=' . $category['category_id'])

);

 

}

 

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/tm_category_menu.tpl')) {

return $this->load->view($this->config->get('config_template') . '/template/module/tm_category_menu.tpl', $data);

} else {

return $this->load->view('default/template/module/tm_category_menu.tpl', $data);

}

}

}

Ссылка на комментарий
Поделиться на других сайтах



.../catalog/controller/module/tm_category_menu.php

 


<?php

class ControllerModuleTmCategoryMenu extends Controller {

public function index() {

$this->load->language('module/tm_category_menu');

 

 

$this->document->addStyle('catalog/view/javascript/tmcategory/tm_category_menu.css');

$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;

}

 

$this->load->model('catalog/category');

 

$this->load->model('catalog/product');

$this->load->model('tool/image');

 

$data['categories'] = array();

 

$categories = $this->model_catalog_category->getCategories(0);

 

foreach ($categories as $category) {

 

 

// Level 2

$children_data = array();

//$subchildren_data = array();

 

$children = $this->model_catalog_category->getCategories($category['category_id']);

 

foreach ($children as $child) {

$filter_data = array(

'filter_category_id'  => $child['category_id'],

'filter_sub_category' => true

);

 

// Level 3

$subchildren_data = array();

$subchildren = $this->model_catalog_category->getCategories($child['category_id']);

 

foreach ($subchildren as $subchild) {

$filter_subdata = array(

'filter_category_id'  => $subchild['category_id'],

'filter_sub_category' => true

);

$subchildren_data[] = array(

'category_id' => $subchild['category_id'],

'name'  => $subchild['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_subdata) . ')' : ''),

'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'] . '_' . $subchild['category_id']),

 

);

}

if ($child['image']) {

$image = $this->model_tool_image->resize($child['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));

} else {

$image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));

}

$children_data[] = array(

'name'  => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),

'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']),

'thumb'       => $image,

'subchildren' => $subchildren_data

);

 

}

 

// Level 1

$data['categories'][] = array

'name'     => $category['name'],

'children' => $children_data,

'column'   => $category['column'] ? $category['column'] : 1,

 

'href'     => $this->url->link('product/category', 'path=' . $category['category_id'])

);

 

}

 

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/tm_category_menu.tpl')) {

return $this->load->view($this->config->get('config_template') . '/template/module/tm_category_menu.tpl', $data);

} else {

return $this->load->view('default/template/module/tm_category_menu.tpl', $data);

}

}

}


 

Ссылка на комментарий
Поделиться на других сайтах


admin/view/template/module/tm_category_menu.tpl

 



<?php echo $header; ?><?php echo $column_left; ?>
<div id="content">
  <div class="page-header">
<div class="container-fluid">
 <div class="pull-right">
<button type="submit" form="form-tm_category_menu" data-toggle="tooltip" title="<?php echo $button_save; ?>" class="btn btn-primary"><i class="fa fa-save"></i></button>
<a href="<?php echo $cancel; ?>" data-toggle="tooltip" title="<?php echo $button_cancel; ?>" class="btn btn-default"><i class="fa fa-reply"></i></a></div>
 <h1><?php echo $heading_title; ?></h1>
 <ul class="breadcrumb">
<?php foreach ($breadcrumbs as $breadcrumb) { ?>
<li><a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a></li>
<?php } ?>
 </ul>
</div>
  </div>
  <div class="container-fluid">
<?php if ($error_warning) { ?>
<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> <?php echo $error_warning; ?>
 <button type="button" class="close" data-dismiss="alert">×</button>
</div>
<?php } ?>
<div class="panel panel-default">
 <div class="panel-heading">
<h3 class="panel-title"><i class="fa fa-pencil"></i> <?php echo $text_edit; ?></h3>
 </div>
 <div class="panel-body">
<form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form-tm_category_menu" class="form-horizontal">


            <div class="form-group">
                <label class="col-sm-2 control-label" for="input-name"><?php echo $entry_name; ?></label>
                <div class="col-sm-10">
                    <input type="text" name="name" value="<?php echo $name; ?>" placeholder="<?php echo $entry_name; ?>" id="input-name" class="form-control" />
                    <?php if ($error_name) { ?>
                        <div class="text-danger"><?php echo $error_name; ?></div>
                    <?php } ?>
                </div>
            </div>


 <div class="form-group">
<label class="col-sm-2 control-label" for="input-status"><?php echo $entry_status; ?></label>
<div class="col-sm-10">
 <select name="status" id="input-status" class="form-control">
<?php if ($status) { ?>
<option value="1" selected="selected"><?php echo $text_enabled; ?></option>
<option value="0"><?php echo $text_disabled; ?></option>
<?php } else { ?>
<option value="1"><?php echo $text_enabled; ?></option>
<option value="0" selected="selected"><?php echo $text_disabled; ?></option>
<?php } ?>
 </select>
</div>
 </div>
</form>
 </div>
</div>
  </div>
</div>
<?php echo $footer; ?>

Ссылка на комментарий
Поделиться на других сайтах


admin/controller/module/tm_category_menu.php

 



<?php
class ControllerModuleTmCategoryMenu extends Controller {
private $error = array();


public function index() {
$this->load->language('module/tm_category_menu');


$this->document->setTitle($this->language->get('heading_title'));


        $this->load->model('extension/module');


if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
            if (!isset($this->request->get['module_id'])) {
                $this->model_extension_module->addModule('tm_category_menu', $this->request->post);
            } else {
                $this->model_extension_module->editModule($this->request->get['module_id'], $this->request->post);
            }


$this->session->data['success'] = $this->language->get('text_success');


$this->response->redirect($this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL'));
}


$data['heading_title'] = $this->language->get('heading_title');


$data['text_edit'] = $this->language->get('text_edit');
$data['text_enabled'] = $this->language->get('text_enabled');
$data['text_disabled'] = $this->language->get('text_disabled');


$data['entry_status'] = $this->language->get('entry_status');
        $data['entry_name'] = $this->language->get('entry_name');


$data['button_save'] = $this->language->get('button_save');
$data['button_cancel'] = $this->language->get('button_cancel');


if (isset($this->error['warning'])) {
$data['error_warning'] = $this->error['warning'];
} else {
$data['error_warning'] = '';
}


        if (isset($this->error['name'])) {
            $data['error_name'] = $this->error['name'];
        } else {
            $data['error_name'] = '';
        }


$data['breadcrumbs'] = array();


$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_home'),
'href' => $this->url->link('common/dashboard', 'token=' . $this->session->data['token'], 'SSL')
);


$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_module'),
'href' => $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL')
);


$data['breadcrumbs'][] = array(
'text' => $this->language->get('heading_title'),
'href' => $this->url->link('module/tm_category_menu', 'token=' . $this->session->data['token'], 'SSL')
);


        if (!isset($this->request->get['module_id'])) {
            $data['action'] = $this->url->link('module/tm_category_menu', 'token=' . $this->session->data['token'], 'SSL');
        } else {
            $data['action'] = $this->url->link('module/tm_category_menu', 'token=' . $this->session->data['token'] . '&module_id=' . $this->request->get['module_id'], 'SSL');
        }


$data['cancel'] = $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL');


        if (isset($this->request->get['module_id']) && ($this->request->server['REQUEST_METHOD'] != 'POST')) {
            $module_info = $this->model_extension_module->getModule($this->request->get['module_id']);
        }


        if (isset($this->request->post['status'])) {
            $data['status'] = $this->request->post['status'];
        }elseif (!empty($module_info)) {
            $data['status'] = $module_info['status'];
        } else {
            $data['status'] = '';
        }


        if (isset($this->request->post['name'])) {
            $data['name'] = $this->request->post['name'];
        } elseif (!empty($module_info)) {
            $data['name'] = $module_info['name'];
        } else {
            $data['name'] = '';
        }


$data['header'] = $this->load->controller('common/header');
$data['column_left'] = $this->load->controller('common/column_left');
$data['footer'] = $this->load->controller('common/footer');


$this->response->setOutput($this->load->view('module/tm_category_menu.tpl', $data));
}


protected function validate() {
if (!$this->user->hasPermission('modify', 'module/tm_category_menu')) {
$this->error['warning'] = $this->language->get('error_permission');
}


        if ((utf8_strlen($this->request->post['name']) < 3) || (utf8_strlen($this->request->post['name']) > 64)) {
            $this->error['name'] = $this->language->get('error_name');
        }
return !$this->error;
}
}

Ссылка на комментарий
Поделиться на других сайтах


Это контроллер админки, а нужен контроллер магазина

Ссылка на комментарий
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.