2014-01-22 18 views
0

產品說明沒有看到這個問題問的任何地方,所以這裏有雲:調用編程的產品屬性,在Magento

我在我的Magento商店幾個屬性,而是從一個過於混亂的頁面饒用戶,我用產品標籤分隔了產品頁面上的各種信息。第一個選項卡顯示產品描述,它目前是一大堆HTML,基本上通過顯示易於理解的圖標及其下方的屬性值來反映屬性,第二個選項卡顯示更深入的信息,其中包含從DB調用的屬性。

現在,在編輯或添加產品時,我基本上必須添加屬性兩次:一次是實際產品屬性,一次是簡單的帶有圖標的HTML產品描述。

我想要做的是,以編程方式調用屬性,並插入一個變量,它會自動加載圖標下的屬性值,從而節省了我手動編輯和仔細檢查每個值的時間。

的示例代碼沒有一些其他的東西基本路線目前看起來是這樣的:

<img src="http://myurl.com/img/profile.jpg" alt="attribute_1_image" /><br /> 70mm 

手動編寫出70毫米相反的,我希望能夠從數據庫中調用它,所以我可以簡單地複製和粘貼每個產品介紹頁面上相同的HTML,因爲我已經有70毫米添加attribute_1,所以首選的結果將是:

<img src="http://myurl.com/img/profile.jpg" alt="attribute_1_image" /><br />{var.attribute_1} 

這,或任何類似的地方會簡單地從裝載屬性用戶當前使用的產品頁面上。

我接觸到的最接近的東西是這樣的:http://www.devinrolsen.com/magento-custom-attributes-value/但我意識到這不能通過PHP來完成,因爲編輯器不支持它,所以我很難理解我該如何實現這一點。我正在運行Magento 1.6。

任何幫助表示讚賞!

謝謝。

回答

0

您可以使用自定義「變量」作爲文本替換。將{var.attribute_1}置於後端描述中。然後,在產品視圖中,執行字符串替換。

文件app/design/frontend/default/YOUR_THEME/template/catalog/product/view.html

$description = $_product->getDescription(); 

if ($_product->getVariable1()): 
    $description = str_replace(
     '{var.attribute_1}', 
     $_product->getResource()->getAttribute('variable_1')->getFrontend()->getValue($_product), 
     $description); 
endif; 

等每個屬性,然後echo $description;。您必須啓用Magento後端產品視圖的屬性。不需要擴展。

只有當您的產品有不同的描述「模式」時,這纔有意義。否則(例如,如果變量1始終存在),則可以將<img>標記放在此文件中,後跟屬性值,並將描述字段保留爲實際描述。

編輯:防止{} var.attribute_1中即使在實際屬性爲空的產品視圖中顯示,下面的代碼看起來更好:

$description = $_product->getDescription(); 

$attribute_value = 
     ($_product->getVariable1()) ? 
      $_product->getResource()->getAttribute('variable_1')->getFrontend()->getValue($_product) 
      : ""; 
$description = str_replace(
     '{var.attribute_1}', 
     $attribute_value, 
     $description); 
+0

已編輯,我會在我回家後試試。但是,由於變量,你的意思是屬性,只是爲了確定? 我並不想硬編碼的描述,因爲他們確實有不同的模式,有些產品比其他產品有更多的圖標,有些需要點擊時打開一個燈箱等,所以它們會有所不同。 我會在幾個小時後回家,所以我會給你一個去看看會發生什麼。現在感謝! – Cardo

+0

要明確一點,'variable_1'是屬性的名稱(代碼名稱,而不是屬性標籤)。根據名稱的格式,Magento可以通過快速調用「getVariable1()」來獲取屬性。 – Thundar

+0

我嘗試了你的建議,但是我做錯了或者沒有奏效。我添加了您在view.phtml文件中編寫的代碼,並在每個可能的地方回顯$ description,但沒有結果。我的代碼如下所示:http://pastebin.com/V0HuuQLe(對不起,由於某種原因,我無法在註釋中對代碼進行格式化) 我替換的文本是{var.thickness},屬性的代碼簡單的厚度。不確定究竟是什麼錯誤。 – Cardo

0

對不起aswer這一點,但我不能確定產品的屬性可以在產品的描述字段可以直接插入(如果這是你想做什麼?)

的好辦法是有說明頁上的塊並在那裏做佈局。用html和php就像你指出的鏈接。 只需在產品頁面上顯示此塊,它將加載並顯示我們所有產品的屬性。

希望這會有所幫助。

+0

我想到了這一點,但後來我我必須創建與我的產品一樣多的靜態塊,因爲它們與佈局不同,一些產品視圖比其他產品視圖具有更多的圖標,並且需要鏈接到燈箱中的一些不同圖像,所以我會創建無盡的靜態塊。這可能比手動編輯所有內容要快一些,但是Thundar關於文本替換的建議可能會更好。 – Cardo