如何从refinerycms菜单中删除特定的引擎页面和引擎菜单项



我在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>

我特别想从菜单栏中删除的菜单项是"新程序"

最简单的方法是从控制台中删除页面:

  • 在rails控制台中输入:bundle exec rails c
  • 查找要删除的页面:page = Refinery::Page.find("your-page-id")
  • 销毁:page.destroy!

请注意,"您的页面id"应该替换为页面的id;),当您在前端或后端访问此页面时,可以在URL中看到它。

此外,我们使用destroy!方法,因为在默认情况下,此页面设置为不可删除。

最后,您可以通过编辑引擎的种子文件来阻止创建此页面。

我终于发现,在Refinerycms中编辑页面时,如果您单击高级选项,则会有一个复选框来决定是否将该页面包含在公共菜单中。

您也可以在生成引擎时添加跳过前端选项:

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

最新更新