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

[Решено] помогите разобраться с хлебными крошками


Recommended Posts

Уважаемые, помогите разобраться.

 

На странице товара хлебные крошки отображаются так:

Главная » Каталог товаров » Кухни » Каталог товаров » Лиана-Фантазия » Настенные модули для кухни "Лиана-Фантазия" » Боковой настенный модуль для кухни "Лиана - Фантазия"

а надо так:

Главная » Каталог товаров » Кухни » Лиана-Фантазия » Настенные модули для кухни "Лиана-Фантазия" » Боковой настенный модуль для кухни "Лиана - Фантазия"

в product.tpl

  <div class="breadcrumb">
  <?php foreach ($breadcrumbs as $breadcrumb): ?>
  <?php echo $breadcrumb['separator']; ?>
  <?php if ($breadcrumb == end($breadcrumbs)): ?>
  <?php echo $breadcrumb['text']; ?>
  <?php else: ?>
  <a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a>
  <?php endif; ?>
  <?php endforeach; ?>
  </div>
Надіслати
Поділитися на інших сайтах


  <div class="breadcrumb">
  <?php foreach ($breadcrumbs as $breadcrumb): ?>
  <?php echo $breadcrumb['separator']; ?>
  <?php if ($breadcrumb == end($breadcrumbs)): ?>
  <?php echo $breadcrumb['text']; ?>
  <?php else: ?>
  <a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a>
  <?php endif; ?>
  <?php endforeach; ?>
  </div>

Двоеточия вместо фигурных скобок, функция end($breadcrumbs), оператор endforeach.... Первый раз в такой нотации вижу. Или это я не в курсе? :(

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


Надо же, в PHP еще и альтернативный синтаксис для foreach есть. Как много надо знать....

 

Коль скоро готовых решений нет, осмелюсь пальцем в небо:

Каталог товаров » Кухни » Лиана-Фантазия » Настенные модули для кухни "Лиана-Фантазия"

Это уже 4 уровня

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


  • 5 weeks later...

Надо же, в PHP еще и альтернативный синтаксис для foreach есть. Как много надо знать....

 

Коль скоро готовых решений нет, осмелюсь пальцем в небо:

Каталог товаров » Кухни » Лиана-Фантазия » Настенные модули для кухни "Лиана-Фантазия"

Это уже 4 уровня

Да, 4. Ошибся. Проблема начинается с 4 уровня. Это принципиально?

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


Двоеточия вместо фигурных скобок, функция end($breadcrumbs), оператор endforeach.... Первый раз в такой нотации вижу. Или это я не в курсе? :(

Альтернативный синтаксис управляющих структур

кто-то на CodeIgniter помешан.

 

Korn, скорее всего криворукость шаблон-мейкера

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

Да, 4. Ошибся. Проблема начинается с 4 уровня. Это принципиально?

Возможно, да. См. product/product.PHP. Скорее всего, там массив $breadcrumbs формируется для 3-х уровней вложенности. Или покажите этот кусок здесь

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


Возможно, да. См. product/product.PHP. Скорее всего, там массив $breadcrumbs формируется для 3-х уровней вложенности. Или покажите этот кусок здесь

<?php  
class ControllerProductProduct extends Controller {
	private $error = array(); 
	
	public function index() { 
		$this->language->load('product/product');
	
		$this->data['breadcrumbs'] = array();

		$this->data['breadcrumbs'][] = array(
			'text'      => $this->language->get('text_home'),
			'href'      => $this->url->link('common/home'),			
			'separator' => false
		);
		
		$this->load->model('catalog/category');	
		
		if (isset($this->request->get['path'])) {
			$path = '';
			
			$parts = explode('_', (string)$this->request->get['path']);
			
			$category_id = (int)array_pop($parts);
				
			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) {
				    $this->data['breadcrumbs'][] = array(
                    	'href'      => $this->url->link('common/catalog'),
                   	    'text'      => $this->language->get('Каталог товаров'),
                        'href'      => $this->url->link('product/category', 'path=' . $path),
                        'text'      => $category_info['name'],
                        'separator' => $this->language->get('text_separator')
                	);
				
				}
			}

На данный момент отображает так:

 

Главная » Каталог товаров » Кухни » Лиана » Напольные модули для кухни "Лиана"

 

и при переходе в товар "убирает" пункт "Каталог товаров"

 

Главная » Кухни » Лиана » Напольные модули для кухни "Лиана" » Боковой напольный модуль для кухни "Лиана"

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


Должно быть (примерно) так:

 



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


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


$this->data['breadcrumbs'] = array();


$this->data['breadcrumbs'][] = array(
'text'      => $this->language->get('text_home'),
'href'      => $this->url->link('common/home'),
'separator' => false
);
//    $this->data['breadcrumbs'][] = array(
//                     'href'      => $this->url->link('common/catalog'),
//                      'text'      => $this->language->get('Каталог товаров'),
//'Каталог товаров' лучше затолкать в языковый файл. Для единообразия.
//                        'separator' => $this->language->get('text_separator')
                );


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


if (isset($this->request->get['path'])) {
$path = '';


$parts = explode('_', (string)$this->request->get['path']);


$category_id = (int)array_pop($parts);


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) {
   $this->data['breadcrumbs'][] = array(
//
                        'href'      => $this->url->link('product/category', 'path=' . $path),
                        'text'      => $category_info['name'],
                        'separator' => $this->language->get('text_separator')
                );


}
}


Измененные строки пометил комментариями. Кусок, который готовит последнюю крошку (которая не ссылка) Вы не показали :(. Или ее просто нет :)

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


Да, действительно не показал :oops: Сорри) 

