2015-03-02 90 views
0

我使用Magento的Fishpig WordPress擴展(帶有CPT擴展名),我似乎無法弄清楚如何根據當前帖子的類型加載邊欄塊。我想加載特定塊,僅當:基於帖子類型加載邊欄塊

  • 我瀏覽了一個職位與recipe
  • 我查看存檔類型recipe
  • 我正在瀏覽的頁面項的類型自定義分類recipe_category

對於單篇文章觀點,我補充這樣在我local.xml中塊:

<wordpress_post_view> 
    <reference name="right"> 
     <remove name="wordpress.widget.categories" /> 
     <block type="wordpress/sidebar_widget_categories" name="wordpress.widget.recipe_categories" before="-" as="recipe_categories" template="wordpress/sidebar/widget/categories.phtml"> 
      <action method="setTitle"><title>Recipe Categories</title></action> 
      <action method="setTaxonomy"><title>recipe_category</title></action> 
     </block> 
    </reference> 
</wordpress_post_view> 

這工作正常,我只需要弄清楚如何限制它只顯示recipe後類型。 recipe存檔和recipe_category分類術語存檔也一樣。

回答

2

以上的海報是正確的,使用的佈局處理是這樣做的好方法(雖然wordpress_post_view_POSTTYPE佈局句柄已經存在,所以有不需要通過觀察者創建它),但我認爲這種方法對於大部分用戶來說可能太過技術性。

對此,我剛剛發佈了Magento WordPress Integration版本3.1.1.25,增加了對Custom Sidebars插件的支持。這個插件允許您在WordPress管理員中創建額外的側邊欄,並觸發它們根據帖子類型,存檔類型(類別,日期,主頁,搜索等)進行顯示,併爲每個特定帖子指定不同的側邊欄。這可以通過WordPress Admin> Widgets頁面完成。

要添加此功能,請將擴展升級到最新版本,然後在WordPress管理中安裝Custom Sidebars插件。您將能夠創建自定義側邊欄而無需觸摸任何代碼。

0

我設法通過檢查wordpress/sidebar/widget/categories.phtml模板文件中的帖子類型來拼湊解決方案。仍然對清潔解決方案感興趣。

$post_type = 'post'; 
if($post = Mage::registry('wordpress_post')) { 
    $post_type = $post->getPostType(); 
} elseif($type = Mage::registry('wordpress_post_type')) { 
    $post_type = $type->getPostType(); 
} elseif($term = Mage::registry('wordpress_term')) { 
    $post_type = $term->getTaxonomy() == 'recipe_category' ? 'recipe' : 'post'; 
} 

if($post_type == 'recipe') { 
    $this->setTaxonomy('recipe_category'); 
    $this->setTitle('Recipe Categories'); 
} 

$categories = $this->getCategories(); 
0

感謝@BenTideswell爲提醒我們,這個擴展已經提供了可用於這一目的的適當佈局句柄,所以我們並不需要創建一個又一個的事實。我們只需要做幾個layout XML updates爲目標的適當崗位類型:

<wordpress_post_view> 
    <reference name="right"> 
     <remove name="wordpress.widget.categories"/> 
    </reference> 
</wordpress_post_view> 

<wordpress_post_view_recipe> 
    <reference name="right"> 
     <block type="wordpress/sidebar_widget_categories" name="wordpress.widget.recipe_categories" before="-" as="recipe_categories" template="wordpress/sidebar/widget/categories.phtml"> 
      <action method="setTitle"><title>Recipe Categories</title></action> 
      <action method="setTaxonomy"><title>recipe_category</title></action> 
     </block> 
    </reference> 
</wordpress_post_view_recipe> 
+1

在撰寫本文時,這是最好的解決方案。對於大多數用戶來說,這可能太複雜了,我已經更新了擴展並添加了對Custom Sidebar插件的支持,允許您通過WordPress管理自動創建邊欄。 – 2015-03-06 18:07:01

+0

@BenTideswell - 感謝您更新您的擴展程序,以便用戶更輕鬆地完成此操作。我更新了我的答案,僅顯示了佈局更新XML概念,並針對現有句柄。 – fantasticrice 2015-03-25 17:06:14

相關問題