Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


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

Edited by shotlandec2
Link to comment
Share on other sites


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

Link to comment
Share on other sites


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

Link to comment
Share on other sites

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

 

открываем контроллер: 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 категории товара.

 

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

 

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

Link to comment
Share on other sites


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

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

 

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

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

  • 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));
}


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

Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.