我正在用Middleman创建一个静态网站,引用从电子表格解析的产品。
我的表具有这些栏:
_________________________________
| Product Name | Price | Category |
| Pet Food | $12 | Pets |
| iPhone | $500 | Phone |
| Pet toy | $25 | Pets |
|______________|_______|__________|
我使用名为Pets
的模板创建了显示Phone
和product_category.html
类别中所有产品的页面。它为每一个独特的类别,例如网页。 pets.html
和phone.html
。
的问题是,给定I进行的方式,中间人建立一个类别页面在类别中的每个产品,然后跳过它,因为它是相同的:
remote: create build/pets.html
remote: identical build/pets.html
remote: create build/iphone.html
这是我的config.rb示例:
rows_by_categories = app.data.spreadsheet.sheet1.group_by { |row| row.category }
#Category Landings
app.data.spreadsheet.sheet1.each do |f|
proxy "/#{f.category.to_s.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')}.html", "/product_category.html", locals: {
f: {
categorytitle: f.category,
name: f.name,
all_in_category: rows_by_categories[f.category],
price: f.selling_price,
},
categories: rows_by_categories.keys,
}, ignore: true
end
我了解循环在电子表格的每一行上进行迭代,并为相应类别重新创建了一个页面。然而,试了几次我给了,例如。将app.data.spreadsheet.sheet1.each do |f|
修改为rows_by_categories.each do |f|
失败。有任何线索吗?
答案 0 :(得分:0)
如前所述,我没有middleman
的经验,但是无论如何我都会尝试并提供帮助。
看来,您的主要问题是要循环播放单个项目而不是分组。请尝试以下方法。
rows_by_categories = app.data.spreadsheet.sheet1.group_by { |row| row.category }
#Category Landings
rows_by_categories.each do |category, rows|
path_name = "/#{category.to_s.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')}.html"
row_data = rows.map do |row|
{
categorytitle: row.category,
name: row.name,
price: row.selling_price,
}
end
proxy path_name, "/product_category.html", locals: {
products: row_data,
categories: rows_by_categories.keys
}, ignore: true
end
在这里,我们遍历类别,products
现在将是该类别中所有产品的Array
,而不是单个产品。以我的有限知识,这将为每个类别创建一个页面,并为您提供一个集合products
,您可以循环浏览