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

Как добавить после второго элемента в хлебных крошках?


comers

Recommended Posts

Решил попробовать добавить в хлебные крошки после 2-го элемента что-то своё, например смайлик, но не пойму как. 

Можно было б сделать по детски так if($breadcrumb['text'] == 'Категория 2') {echo ' - ';}, но это не правильно и хотелось бы освоить верный способ.

Возможно есть уже готовый вариант на форуме, но поиск не дал результатов. 

 

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


2 минуты назад, comers сказал:

Можно было б сделать по детски так if($breadcrumb['text'] == 'Категория 2') {echo ' - ';},

Дак так и надо. Сайт то у Вас же с детской тематикой

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


18 минут назад, i3bepb сказал:

Дак так и надо. Сайт то у Вас же с детской тематикой

Да, но категорий много и планируется добавлять еще n-количество

 

Еще такое решение нашел на jquery - $(".item_cat_2 span").prepend(" - "), но прежде добавил класс с нумерацией крошек - item_cat_<?php echo $count;?> 

 

Правильно ли я делаю или есть рекомендации?

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


19 минут назад, comers сказал:

Да, но категорий много и планируется добавлять еще n-количество

 

Т.е. для каждой категории будет свое что-то вставляться?

 

Если так то сколько категории, столько и будет условии

48 минут назад, comers сказал:

if($breadcrumb['text'] == 'Категория 2') {echo ' - ';}

или также в js, тоже будет столько же условии

22 минуты назад, comers сказал:

$(".item_cat_2 span").prepend(" - ")

 

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


34 минуты назад, i3bepb сказал:

Т.е. для каждой категории будет свое что-то вставляться?

Нет, будет одинаковое, но каждый раз придется дополнять условие при создании новой категории и поэтому нужен другой способ

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


1 час назад, comers сказал:

Решил попробовать добавить в хлебные крошки после 2-го элемента что-то своё, например смайлик, но не пойму как. 

Можно было б сделать по детски так if($breadcrumb['text'] == 'Категория 2') {echo ' - ';}, но это не правильно и хотелось бы освоить верный способ.

Возможно есть уже готовый вариант на форуме, но поиск не дал результатов. 

 

определяйте селектор 2-го элемента и в настройках - выбирайте как выводить "До"

все очень просто..., даже в код не нужно лазить

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

38 минут назад, comers сказал:

Нет, будет одинаковое, но каждый раз придется дополнять условие при создании новой категории и поэтому нужен другой способ

Тогда надо просто в контроллере, который отвечает за вывод страницы товара и страницы категории поправить и все, для всех будет выводится, не надо будет добавлять условия

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


На примере страницы товара, ищем в файле catalog/controller/product/product.php место где заполняется массив хлебных крошек, категориями:

			foreach ($parts as $path_id) {
				if (!$path) {
					$path = $path_id;
				} else {
					$path .= '_' . $path_id;
				}

				$category_info = $this->model_catalog_category->getCategory($path_id);

				if ($category_info) {
					$data['breadcrumbs'][] = array(
						'text' => $category_info['name'],
						'href' => $this->url->link('product/category', 'path=' . $path)
					);
				}
			}

Добавляем счетчик, нам нужна первая категория, т.е. первый элемент в цикле выше, получаем вот такой измененный вариант:

			$i = 0;
			foreach ($parts as $path_id) {
				if (!$path) {
					$path = $path_id;
				} else {
					$path .= '_' . $path_id;
				}

				$category_info = $this->model_catalog_category->getCategory($path_id);

				if ($category_info) {
					$data['breadcrumbs'][] = [
						'text' => $category_info['name'],
						'href' => $this->url->link('product/category', 'path=' . $path),
						'metka' => $i == 0 ? 1 : 0,
					];
                    ++$i;
				}
			}

Теперь у нас в массиве с хлебными крошками всегда у первой категории есть элемент 'metka'. А в шаблоне, файл catalog/view/theme/default/template/product/product.tpl, делаем в зависимости от наличия этого элемента какой-либо вывод свой:

if (!empty($breadcrumb['metka'])) {echo ' - ';}

В итоге алгоритм такой проставить признак всем категориям определенного уровня путем правки в контроллере места сбора хлебных крошек и затем в шаблоне опираясь на этот признак делать какой-нибудь свой вывод. Но вообще по уму это надо делать с помощью модификатора.

Змінено користувачем i3bepb
  • +1 1
Надіслати
Поділитися на інших сайтах


3 часа назад, i3bepb сказал:

'metka' => $i == 0 ? 1 : 0,

полагаю таким условием $i == 2 ? 1 : 0 можно поставить метку категории третьего уровня?

 

3 часа назад, i3bepb сказал:

Но вообще по уму это надо делать с помощью модификатора

Да, возможно, но я не планирую обновлять шаблон и решили модификатором делать более крупные правки. К тому же, чем больше модификаторов, тем чаще надо чистить кеш. Возможно не прав и когда-то это аукнется, но ведь это полезный опыт ))

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


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

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

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

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

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

Вхід

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

Вхід зараз
×
×
  • Створити...

Important Information

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