0

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

知道为什么吗?

4

1 回答 1

1

我认为您可以通过使用 system > configuration > web 中的设置来满足您的所有要求

我要尝试的第一件事是将基本 url(如果需要,安全和不安全)设置为 /(正斜杠),然后进行系统 > 缓存管理 > 重建目录 url 重写。

如果这不起作用,请尝试设置,打赌你可以让它工作。但请注意,它会使 magento 将相对 url 放入谷歌基本提要等 = 糟糕!所以不要在生产中这样做。

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

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

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

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

于 2009-07-11T12:34:58.723 回答