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