避免使用 Middleman 代理构建相同的页面
Avoid building identical pages with Middleman proxy
我正在使用 Middleman 创建静态网站,引用从电子表格解析的产品。
我的 table 有这些列:
_________________________________
| Product Name | Price | Category |
| Pet Food | | Pets |
| iPhone | 0 | Phone |
| Pet toy | | Pets |
|______________|_______|__________|
我使用名为 product_category.html
的模板创建了显示 Pets
和 Phone
类别中所有产品的页面。它为每个独特的类别创建一个页面,例如。 pets.html
和 phone.html
。
问题是按照我的处理方式,Middleman 为类别中的每个产品构建一个类别页面,然后跳过它,因为它是相同的:
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|
不成功。有什么线索吗?
如前所述,我没有使用 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
,您可以循环浏览
我正在使用 Middleman 创建静态网站,引用从电子表格解析的产品。
我的 table 有这些列:
_________________________________
| Product Name | Price | Category |
| Pet Food | | Pets |
| iPhone | 0 | Phone |
| Pet toy | | Pets |
|______________|_______|__________|
我使用名为 product_category.html
的模板创建了显示 Pets
和 Phone
类别中所有产品的页面。它为每个独特的类别创建一个页面,例如。 pets.html
和 phone.html
。
问题是按照我的处理方式,Middleman 为类别中的每个产品构建一个类别页面,然后跳过它,因为它是相同的:
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|
不成功。有什么线索吗?
如前所述,我没有使用 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
,您可以循环浏览