私はウェブサイトを構築しており、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 ".
理由はありますか?