Magento:从外部获取相关URL到类别

时间:2009-07-01 11:10:14

标签: php oop magento e-commerce

我正在建立一个网站,并在/ 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”。

知道为什么吗?

1 个答案:

答案 0 :(得分:1)

我认为您可以通过使用系统中的设置&gt;来实现所有要求。配置&gt;网络

我要尝试的第一件事是设置基本网址(如果需要安全和不安全)到/(正斜杠),然后转到系统&gt;缓存管理&gt;重建目录网址重写。

如果这不起作用,请使用设置,打赌你可以让它工作。但要注意,它会让magento把相对网址放在google base feed等等=坏!所以不要在生产中这样做。

我的开发副本正在工作,无法从这里开始,因此无法为您尝试。

另外,对于上面的脚本,您可以尝试:

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

(最后你可能不需要html位,取决于你的配置)