OpenCart Breadcrumb в header.tpl - PullRequest
       54

OpenCart Breadcrumb в header.tpl

0 голосов
/ 08 марта 2012

Может кто-нибудь сказать мне, как я могу иметь навигационную крошку внутри header.tpl, а не в product.tpl opencart?

Ответы [ 3 ]

3 голосов
/ 12 июля 2012

Мне просто нужно было выяснить это для нового сайта, который мы создаем, и я придумал следующее;используйте на свой страх и риск (я сообщу, если у меня возникнут какие-либо серьезные проблемы, но я не могу предвидеть никаких ... знаменитых последних слов)

В основном хлебные крошки встроены в контроллеры, и нам нужнорезультирующий массив $breadcrumbs в контроллере заголовка.Измените system/engine/controller.php следующим образом:

[...snip...]
protected function render() {
    foreach ($this->children as $child) {
        $this->data[basename($child)] = $this->getChild($child,array('parent_data'=>&$this->data));
}
[...snip...]

Это отправит все данные в родительском контроллере до вызова render() на каждый контроллер / метод $children.Тогда нам просто нужно поднять это в контроллере заголовка следующим образом:

<?php   
class ControllerCommonHeader extends Controller {
    protected function index($args=array()) {
        // parent data
        $this->data['parent_data'] = $args['parent_data'];
[...snip...]

И мы можем получить доступ ко всему в шаблоне с помощью $parent_data['whatever'].В этом случае $parent_data['breadcrumbs'] будет массивом хлебных крошек, которые я могу зациклить с кодом, который я удалил из каждого page.tpl и добавил к моему header.tpl.

1 голос
/ 15 марта 2012

если ничего не помогает, просто взломайте CSS, что-то вроде

.breadcrumb {
   margin-left: -270px;
   margin-top: -65px;
}

переместит хлебную крошку вверх и влево.

1 голос
/ 08 марта 2012

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

...