2012-07-19 39 views
0

我在refinerycms中創建了一個引擎,將數據提取到主頁上。 Refinerycms自動爲該引擎創建一個頁面和一個菜單項。如何從精煉廠菜單中刪除特定的引擎頁面和引擎菜單項?

我該如何刪除引擎頁面以及從菜單欄中刪除它?

menu.html.erb

<% 
    # Collect the root items. 
    # ::Refinery::Menu is smart enough to remember all of the items in the original collection. 
    if (roots = local_assigns[:roots] || (collection ||= refinery_menu_pages).roots).present? 
    dom_id ||= 'menu' 
    css = [(css || 'menu clearfix')].flatten.join(' ') 
    hide_children = Refinery::Core.menu_hide_children if hide_children.nil? 
-%> 
<div id="nav"> 
    <ul> 
    <%= render :partial => '/refinery/menu_branch', :collection => roots, 
       :locals => { 
       :hide_children => hide_children, 
       :sibling_count => (roots.length - 1), 
       :menu_levels => local_assigns[:menu_levels], 
       :apply_css => true #if you don't care about class='first' class='last' or class='selected' set apply_css to false for speed. 
       } -%> 
    </ul> 
</div> 

<% end -%> 

menu_branch.html.erb

<% 
    if !!local_assigns[:apply_css] and (classes = menu_branch_css(local_assigns)).any? 
    css = "class='#{classes.join(' ')}'".html_safe 
    end 
-%> 
<li<%= ['', css].compact.join(' ').gsub(/\ *$/, '').html_safe %>> 
<%= link_to(menu_branch.title, refinery.url_for(menu_branch.url)) -%> 
    <% if ((children = menu_branch.children unless hide_children).present? && 
      (!local_assigns[:menu_levels] || menu_branch.ancestors.length < local_assigns[:menu_levels])) -%> 
    <ul class='clearfix'> 
     <%= render :partial => '/refinery/menu_branch', :collection => children, 
       :locals => { 
        :apply_css => local_assigns[:apply_css], 
        :hide_children => !!hide_children, 
        :menu_levels => local_assigns[:menu_levels] 
       } -%> 
    </ul> 
    <% end -%> 
</li> 

,我想從菜單欄中刪除尤其菜單項是 「新方案」

回答

4

我終於發現,如果您點擊高級選項,在Refinerycms中編輯頁面時,是否在公共菜單中包含該頁面有一個複選框。

+0

這是我正在尋找的確切答案。只需要將「博客」設置爲默認頁面並隱藏「主頁」選項即可。 – JGallardo 2013-09-04 23:54:17

+0

這會阻止它出現在菜單上,但它不會幫助您刪除頁面 - 例如如果你以某種方式意外地將數據庫「播種」兩次,並且現在有「博客」頁面重複出現! – CJBrew 2013-12-15 16:49:34

7

最簡單的方法是從控制檯刪除頁面:

  • 進入在軌控制檯:bundle exec rails c
  • 找到你要刪除的頁面:page = Refinery::Page.find("your-page-id")
  • 摧毀它:page.destroy!

注意,「你的頁面-ID」應該是的ID替換您的頁面;),當您在前端或後端訪問此頁面時,您可以在URL中看到它。

此外,我們使用destroy!方法,因爲默認情況下,此頁面設置爲不可刪除。

最後,您可以通過編輯引擎的種子文件來阻止創建此頁面。

+1

現在我仍然希望引擎來在管理員菜單,使用戶可以添加/刪除新的計劃,但我只是不希望它顯示在管理員的「頁面」鏈接或網站的主導航欄下。您的更改會執行此操作還是將它從一切中刪除? – Catfish 2012-07-26 13:15:58

+0

是的,我的更改會執行此操作。它將刪除創建的頁面對象,從管理員中刪除引擎選項卡,這是另一個故事。 – 2012-07-26 17:00:55

3

你也可以產生髮動機時添加跳過前端選項:

rails generate refinery:engine NAME [field:type field:type] --skip-frontend 
+0

你能解釋一下更詳細的內容嗎? – Catfish 2013-04-02 13:31:58

+0

將不會有前端頁面和菜單條目,只是後端部分,因此您不需要從菜單中排除引擎。 – 2013-04-02 14:22:27

+0

這已經證明對我有用的次數超過了我的數量。 – samuelkobe 2013-08-17 23:06:34