Перейти к содержанию
Rocknrolla

[Решено] Доработка хлебных крошек (breadcrumb)

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

К примеру есть страница вида

Изображение

Как видно, в хлебных крошках прописывается название товара. Вопрос: как его оттуда убрать, чтобы не дублировалось с заголовком?

Вариант - убрать сам заголовок, оставить только ссылку на товар в крошках - не предлагать. Страница не должна ссылаться сама на себя.

===

По ходу дела тут, вдруг кому пригодиться - способ выводить хлебные крошки не только в хедере, а в любой части сайта. Мне понадобилось вывести в шаблоне product.tpl (catalog/view/theme/ваша тема/template/product). Я добавил в нужном месте код (спан можно убрать, либо прописать ему стиль):

<?php foreach ($breadcrumbs as $breadcrumb) { ?>
<span class="breadcrumb"><?php echo $breadcrumb['separator']; ?><a href="<?php echo str_replace('&', '&', $breadcrumb['href']); ?>"><?php echo $breadcrumb['text']; ?></a></span>
<?php } ?>

Выдавало ошибку. Решение простое: в catalog/controller/product прописать около 130 строчки:

$this->data['breadcrumbs'] = $this->document->breadcrumbs;

Да, в моем шаблоне не было хлебных крошек по умолчанию=)

Изменено пользователем afwollis
прячьте код в тэг CODE

Поделиться сообщением


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

...Страница не должна ссылаться сама на себя...

Для этого можно в "хлебных крошках" последний элемент (текущую страницу) делать не ссылкой, а простым текстом.

Поделиться сообщением


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

Для этого можно в "хлебных крошках" последний элемент (текущую страницу) делать не ссылкой, а простым текстом.

Допустим. А как это сделать? Не могу найти, где формируются ссылки.

Поделиться сообщением


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

обычно в самом начале функции index() в каждом контроллере:

$this->document->breadcrumbs = array();
		
		$this->document->breadcrumbs[] = array(
			'href'      => HTTP_SERVER . 'index.php?route=common/home',
			'text'      => $this->language->get('text_home'),
			'separator' => FALSE
		);
ну и по ходу формирования страницы что-то там добавляется.

Поделиться сообщением


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

обычно в самом начале функции index() в каждом контроллере:

$this->document->breadcrumbs = array();
		
		$this->document->breadcrumbs[] = array(
			'href'      => HTTP_SERVER . 'index.php?route=common/home',
			'text'      => $this->language->get('text_home'),
			'separator' => FALSE
		);
ну и по ходу формирования страницы что-то там добавляется.

Поубирал в файле controller/product/product.php строки ниже и все исчезло, как и было задумано. Спасибо!

$this->document->breadcrumbs[] = array(
				'href'      => $this->model_tool_seo_url->rewrite(HTTP_SERVER . 'index.php?route=product/product' . $url . '&product_id=' . $this->request->get['product_id']),
				'text'      => $product_info['name'],
				'separator' => $this->language->get('text_separator')
			);

$this->document->links[] = array(
				'href' => $this->model_tool_seo_url->rewrite(HTTP_SERVER . 'index.php?route=product/product&product_id=' . $this->request->get['product_id']),
				'rel'  => 'canonical'
			);

$this->document->breadcrumbs[] = array(
				'href'      => HTTP_SERVER . 'index.php?route=product/search&keyword=' . $this->request->get['keyword'] . $url,
				'text'      => $this->language->get('text_search'),
				'separator' => $this->language->get('text_separator')
			);

Поделиться сообщением


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

Поубирал в файле controller/product/product.php строки ниже и все исчезло, как и было задумано. Спасибо!

Только на страницах товара исчезло? А как другие страницы? Ведь очень плохо, когда на странице есть активная ссылка на саму себя. Это же дубль. Seo косяк.

Поделиться сообщением


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

Ребята, есть способ гораздо проще:

в www/catalog/view/theme/default/template/common/header.tpl

после <body> вставить

<?php array_pop($breadcrumbs); ?>
- полностью удаляет ссылку на странице продукта на саму себя
  • +1 2

Поделиться сообщением


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

Surfer7, я уже описывал в какой-то теме, как сделать из последней ссылки текст.

ничего удалять не надо.

Поделиться сообщением


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

ну если будет двойной текст то это не очень красиво. на розетке сделано именно так: в хлебных крошках ссылки только на категории, не вижу смысла дублировать название товара дополнительно к тегу h1, ну это уже дело каждого.

  • +1 1

Поделиться сообщением


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

Обновляющийся до последней версии опенсторе. там поправлены дубли и хлебные крошки

