我正在建立一个网站,并在 /shop/ 子目录中安装了 Magento。我想将顶级类别集成到我的非 Magento 站点的菜单中,以便您可以直接导航到该类别。为此,我需要类别名称和网址。
Magento 的分类有:
- 模板
- 颜色
- 主题
- 一般的
- 其他产品
我首先需要获取 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 ”。
首先,如何从 Magento 检索相对 URL?
其次,仅当我将 web/unsecure/base_url 设置设置为http://example.com/shop/时,生成的 URL 似乎才是正确的。如果我将它设置为 {{base_url}} (我们在开发过程中更喜欢它,因为我们使用基于虚拟主机的 svn 工作副本),则 /shop/ 部分丢失,即:“ http://example.com/templates/主题.html ”。
知道为什么吗?