This commit is contained in:
parent
a8bc400371
commit
ed61fb5ca5
12 changed files with 254 additions and 38 deletions
|
|
@ -676,8 +676,8 @@ export RenderedPage RenderShop(std::span<const Product> products, const Rates& r
|
|||
RenderedPage page;
|
||||
page.meta.title = "Shop — Catcrafts";
|
||||
page.meta.description =
|
||||
"Fairphone (Gen. 6) handsets reflashed to run postmarketOS, with the "
|
||||
"IMS/VoLTE stack Catcrafts maintains.";
|
||||
"Fairphone (Gen. 6) and (Gen. 6+) handsets reflashed to run postmarketOS, "
|
||||
"with the IMS/VoLTE stack Catcrafts maintains.";
|
||||
page.meta.canonical = "/shop";
|
||||
page.meta.geoPriceHint = true;
|
||||
// The category page as typed data: an ItemList naming each product page.
|
||||
|
|
@ -1325,16 +1325,23 @@ export RenderedPage RenderProduct(const Product& product,
|
|||
|
||||
// The spec and warranty sections exist only where the content does: a
|
||||
// donation has neither a spec sheet nor a warranty, and an empty table
|
||||
// under a Fairphone-specific lede would be nonsense on its page.
|
||||
// under a manufacturer-specific lede would be nonsense on its page.
|
||||
//
|
||||
// The lede names the BRAND, never a model. It used to say "Fairphone
|
||||
// (Gen. 6)" in the markup, which read true while the catalogue held one
|
||||
// phone and went silently false the moment it held two — a spec sheet
|
||||
// introduced as some other device's sheet is worse than no lede at all.
|
||||
// A spec sheet with no brand to name is a content bug, asserted against in
|
||||
// ShouldShipContent rather than papered over with a second sentence here.
|
||||
const SafeHtml specsSection = product.specs.empty() ? SafeHtml{} : Format(
|
||||
R"(<section class="section">)"
|
||||
R"(<h2 class="section__title">Specifications</h2>)"
|
||||
R"(<p class="section__lede">The hardware is a stock Fairphone )"
|
||||
R"((Gen. 6), unmodified. Fairphone's spec sheet is this product's spec sheet, )"
|
||||
R"(<p class="section__lede">The hardware is a stock {}, unmodified. )"
|
||||
R"({}'s spec sheet is this product's spec sheet, )"
|
||||
R"(and all of it works under postmarketOS.</p>)"
|
||||
R"(<table class="spec-table"><tbody>{}</tbody></table>)"
|
||||
R"(</section>)",
|
||||
Join(specRows));
|
||||
Escape(product.brand), Escape(product.brand), Join(specRows));
|
||||
const SafeHtml warrantySection = product.warranty.empty() ? SafeHtml{} : Format(
|
||||
R"(<section class="section">)"
|
||||
R"(<h2 class="section__title">Warranty</h2>)"
|
||||
|
|
|
|||
Loading…
Reference in a new issue