2012-07-19 94 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

相关问题