-1

有人可以告诉我如何在 header.tpl 中而不是在 opencart 的 product.tpl 中包含面包屑导航吗?

4

3 回答 3

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. 然后我们只需要在 header 控制器中提取它,如下所示:

<?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.

于 2012-07-12T09:21:39.917 回答
1

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

于 2012-03-08T15:34:46.760 回答
1

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

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

将面包屑向上和向左移动。

于 2012-03-15T08:15:10.503 回答