Implementación
Cómo se construye
productSchema arma el Product + Offer (honesto con/sin precio); directorySchema arma el CollectionPage + ItemList; y cada página declara su tipo (pageType) y sus datos (schemaData), que buildSchema convierte en JSON-LD.
productSchema recibe los datos del producto y devuelve el nodo Product con su Offer: si hay precio, lo incluye con priceValidUntil; si no, emite un UnitPriceSpecification «bajo cotización». directorySchema recibe la lista del catálogo y devuelve un CollectionPage con un ItemList numerado. Ambos enlazan al grafo base (Organization, LocalBusiness) por @id, así Google consolida la entidad.
La página no llama a esas funciones directamente: declara pageType="product" o "category" y pasa schemaData (el producto o la lista) a PageLayout. buildSchema hace el switch por tipo, añade el grafo base y el breadcrumb (una vez), y BaseLayout serializa todo. Abajo, las tres recetas: el Product, el ItemList y cómo una página los declara.