2009-07-01 57 views
0

我正在構建網站,並在/ shop /子目錄中安裝了Magento。我想將頂級類別整合到我的非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>"; 
     } 
    } 
} 
?> 

這正確獲取名稱和類別,但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

我想你可以通過在系統>配置>網絡設置播放實現您的所有需求

第一件事,我想嘗試的設置基本URL(安全和不安全的如果需要的話),以/(正斜槓),然後進入系統>緩存管理>重建目錄url重寫。

如果這不起作用,請使用設置,打賭你可以得到它的工作。不過要注意的是,它會讓magento將相關網址放在Google基本Feed中=不好!所以不要在生產中這樣做。

我的開發副本是在工作,從這裏無法訪問,所以不能爲你嘗試。

而且,對於上述腳本,你可以嘗試:

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

(你可能不需要HTML位末,依賴於你的配置)

+1

我設法得到它的工作通過將/ shop/in base_url,但正如你提到的,Magento不喜歡相關的網址。例如,與Ogone支付服務提供商的集成也需要一個絕對URL。所以Magento迫使我放棄我的相對網址目標,這在開發環境中是一種恥辱。 感謝您指引我在正確的方向。 – 2009-08-25 08:04:59