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

[Решено] Хлебные крошки. Вопрос.


Recommended Posts

День добрый. В ходе "допиливания" opencart 1.5.6 возникла необходимость в  controller/module/file.tpl осуществить проверку на условия по хлебный крошкам. Последние формируются в контроллерах стрниц - можно ли в контроллере модуля "увидеть" массив breadcrumbs и если да то каким образом?

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


Добрый. Нет, нельзя. Хлебные крошки в контроллерах формируются из URL, достаточно скопировать код генерации хлебных крошек из контроллера и вставить его в модуль. Однако работать будет не на всех страницах т.к. в каждом разделе правила генерации крошек из URL разные, т.е. для категории и производителя они разные.

 

Выходом может служить написание алгоритма генерации хлебных крошек для всего магазина для всех страниц. Либо можно заранее (сразу после генерации) сохранить их в зоне глобальной видимости ($this->config->set($name, $value), $this->registry->set($name, $value)).

 

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

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

Есть обычный модуль HTML, в его контроллере я проверяю на условие по URL и в зависимости от этого скрываю тот или иной HTML блок (в примере проверка одного условия)

$URL = $_SERVER['REQUEST_URI'];
if (strstr($URL, 'belaya-santehnika') != FALSE)
{
switch($position)
	{
		     case "area1":
                         $this->data['escape'] = "visible";
                         break;
		     case "area2":
                         $this->data['escape'] = "none";
                         break;
		     case "area3":
                         $this->data['escape'] = "none";
                         break;
	  } 

}

Теперь появилась задача проверять условия и по хлебным крошкам, т.е. типа если раздел такой-то, то выводим блок такой-то. Проблема в получении значений масива breadcrumbs в контроллере модуля. Пробовал так.

$breadcrumbs = $this->document->breadcrumbs;
print_r($breadcrumbs);

Пишет неопределённая переменная.

Хотя по идее перед исполнением модуля массив breadcrumbs должен сформироваться.

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


тогда лучше отслеживать по:

$this-request->get['category_id']; //ID категории
$this-request->get['product_id']; //ID товара
$this-request->get['path']; //Путь категорий на странице товара.

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

Если в контроллере модуля пишу  $this-request->get['path']; или один из предложенных вариантов, страница не грузится вообще.

Сайт , идём в категорию допустим "белая сантехника" - белый экран. Файербаг пишет "NetworkError: 500 Internal Server Error - http://legarta.seotime.su/santehnika-creavit/belaya-santehnika"

"

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


Упс. Надо 

$this->request->get['path'];

(вместо стрелки тире поставил). Теперь пишет неопределённая переменная. get. -

Notice: Undefined property: Config::$get in /var/www/glinda/data/subdomain/legarta/catalog/controller/module/cr2htmlmodule.php on line 29Notice: Undefined property: Config::$get in /var/www/glinda/data/subdomain/legarta/catalog/controller/module/cr2htmlmodule.php on line 29

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


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

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

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

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

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

Вхід

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

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

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

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

Important Information

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