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

Не применяется путь в макетах


Recommended Posts

Всем доброго дня. Ни чего не понимаю. Я прописываю путь в Дизайн - Макеты, в новом макете: product/productipad

Контроллер создан. Если открыть страницу: index.php?route=product/productipad&path=20&product_id=46 , то страница рабоает, то есть контроллер работает правильно.

Но в категории товаров, ссылка на товар остается такого вида: index.php?route=product/product&path=20&product_id=46

 

Почему так? Куда копать?

 

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

 

 

На всякий случай, еще раз распишу. А то, как-то скомканно получилось.

1) создаем новый макет для товара.

2) где путь, указываем product/productipad

3) создаем новый контроллер productipad (контроллер работает исправно)

4) идем в товар, в самой последней вкладке указываем новый макет

 

Но при открытии списка товаров данной категории, этот товар имеет урл стандартный, то есть product/product , а не новый, который прописали у товара: product/productipad

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


да же пусть в списке товаров урл остается такой index.php?route=product/product , но когда мы открываем сам товар, то видим, что макет применился именно новый, который мы только создали. А вот контроллер используется дефолтный....

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


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

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

если не подскажите, то пока решил таким образом:

 

открываем контроллер: product/product

 

находим строку:

$this->response->setOutput($this->load->view('product/product', $data));

 

и заменяем на:

switch ($category_id) {
            case 20:
                $this->response->setOutput($this->load->view('product/productipad', $data));
                break;
            default:
                $this->response->setOutput($this->load->view('product/product', $data));

}

 

где 20 - это id категории товара.

 

Понимаю, что это не совсем верно, так как я такое могу исправить, добавить новый шаблон и т.д. А вот кто не шарит, то ему это будет проблематично.

 

Поэтому и не пойму, почему не применяется контроллер для макета.

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


5 минут назад, shotlandec2 сказал:

если не подскажите, то пока решил таким образом:

 

все верно, там где $this->load->view строите свою логику и подгужаете разные tpl файлы в зависимости от нужного параметра. Но контроллер для этого новый делать не нужно. 

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

7 минут назад, shotlandec2 сказал:

А вот кто не шарит, то ему это будет проблематично.

то ему в код лезть не нужно ) 

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

  • 2 months later...

Аналогично....  Лично я так и не смог осознать зачем было городить такой огород вокруг макета(layout) в базе, запихнуть его на вкладку Дизайн(!) и написать в доке что это URL(!)....
для себя лично я путь макета (layout->route) сделал путем к шаблону (.twig) как по мне - нативно это именно так и воспринимается в админке.
Мне нужно было для настройки шаблона продукта, потому правил так:
lдобавил функцию в  
#/catalog/model/catalog/product.php

public function getProductLayoutRoute($product_id) {

                $query = $this->db->query("SELECT route FROM " . DB_PREFIX . "layout_route r INNER JOIN " . DB_PREFIX . "product_to_layout pl ON (r.layout_id = pl.layout_id) WHERE pl.product_id = '" . (int)$product_id . "' AND pl.store_id = '" . (int)$this->config->get('config_store_id') . "'");

                if ($query->num_rows) {
                        return $query->row['route'];
                } else {
                        return 0;
                }
        }

 

а в контроллере подтянул и заменил вывод, если есть route
#/catalog/controller/product/product.php

$layoutRoute = $this->model_catalog_product->getProductLayoutRoute($this->request->get['product_id']);

if (!$layoutRoute){
    $this->response->setOutput($this->load->view('product/product', $data));
}
else{
    $this->response->setOutput($this->load->view($layoutRoute, $data));
}


ну и макет с путем и шаблон к макету конечно....

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


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

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

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

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

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

Вхід

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

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

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

Important Information

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