Class: Spree::Taxon
- Defined in:
- app/models/spree/taxon.rb
Instance Method Summary collapse
-
#active_products ⇒ ActiveRecord::Relation<Spree::Product>
The active products the belong to this taxon.
-
#applicable_filters ⇒ Array
Filters that should be used for a taxon.
- #child_index=(idx) ⇒ Object
- #permalink_part ⇒ Object
- #permalink_part=(value) ⇒ Object
-
#pretty_name ⇒ String
This taxon’s ancestors names followed by its own name, separated by arrows.
-
#seo_title ⇒ String
Meta_title if set otherwise a string containing the root name and taxon name.
-
#set_permalink ⇒ Object
Sets this taxons permalink to a valid url encoded string based on its name and its parents permalink (if present.).
-
#to_param ⇒ String
This taxon’s permalink.
-
#update_child_permalinks ⇒ Object
Update the permalinks for all children.
-
#update_permalinks ⇒ Object
Update the permalink for this taxon and all children (if necessary).
Methods inherited from Base
display_includes, #initialize_preference_defaults, page, preference
Methods included from Preferences::Preferable
#default_preferences, #defined_preferences, #get_preference, #has_preference!, #has_preference?, #preference_default, #preference_type, #set_preference
Instance Method Details
#active_products ⇒ ActiveRecord::Relation<Spree::Product>
Returns the active products the belong to this taxon.
86 87 88 |
# File 'app/models/spree/taxon.rb', line 86 def active_products products.not_deleted.available end |
#applicable_filters ⇒ Array
This method is meant to be overridden on a store by store basis.
Returns filters that should be used for a taxon.
38 39 40 41 42 43 44 45 46 |
# File 'app/models/spree/taxon.rb', line 38 def applicable_filters fs = [] # fs << ProductFilters.taxons_below(self) ## unless it's a root taxon? left open for demo purposes fs << Spree::Core::ProductFilters.price_filter if Spree::Core::ProductFilters.respond_to?(:price_filter) fs << Spree::Core::ProductFilters.brand_filter if Spree::Core::ProductFilters.respond_to?(:brand_filter) fs end |
#child_index=(idx) ⇒ Object
99 100 101 102 103 104 105 106 107 |
# File 'app/models/spree/taxon.rb', line 99 def child_index=(idx) # awesome_nested_set sorts by :lft and :rgt. This call re-inserts the # child node so that its resulting position matches the observable # 0-indexed position. # # NOTE: no :position column needed - awesom_nested_set doesn't handle the # reordering if you bring your own :order_column. move_to_child_with_index(parent, idx.to_i) unless new_record? end |
#permalink_part ⇒ Object
109 110 111 |
# File 'app/models/spree/taxon.rb', line 109 def permalink_part permalink.split('/').last end |
#permalink_part=(value) ⇒ Object
113 114 115 116 117 118 119 |
# File 'app/models/spree/taxon.rb', line 113 def permalink_part=(value) if parent.present? self.permalink = "#{parent.permalink}/#{value}" else self.permalink = value end end |
#pretty_name ⇒ String
Returns this taxon’s ancestors names followed by its own name, separated by arrows.
92 93 94 95 96 |
# File 'app/models/spree/taxon.rb', line 92 def pretty_name ancestor_chain = ancestors.map(&:name) ancestor_chain << name ancestor_chain.join(" -> ") end |
#seo_title ⇒ String
Returns meta_title if set otherwise a string containing the root name and taxon name.
50 51 52 53 54 55 56 |
# File 'app/models/spree/taxon.rb', line 50 def seo_title if .present? else root? ? name : "#{root.name} - #{name}" end end |
#set_permalink ⇒ Object
Sets this taxons permalink to a valid url encoded string based on its name and its parents permalink (if present.)
60 61 62 63 64 |
# File 'app/models/spree/taxon.rb', line 60 def set_permalink permalink_tail = permalink.split('/').last if permalink.present? permalink_tail ||= name.to_url self.permalink_part = permalink_tail end |
#to_param ⇒ String
Returns this taxon’s permalink.
80 81 82 |
# File 'app/models/spree/taxon.rb', line 80 def to_param permalink end |
#update_child_permalinks ⇒ Object
Update the permalinks for all children
75 76 77 |
# File 'app/models/spree/taxon.rb', line 75 def update_child_permalinks children.each(&:update_permalinks) end |
#update_permalinks ⇒ Object
Update the permalink for this taxon and all children (if necessary)
67 68 69 70 71 72 |
# File 'app/models/spree/taxon.rb', line 67 def update_permalinks set_permalink # This will trigger update_child_permalinks if permalink has changed save! end |