Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Vadya25

Recommended Posts

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

 

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 написали, то все главные категории будут одинаковые. Ищите в контроллере где у вас уникальный номер категории и выводите его в цикл. Проще эту задачу не решить.

Надіслати
Поділитися на інших сайтах


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

 

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

Надіслати
Поділитися на інших сайтах

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

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

Вот шаблон стандартного модуля категорий /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;
}
}

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.