-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 も DB から取得して、チェックを行う必要があります。

そのようなもの:

    <?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 に答える