我試圖修改默認元描述和關鍵字標籤。我在這個問題上陷入困境,我不知道這一切都很好。Spree中的自定義元描述和關鍵字標籤
我相信他們正在這裏設置:spree/core/app/helpers/spree/base_helper.rb
我試圖修改默認元描述和關鍵字標籤。我在這個問題上陷入困境,我不知道這一切都很好。Spree中的自定義元描述和關鍵字標籤
我相信他們正在這裏設置:spree/core/app/helpers/spree/base_helper.rb
此代碼已經過測試並正在運行。謝謝@aledustet幫助我找到解決方案:)
創建/app/helpers/spree/base_helper_decorator.rb
並將下面的代碼放在那裏。不要使用/app/helpers/spree/base_helper.rb
,因爲您必須複製/粘貼base_helper.rb中的每個方法才能正常運行。
module Spree
module BaseHelper
def meta_data
meta = ({
keywords: "test keyword",
description: "test description",
})
end
end
end
你也可以做
Spree::BaseHelper.module_eval do
....
end
我讀,別人報這個第二個解決方案時,第一沒有工作,所以我兩個都貼出。兩者都適合我。
Per Ryan Bigg:沒有特別的理由使用class_eval和module_eval,這只是Spree項目很長一段時間的習慣。 https://stackoverflow.com/a/12075315/2229277
在這一點上,你已經掌握了你的元數據,但是如何在控制器的基礎上進行設置呢?你可以通過創建一個私有方法並在控制器上調用helper_method函數來實現。下面是的工作和測試一個完整的例子:
class BrandsController < Spree::StoreController
helper_method :my_meta_data
#controller actions here.
private
def my_meta_data
meta = ({
keywords: "keywords here",
description: "description here",
})
end
end
我的基本助手看起來是這樣的,這樣它可以在情況下,my_meta_data方法沒有定義一些默認的元數據。
module Spree
module BaseHelper
def meta_data
if (defined? my_meta_data)
meta = my_meta_data
else
meta = ({
keywords: "default keywords here",
description: "default description here",
})
end
end
end
end
你需要在你的第二個行使用:
module Spree
module BaseHelper.class_eval
...
end
end
這應該工作。