0

私はウェブサイトを構築しており、Magento を /shop/ サブディレクトリにインストールしています。トップ カテゴリを Magento 以外のサイトのメニューに統合して、カテゴリに直接移動できるようにしたいと考えています。このためには、カテゴリ名と URL が必要です。

Magento のカテゴリは次のとおりです。

  • テンプレート
    • テーマ
    • 全般的
  • その他の製品

最初に、テンプレートのトップレベルの下にあるカテゴリのリストを取得する必要があったため、次のコードを記述しました。Magento との統合は初めての試みなので、優しくしてください :-) :

<?php
require_once dirname(__FILE__).'/shop/app/Mage.php';
umask(0);
Mage::app('default');

$helper     = Mage::helper('catalog/category');
$collection = $helper->getStoreCategories();
foreach ($collection as $catalogArray) {
    if ($catalogArray->getName() == "Templates") {
        foreach (explode(",", $catalogArray->getChildren()) as $category) {
            $_category = Mage::getModel('catalog/category')->load($category);
            if($_category->getIsActive()) {
                $caturl = $_category->getUrl();
                $catname = $_category->getName();
            }
            echo "<pre>";
            var_dump($caturl);
            echo "</pre>";

            echo "<pre>";
            var_dump($catname);
            echo "</pre>";
        }
    }
}
?>

これは名前とカテゴリを正しく取得しますが、返される URL は「 http://example.com/shop/templates/theme.html 」などの完全な絶対 URLです。

まず、Magento から相対 URL を取得するにはどうすればよいですか?

次に、生成された URL は、 web/unsecure/base_url 設定をhttp://example.com/shop/に設定した場合にのみ正しいようです。代わりにこれを {{base_url}} に設定すると (仮想ホスティング ベースの svn 作業コピーを使用するため、開発中にはこれを好みます)、/shop/ の部分が失われます。つまり、" http://example.com/templates/ theme.html ".

理由はありますか?

4

1 に答える 1

1

システム>構成>ウェブの設定をいじることで、すべての要件を達成できると思います

最初に試すのは、ベース URL (必要に応じてセキュアおよび非セキュア) を / (スラッシュ) に設定し、次にシステム > キャッシュ管理 > カタログ URL の書き換えを再構築することです。

それでもうまくいかない場合は、設定をいじってみてください。きっとうまくいくはずです。ただし、magento が相対 URL を Google ベース フィードなどに配置するようになるので注意してください。したがって、本番環境では行わないでください。

私の dev コピーは作業中で、ここからアクセスできないため、試すことはできません。

また、上記のスクリプトでは、次を試すことができます。

$url = "/shop/" . $_category->getUrlKey() . '.html';

(構成によっては、最後にhtmlビットが必要ない場合があります)

于 2009-07-11T12:34:58.723 に答える