有人可以告诉我如何在 header.tpl 中而不是在 opencart 的 product.tpl 中包含面包屑导航吗?
问问题
4908 次
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 回答