基于路由的产品页面上的OpenCart模块

时间:2013-11-07 16:11:22

标签: php opencart

我在左栏设置了2个模块,其中一个模块有类别&一个与制造商, 两者都有自己的布局:产品/类别&产品/制造商,

这样可以正常工作:浏览类别时,左栏中仅显示类别模块,而浏览制造商时,左栏中仅显示制造商模块。

但是在检查产品详情时,它只会显示分配给布局“产品”的模块, 而这里是我无法理解该怎么做的地方。 如果将“产品”布局添加到类别和&制造商模块,然后(当然)显示两个模块,如何根据路线添加模块?

浏览分类示例:

1)只有类别模块显示在左栏(这里都很好)

index.php?route=product/category&path=33

2)输入产品:

index.php?route=product/product&path=33&product_id=31

现在显示分配给布局“产品”的所有模块,我只想要模块 在浏览要显示的类别(步骤1)时显示

示例浏览制造商:

1)左栏中只显示制造商模块(此处一切都很好)

index.php?route=product/manufacturer

2)输入与类别示例相同的产品:

index.php?route=product/product&manufacturer_id=9&product_id=31

现在显示分配给布局“产品”的所有模块,我只想要模块 在浏览制造商(步骤1)时显示

因此,它是同一产品的两条不同路线:

index.php?route=product/product&path=33&product_id=31
index.php?route=product/product&manufacturer_id=9&product_id=31

但适用的布局是带有路线产品/产品的“产品”

那么有没有办法将这两个不同的路由添加到两个不同的布局,所以模块可以正确显示或我想错了方法?

对此的任何输入都会很棒

OpenCart 1.5.6

1 个答案:

答案 0 :(得分:1)

你有一些选择。您可以查看$_SERVER['HTTP_REFERER']标题,这可能不会被发送(因此不是100%可靠),或者您可以使用会话来存储您来自哪里的密钥...例如,何时列出类别,在category控制器中执行类似:

$this->session->data['user_is_listing'] = 'category';

如果用户跳转到manufacturer控制器中的制造商列表,请设置相同的密钥,不同的值:

$this->session->data['user_is_listing'] = 'manufacturer';

然后,在column_left控制器中添加对这两个模块的新检查(必须将制造商和类别模块分配到产品详细信息页面)并检查存储的值是什么密钥user_is_listing下的会话...然后,是否允许模块渲染...

编辑:好的,我们假设您自己的模块名称为category1manufacturer1(如果您使用的是默认模块,则名称将不带数字{ {1}})。现在,在左侧列中找到1循环,我们将以这种方式修改它:

foreach ($extensions as $extension) {

现在,存储在会话中的名称必须与该模块的名称相同。