2011-05-16 43 views
1

客戶端網站使用Joomla模板,在左欄中有許多模塊,但對於我設計的自定義組件,這些模塊必須由垂直菜單。我想出了破解解決是要隱藏這些模塊與CSS:如何使用Joomla左側邊欄位置進行自定義組件菜單

div#leftpad > div { 
    display:none; 
} 

,然後在<div id='leftpad'>插入<div id='compmenu'> JavaScript和設置display:block。使用jQuery,我可以做

jQuery('#compmenu').appendTo('#leftpad').show(); 

該組件顯示谷歌地圖,所以javascript是必需的。這裏的任何Joomla專家都知道獲得相同結果的更優雅或直接的方法?

回答

1

爲什麼不在模塊或組件的菜單綁定模塊中使用構建來隱藏它們,這將是一種乾淨的方式。我認爲你的Module/Comp被綁定到一個菜單項。

編輯: 當然,您的客戶必須以正確的方式實施您的模塊/比較。是非常不好用黑客做這樣的事情。

  • 爲組件(programtic)
  • 創建菜單項創建一個隱藏的菜單
  • 添加您的組件到該菜單
  • 做綁定從這個menue所有模塊

在Joomla API舉辦了一系列關於構建組件的教程。我過去經歷過他們,但我看到他們已經改進了他們。據我瞭解你的組件是相對簡單的,所以默認菜單應該是你想要的。它在安裝中描述XML

<administration> 
    <!-- Administration Menu Section --> 
    <menu>MyMenuLink</menu> 

    <!-- some other stuff --> 

</administration> 

並將在Joomla!菜單管理器在客戶端安裝了組件之後。所以我認爲這對你來說不會那麼難。

+0

你能提供一個小代碼片段嗎?或者也許我可以在API文檔中查找類方法?不幸的是,我對Joomla的知識並不全面。我的組件不一定有菜單項。例如,它可能會從主頁上的圖像鏈接調用。 – yitwail 2011-05-16 08:43:10

+0

@yitwail即使它不是一個可見的菜單,你仍然必須在Joomla中使用menulink。其他所有可能導致你不良行爲。據我瞭解,你正在開發一個組件,所以客戶端需要安裝它。並處理所有的Joomla後端。這不取決於你。你不必做任何事情。這根本不是Joomla的工作方式。 一點背景:joomal中的每個模塊都有一個MenuBinding,默認情況下爲每個菜單設置「全部綁定」。客戶端只需解除引用組件的Menu(或Menuitem)的綁定。 – sra 2011-05-16 09:11:36

+0

我不想用黑客。這就是我問這個問題的原因。我試着用谷歌搜索'joomla菜單綁定模塊',並提到第一個結果指出url中的itemid = xx。然後,我遇到了一個關於這個[這裏]的官方文檔(http://docs.joomla.org/How_to_control_module_display_when_linking_to_an_article_with_no_menu_item),但它正在專門針對文章頁面。無論如何,我需要以某種方式爲不包含它不需要的模塊的組件創建一個itemid。 – yitwail 2011-05-16 09:23:29

1

在Joomla中,菜單類型由安裝組件指定的各種視圖決定。如果你的組件被正確地編碼爲Joomla MVC標準,你至少應該有一個View,它會給你至少一種菜單類型供你選擇。正如前面提到的,即使你不需要菜單鏈接,你也應該創建一個隱藏的菜單,這樣你就可以創建一個鏈接,以便你有一個itemID來處理和分配模塊。

有幾個擴展和網站可以幫助爲組件創建必要的文件,所以您只需添加一些代碼即可。一旦你瞭解了Joomla MVC,它確實不是太難。

http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_1

這樣做,這樣會爲你節省很多頭痛後,當最終用戶必須弄清楚如何使用您的組件。

+0

布倫特,我很瞭解MVC。我的組件有一個包含views/map/view.html.php&views/map/tmpl/default.php的地圖視圖。我已經研究過你提到的一些教程。無論如何,感謝您的意見;我會咬住子彈並按照正確的方式去做。 – yitwail 2011-05-17 00:34:53