代码之家  ›  专栏  ›  技术社区  ›  Martijn Heemels

magento:从外部获取类别的相对URL

  •  0
  • Martijn Heemels  · 技术社区  · 16 年前

    我正在建立一个网站,并在/shop/子目录中安装了magento。我想把最上面的分类集成到我的非magento站点的菜单中,这样你就可以直接导航到分类了。为此,我需要类别名称和URL。

    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>";
            }
        }
    }
    ?>
    

    http://example.com/shop/templates/theme.html “。

    首先,如何从Magento中检索相对URL?

    其次,如果我将web/unsecure/base_url设置设置为 http://example.com/shop/ . 如果我将其设置为基URL(因为我们使用基于虚拟主机的SVN工作副本,所以在开发过程中我们更喜欢这样),则缺少/shop/部件,即: http://example.com/templates/theme.html “。

    你知道为什么吗?

    1 回复  |  直到 13 年前
        1
  •  1
  •   benlumley    16 年前

    我认为您可以通过在System>Configuration>Web中播放设置来满足所有要求。

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

    如果这不起作用,就玩弄设置,打赌你能让它起作用。但要注意,这会使magento在google基础feeds中放置相对的URL等=坏!所以不要在生产中这样做。

    我的dev副本正在工作,从这里不可访问,所以不能为您尝试。

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

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

    (您可能不需要在末尾使用HTML位,这取决于您的配置)