需要基于通配符路径ID(通用PHP)在opencart中创建动态内容

需要基于通配符路径ID(通用PHP)在opencart中创建动态内容,php,this,wildcard,opencart,isset,Php,This,Wildcard,Opencart,Isset,首先,谢谢你的帮助 我已经编写了基于产品当前路径显示内容的代码 如果用户登录到类别路径“999”(index.php?route=product/product&path=999)中的产品,将显示“示例文本”。但是,我很难添加一个“通配符”方法,因此任何以“999”开头的类别,例如(index.php?route=product/product&path=999_1_49)-我对php不是很在行,所以任何帮助都会很好 谢谢,这是我使用的代码 <?php if (!isset($this-&

首先,谢谢你的帮助

我已经编写了基于产品当前路径显示内容的代码

如果用户登录到类别路径“999”(index.php?route=product/product&path=999)中的产品,将显示“示例文本”。但是,我很难添加一个“通配符”方法,因此任何以“999”开头的类别,例如(index.php?route=product/product&path=999_1_49)-我对php不是很在行,所以任何帮助都会很好

谢谢,这是我使用的代码

<?php if (!isset($this->request->get['path']) || $this->request->get['path'] == '999') { ?>EXAMPLE TEST <?php } ?> 
示例测试
更新

我发现了一个“bug”。首先,这似乎在启用SEO时效果良好,因为路径仍然相同,但是,启用SEO后,客户可以查看分配给他们的类别以外的产品。例如,通常客户会单击类别“Acura”,然后单击“Acura CL”,URL将为“”,其中路径将为“999”(例如)。使用上述代码时,将显示PHP标记中的内容。但是,当启用SEO时,客户还可以通过URL“”直接找到产品。如果客户通过此URL查看产品,则PHP标记中的内容是可见的,而不是隐藏的


简言之,内容似乎是在没有指定路径的情况下显示的(直接查看产品而不是通过其父类别查看)。我不知道如何解决这个问题,请告诉我。这是一个经过大量修改的商店,因此任何扩展建议都将被忽略,因为我们不愿意冒险安装可能导致进一步问题的修改。

首先,您的第一个“错误”是因为第一次条件检查

if (!isset($this->request->get['path']) || substr($this->request->get['path'],0,3) == '999') ...
!isset($this->request->get['path'])
如果没有路径,将显示内容



因为您希望即使在直接访问产品时也能显示您的消息,所以上述操作将不起作用。 相反,您必须从DB中提取产品所属的类别ID,然后进行检查

大概是这样的:

    <?php $category_results = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$this->request->get['product_id'] . "'");  ?>
    <?php foreach ($category_results->rows as $category) { ?>
    <?php if ($category['category_id'] == '999') { ?>
    /// EXAMPLE TEST \\\
    <?php break; ?>
    <?php } ?>
    <?php } ?>

///示例测试\\\
但是,理想情况下,这种代码应该不在视图文件中,而是放在控制器中,然后在视图文件中引用




虽然这是一个正确的答案,但如果您能再解释一下解决方案,那就太好了。这样一个简短的回答应该被认为是一个评论……我将在收到对我的后续行动的回复后解释,因为我已经发现了这个“解决方案”的一个bug。我发现了一个与此相关的错误,但尚未解决该问题-请参阅上面的更新。有类别和没有类别的解决路径是什么?有意义吗?我们只是安装了一个扩展,允许我们为每个特定产品选择一个模板。我感谢你的时间!