Module: Alchemy::PagesHelper
- Includes:
- BaseHelper, ElementsHelper
- Defined in:
- app/helpers/alchemy/pages_helper.rb
Instance Method Summary collapse
-
#language_links(options = {}) ⇒ Object
Renders links to language root pages of all published languages.
- #meta_description ⇒ Object
- #meta_keywords ⇒ Object
- #meta_robots ⇒ Object
-
#page_title(options = {}) ⇒ Object
Returns current page title.
-
#render_breadcrumb(options = {}) ⇒ Object
Returns page links in a breadcrumb beginning from root to current page.
-
#render_menu(menu_type, options = {}) ⇒ Object
Renders a menu partial.
-
#render_page_layout ⇒ Object
Renders the layout for current page.
-
#render_site_layout ⇒ Object
Renders a partial for current site.
Methods included from ElementsHelper
#element_preview_code, #element_preview_code_attributes, #element_tags, #element_tags_attributes, #render_element, #render_elements
Methods included from ElementsBlockHelper
Methods included from UrlHelper
#download_alchemy_attachment_path, #download_alchemy_attachment_url, #show_alchemy_page_path, #show_alchemy_page_url, #show_page_path_params
Methods included from BaseHelper
#render_icon, #render_message, #warning
Instance Method Details
#language_links(options = {}) ⇒ Object
Renders links to language root pages of all published languages.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'app/helpers/alchemy/pages_helper.rb', line 22 def language_links( = {}) = { linkname: "name", show_title: true, spacer: "", reverse: false }.merge() languages = Language.on_current_site.published.with_root_page.order("name #{[:reverse] ? "DESC" : "ASC"}") return nil if languages.count < 2 render( partial: "alchemy/language_links/language", collection: languages, spacer_template: "alchemy/language_links/spacer", locals: {languages: languages, options: } ) end |
#meta_description ⇒ Object
157 158 159 |
# File 'app/helpers/alchemy/pages_helper.rb', line 157 def @page..presence || Language.current_root_page.try(:meta_description) end |
#meta_keywords ⇒ Object
161 162 163 |
# File 'app/helpers/alchemy/pages_helper.rb', line 161 def @page..presence || Language.current_root_page.try(:meta_keywords) end |
#meta_robots ⇒ Object
165 166 167 |
# File 'app/helpers/alchemy/pages_helper.rb', line 165 def "#{@page.robot_index? ? "" : "no"}index, #{@page.robot_follow? ? "" : "no"}follow" end |
#page_title(options = {}) ⇒ Object
Returns current page title
Options:
prefix: "" # Prefix
separator: "" # Separating prefix and title
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
# File 'app/helpers/alchemy/pages_helper.rb', line 139 def page_title( = {}) return "" if @page.title.blank? = { prefix: "", suffix: "", separator: "" }.update() title_parts = [[:prefix]] title_parts << if response.status == 200 @page.title else response.status end title_parts << [:suffix] title_parts.reject(&:blank?).join([:separator]).html_safe end |
#render_breadcrumb(options = {}) ⇒ Object
Returns page links in a breadcrumb beginning from root to current page.
Options:
separator: %(<span class="separator">></span>) # Maybe you don't want this separator. Pass another one.
page: @page # Pass a different Page instead of the default (@page).
without: nil # Pass Page object or array of Pages that must not be displayed.
restricted_only: false # Pass boolean for displaying restricted pages only.
reverse: false # Pass boolean for displaying breadcrumb in reversed reversed.
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'app/helpers/alchemy/pages_helper.rb', line 103 def ( = {}) = { separator: ">", page: @page, restricted_only: false, reverse: false, link_active_page: false }.merge() pages = [:page] .self_and_ancestors.contentpages .published if .delete(:restricted_only) pages = pages.restricted end if .delete(:reverse) pages = pages.reorder("lft DESC") end if [:without].present? without = .delete(:without) pages = pages.where.not(id: without.try(:collect, &:id) || without.id) end render "alchemy/breadcrumb/wrapper", pages: pages, options: end |
#render_menu(menu_type, options = {}) ⇒ Object
Renders a menu partial
Menu partials are placed in the ‘app/views/alchemy/menus` folder Use the `rails g alchemy:menus` generator to create the partials
78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'app/helpers/alchemy/pages_helper.rb', line 78 def (, = {}) root_node = Alchemy::Node.roots.find_by( menu_type: , language: Alchemy::Current.language ) if root_node.nil? warning("Menu with type #{} not found!") return end render("alchemy/menus/#{}/wrapper", menu: root_node, options: ) rescue ActionView::MissingTemplate => error error_or_warning(error, "Menu partial for #{} not found. Please run `rails g alchemy:menus`") end |
#render_page_layout ⇒ Object
Renders the layout for current page.
Page layout files belongs in /app/views/alchemy/page_layouts/
Falls back to /app/views/alchemy/page_layouts/standard
if the page_layout partial is not found.
46 47 48 49 50 51 |
# File 'app/helpers/alchemy/pages_helper.rb', line 46 def render_page_layout render @page, page: @page rescue ActionView::MissingTemplate warning("PageLayout: '#{@page.page_layout}' not found. Rendering standard page_layout.") render "alchemy/page_layouts/standard", page: @page end |
#render_site_layout ⇒ Object
Renders a partial for current site
Place a rails partial into app/views/alchemy/site_layouts
and name it like your site name.
Example:
<%= render_site_layout %>
renders app/views/alchemy/site_layouts/_default_site.html.erb
for the site named “Default Site”.
65 66 67 68 69 |
# File 'app/helpers/alchemy/pages_helper.rb', line 65 def render_site_layout(&) render(current_alchemy_site, &) rescue ActionView::MissingTemplate => error error_or_warning(error, "Site layout for #{current_alchemy_site.try(:name)} not found. Please run `rails g alchemy:site_layouts`") end |