0

我在refinerycms 中创建了一个引擎,我将数据拉到主页上。Refinerycms 自动为此引擎创建一个页面和一个菜单项。

如何删除引擎页面并将其从菜单栏中删除?

菜单.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

3 回答 3

7

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

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

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

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

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

于 2012-07-26T08:36:50.603 回答
4

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

于 2012-07-30T18:45:35.633 回答
3

您还可以在生成引擎时添加 skip-frontend 选项:

rails generate refinery:engine NAME [field:type field:type] --skip-frontend
于 2013-04-02T07:58:41.930 回答