header.tpl中的OpenCart Breadcrumb

时间:2012-03-08 13:19:35

标签: header navigation breadcrumbs opencart nav

有人可以告诉我如何在header.tpl中使用痕迹导航而不是在opencart的product.tpl中?

3 个答案:

答案 0 :(得分:3)

我只需要想出一个我们正在建设的新网站,我想出了以下内容;使用风险自负(如果我遇到任何重大问题,我会报告,但我无法预见任何......着名的遗言)

基本上,面包屑是在控制器中构建的,我们需要在头控制器中生成$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 :(得分:1)

由于1.5.X的编码方式,您需要重写每个控制器并将方法添加回文档类,以允许从产品控制器传递到标头控制器。你有什么特别的理由要这样做吗?

答案 2 :(得分:1)

如果所有其他方法都失败了,只需破解css,比如

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

会将面包屑向上移动到左侧。