Я создаю веб-сайт и установил Magento в подкаталог /shop/. Я хотел бы интегрировать основные категории в меню моего сайта, отличного от Magento, чтобы вы могли переходить непосредственно в категорию. Для этого мне нужны названия категорий и URL-адреса.
Категории Magento:
- Templates
- Color
- Тема
- Общий
- Другие продукты
Сначала мне нужно было получить список категорий ниже верхнего уровня Templates, поэтому я написал следующий код. Это моя первая попытка интеграции с 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-адреса являются абсолютными полными URL-адресами, такими как «http://example.com/shop/templates/theme.html".
Во-первых, как мне получить относительный URL-адрес из Magento?
Во-вторых, сгенерированный URL-адрес кажется правильным только в том случае, если я установил для параметра web/unsecure/base_url значение http://example.com/shop/. Если я вместо этого установлю {{base_url}} (что мы предпочитаем во время разработки, поскольку мы используем рабочие копии svn на основе виртуального хостинга), часть /shop/ отсутствует, то есть: "http://example.com/templates/theme.html".
Есть идеи, почему?