Поделиться сообщением


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

А каким образом в OcStore решены хлебные крошки. У меня также товар и категории сами на себя ссылаются.

Поделиться сообщением


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

Стоит OcStore 1.5.1.3. Товары ссылаются сами на себя. Воспользовался предложенным выше методом и закомментировал строчки

$this->document->breadcrumbs[] = array(

'href' => HTTP_SERVER . 'index.php?route=common/home',

'text' => $this->language->get('text_home'),

'separator' => FALSE

);

Ссылка на товар пропала, но хотелось бы чтобы она не удалялась, а стала простым текстом. Как последнюю ссылку сделать простым текстом?

Поделиться сообщением


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

Ссылка на товар пропала, но хотелось бы чтобы она не удалялась, а стала простым текстом. Как последнюю ссылку сделать простым текстом?

те строчки раскомментить, но заменить вывод breadcrumbs во view на следующее

<div class="breadcrumb">
	<?php foreach ($breadcrumbs as $i=> $breadcrumb) { ?>
	<?php echo $breadcrumb['separator']; ?><?php if($i+1<count($breadcrumbs)) { ?><a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a> <?php } else { ?><?php echo $breadcrumb['text']; ?><?php } ?>
	<?php } ?>
  </div>
код взят с http://first.net23.net/index.php?route=product/product&path=20&product_id=28
  • +1 4

Поделиться сообщением


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

Большое спасибо, все получилось

Поделиться сообщением


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

Ребята, есть способ гораздо проще:

в www/catalog/view/theme/default/template/common/header.tpl

после <body> вставить

<?php array_pop($breadcrumbs); ?>
- полностью удаляет ссылку на странице продукта на саму себя

Спасибо, всё получилось!

Поделиться сообщением


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

Ребят, всем спасибо за помощь!

Но можно ли убрать ссылку на "Главная" из хлебных крошек?

Поделиться сообщением


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

Ребят, всем спасибо за помощь!

Но можно ли убрать ссылку на "Главная" из хлебных крошек?

Или чтобы вместо http://домен/index.php?route=common/home был прописан там сам Домен?

Поделиться сообщением


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

те строчки раскомментить, но заменить вывод breadcrumbs во view на следующее

<div class="breadcrumb">
	<?php foreach ($breadcrumbs as $i=> $breadcrumb) { ?>
	<?php echo $breadcrumb['separator']; ?><?php if($i+1<count($breadcrumbs)) { ?><a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a> <?php } else { ?><?php echo $breadcrumb['text']; ?><?php } ?>
	<?php } ?>
  </div>
код взят с http://first.net23.n...0&product_id=28

Спасибо большое, все заработало

Поделиться сообщением


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

Здравствуйте ребята.

Хочу возобновить тему (Хлебных крошек).

А именно, при переходе на товар с модуля (Последние поступления) Прописует ( Главная > Название товара )

Как вывести полный адрес - ( Главная > Категория > Подкатегория > Название товара )?

Поделитесь кто сталкивался .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
webiinfo Зайдите в админке в Система/Настройки/Сервер. Там есть пунктик ЧПУ товаров с категориями. Выберите ДА.

Поделиться сообщением


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

webiinfo Зайдите в админке в Система/Настройки/Сервер. Там есть пунктик ЧПУ товаров с категориями. Выберите ДА.

это не помогает, все равно в товаре крошки отображаются без категории: Главная

» товар1

Поделиться сообщением


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

webiinfo Зайдите в админке в Система/Настройки/Сервер. Там есть пунктик ЧПУ товаров с категориями. Выберите ДА.

Не помогло ( . Но за совет спасибо ...

Поделиться сообщением


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

Здравствуйте ребята.

Хочу возобновить тему (Хлебных крошек).

А именно, при переходе на товар с модуля (Последние поступления) Прописует ( Главная > Название товара )

Как вывести полный адрес - ( Главная > Категория > Подкатегория > Название товара )?

Поделитесь кто сталкивался .

Тема актуальна, кто нашел решение?

Поделиться сообщением


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

Не помогло ( . Но за совет спасибо ...

Я не спец, всего лишь пользователь, но у меня все работает.

У меня стоит Ostore 1.5.1.3 с SeoPro. В настройках системы стоит: Включить ЧПУ - Да, Тип ЧПУ - SeoPro, ЧПУ товаров с категориями - Да.

Вроде никаких дополнительных настоек не было.

Может у Вас SeoPro не стоит, или в другой версии настраивается по другому.

Может быть зависит от того, прописана главная категория у товаров или нет

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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