我正在建立一个网站,并在/ shop /子目录中安装了Magento。我想将顶级类别集成到我的非Magento网站的菜单中,以便您可以直接导航到该类别。为此,我需要类别名称和网址。
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是绝对完整的URL,例如“http://example.com/shop/templates/theme.html”。
首先,如何从Magento中检索相对URL?
其次,如果我将web / unsecure / base_url设置为http://example.com/shop/,则生成的URL似乎只是正确的。如果我将其设置为{{base_url}}(我们在开发过程中我们更喜欢使用基于虚拟主机的svn工作副本),则缺少/ shop / part,即:“http://example.com/templates/theme.html”。
知道为什么吗?
答案 0 :(得分:1)
我认为您可以通过使用系统中的设置&gt;来实现所有要求。配置&gt;网络
我要尝试的第一件事是设置基本网址(如果需要安全和不安全)到/(正斜杠),然后转到系统&gt;缓存管理&gt;重建目录网址重写。
如果这不起作用,请使用设置,打赌你可以让它工作。但要注意,它会让magento把相对网址放在google base feed等等=坏!所以不要在生产中这样做。
我的开发副本正在工作,无法从这里开始,因此无法为您尝试。
另外,对于上面的脚本,您可以尝试:
$url = "/shop/" . $_category->getUrlKey() . '.html';
(最后你可能不需要html位,取决于你的配置)