// Set the last category breadcrumb
			$category_info = $this->model_catalog_category->getCategory($category_id);
				
			if ($category_info) {			
				$url = '';
				
				if (isset($this->request->get['sort'])) {
					$url .= '&sort=' . $this->request->get['sort'];
				}	
	
				if (isset($this->request->get['order'])) {
					$url .= '&order=' . $this->request->get['order'];
				}	
				
				if (isset($this->request->get['page'])) {
					$url .= '&page=' . $this->request->get['page'];
				}
				
				if (isset($this->request->get['limit'])) {
					$url .= '&limit=' . $this->request->get['limit'];
				}
										
				$this->data['breadcrumbs'][] = array(
					'text'      => $category_info['name'],
					'href'      => $this->url->link('product/category', 'path=' .$this->request->get['path'] ),
					'separator' => $this->language->get('text_separator')
				);
			}
		}
Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

Возможно, да. См. product/product.PHP. Скорее всего, там массив $breadcrumbs формируется для 3-х уровней вложенности. Или покажите этот кусок здесь

 

Ткните в код, где формируется для 3х уровней ? Нужно расширить до 4-5. Спасибо!

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


Обратил внимание, что такая проблема только у товаров, лежащих на третьем уровне каталога.

У товаров на 2 уровне всё правильно отображается.

У меня такая проблема на 2 уровне??Что делать то?

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


1. Не бегать по топикам с дублями проблемы

2. Послушать Chukcha и поменять связи хотя бы для одного товара.

 

1. Не бегать по топикам с дублями проблемы

2. Послушать Chukcha и поменять связи хотя бы для одного товара.

Я сделала для одного товара,все получилось! Но я ж не могу всем 5000-6000 менять руками. Я просто решение ищу и все. Некоторые другое предлагают. Что то в коде надо поменять.

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


заменила ты это <div class="breadcrumb">

<?php foreach ($breadcrumbs as $breadcrumb): ?>

<?php echo $breadcrumb['separator']; ?>

<?php if ($breadcrumb == end($breadcrumbs)): ?>

<?php echo $breadcrumb['text']; ?>

<?php else: ?>

<a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a>

<?php endif; ?>

<?php endforeach; ?>

</div>

 
 
 
на это
 
 
 
а стой
 
 
 
я мож не так
 
 
 
ну лан в общем
 
 
 
тот код заменил на этот
 
 
 
<?php 

class ControllerProductProduct extends Controller {

private $error = array(); 

public function index() { 

$this->language->load('product/product');

$this->data['breadcrumbs'] = array();

$this->data['breadcrumbs'][] = array(

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

'href' => $this->url->link('common/home'), 

'separator' => false

);

// $this->data['breadcrumbs'][] = array(

// 'href' => $this->url->link('common/catalog'),

// 'text' => $this->language->get('Каталог товаров'),

//'Каталог товаров' лучше затолкать в языковый файл. Для единообразия.

// 'separator' => $this->language->get('text_separator')

);

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

if (isset($this->request->get['path'])) {

$path = '';

$parts = explode('_', (string)$this->request->get['path']);

$category_id = (int)array_pop($parts);

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) {

$this->data['breadcrumbs'][] = array(

//

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

'text' => $category_info['name'],

'separator' => $this->language->get('text_separator')

);

}

}

 
 
 
и стало выдавать ошибку вот
 
 
 
при нажатии на товары
 
 

Вот переписка с моим админом

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


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

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

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

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

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

Вхід

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

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

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