-1

首先,感谢您的帮助。

我编写了代码来根据产品的当前路径显示内容。

如果用户登陆类别路径“999”(index.php?route=product/product&path=999)中的产品,则会出现“EXAMPLE TEXT”。但是,我很难添加“通配符”方法,因此例如以“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 } ?> 

更新

我已经确定了一个“错误”。首先 - 这似乎在启用 SEO 的情况下工作正常,因为路径仍然相同,但是,当启用 SEO 时,客户能够查看他们分配到的类别之外的产品。例如,通常客户会单击“Acura”类别,然后单击“Acura CL”,URL 将是“ http://www.XYZ.com//Acura%20Performance%20Chips/Acura%20CL ”,其中路径为是“999”(例如)。使用上述代码时,将显示 PHP 标签内的内容。但是,启用 SEO 后,客户也可以通过 URL“ http://www.XYZ.com/Acura%CL ”直接找到产品。如果客户通过此 URL 查看产品,则 PHP 标记中的内容是可见的,而不是隐藏的。

简而言之,似乎在未分配路径时正在显示内容(直接查看产品而不是通过其父类别查看)。我迷失了如何解决这个问题,请指教。这是一家经过大量修改的商店,因此任何扩展建议都将被忽略,因为我们不愿意冒险安装可能导致进一步问题的修改。

4

2 回答 2

1
if (!isset($this->request->get['path']) || substr($this->request->get['path'],0,3) == '999') ...
于 2013-10-01T18:21:59.343 回答
0

首先,您的第一个“错误”是由于第一次条件检查。

!isset($this->request->get['path'])

如果不存在路径,则将显示内容。



因为您希望即使直接访问产品也能显示您的消息,所以上述方法不起作用。相反,您必须从数据库中提取该产品所属的类别 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 } ?>

理想情况下,此类代码应保留在视图文件之外并放置在控制器中,然后仅在视图文件中引用。



于 2013-10-05T17:22:16.537 回答