我正在尝试修改默认的元描述和关键字标签。我坚持这个问题,我不太清楚狂欢。
我相信他们被安排在这里:spree / core / app / helpers / spree / base_helper.rb
答案 0 :(得分:2)
您需要在第二行使用:
module Spree
module BaseHelper.class_eval
...
end
end
这应该有效。
答案 1 :(得分:1)
此代码已经过测试并且正在运行。感谢@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