Propojení obsahových bloků a entit e-shopu
Propojení obsahových bloků a entit e-shopu
Ke základním entitám e-shopu (produkty, kategorie, skupiny a značky) je možné přiřadit obsahové bloky. Tato možnost se povoluje konfiguračně v rámci nastavení dané entity pomocí elementu contentBlockConfig.
Zkopírovat odkaz na sekciPříklad konfigurace
1 <contentBlockConfig>2 <blocks>3 <block>4 <categorySystemId/>5 </block>6 </blocks>7</contentBlockConfig>
Zkopírovat odkaz na sekciPopis
Zkopírovat odkaz na sekcicontentBlockConfig/blocks/block
Seznam obsahových bloků.
Aby byly obsahové bloky pro tento typ entit povoleny, musí být definován alespoň jeden obsahový blok.
Pokud již existuje schéma v evitaDB, zapnutí této feature vyžaduje FULL reindexaci evitaDB.
| Vlastnost | Popis | Hodnota | Povinná | Výchozí hodnota |
|---|---|---|---|---|
| categorySystemId | Identifikátor kategorie určující konkrétní obsahový blok. V případě, že kategorie neexistuje, bude automaticky vytvořena. Upozornění: Jedná se o kategorie obsahových bloků, nikoliv o kategorie produktů. Více zde. | String | ✔ | - |
Zkopírovat odkaz na sekciKonfigurace obsahových bloků
Je třeba také definovat samotné obsahové bloky. Tyto bloky se definují v rámci prototypů, více informací naleznete zde.
Zkopírovat odkaz na sekciFulltext obsahových bloků
Definované obsahové bloky je možné fulltext-indexovat v rámci dané entity, což umožňuje vyhledávat entity podle obsahu těchto bloků.
Zda se obsahové bloky budou indexovat, je řízeno konfigurací v rámci definice daných obsahových bloků, viz fulltextindexableblock.
V rámci e-shopu není nutné nic dalšího konfigurovat, tedy kromě samotného povolení obsahových bloků ('contentBlockConfig') a povolení fulltextu ('fulltextConfig') pro danou entitu.
Zkopírovat odkaz na sekciVytvoření obsahového bloku
Zkopírovat odkaz na sekciJava
Obsahové bloky je možné vytvořit a přidělit k eshopové entitě pomocí com.fg.edee.integration.service.ContentBlockService.
1 final ContentBlockOpenToModify block = contentBlockService.createBlock(ESHOP_ENTITY_BLOCK_PROTOTYPE, "blockSystemName", "cs");2block.setPageState(PageState.PUBLISHED);3contentBlockService.storeBlock(block);4contentBlockService.attachBlock(block, general, MODULE_OBJECT_TYPE_PRODUCT, (long)product.getIdCatalogEntity());
Zkopírovat odkaz na sekciRestApi
Vytvoření obsahového bloku je možné pomocí restApi, více zde.
Zkopírovat odkaz na sekciPřístup k publikovaných datům o vazbách na obsahové bloky
Zkopírovat odkaz na sekciEvitaDb
Data se v EvitaDb nachází v Associated data pod klíčem contentBlocks.
V těchto datech se nachází seznam identifikátorů vazeb na obsahové bloky. Identifikátor se skládá z typu entity a id entity. Standardně je v datech uložena pouze jedna vazba na stejnou entitu, ke které vazba směřuje. Nicméně data mohou také obsahovat vazby na jiné entity, např. v případě aliasů nebo variant.
Pokud se data u entity nenachází, znamená to, že k dané entitě nejsou přiřazeny žádné obsahové bloky nebo ještě nebyly publikovány.
1 [2 {3 "type": "eshopProduct",4 "id": 1234565 }6]
Zkopírovat odkaz na sekciJava
V java lze informace o obsahových blocích získat pomocí traitu com.fg.eshop.content.publishing.model.WithPublishedContentBlocks.
1 PublishedProduct product = getPublishedProduct(product);2assertNotNull(((WithPublishedContentBlocks)product).getContentBlockObjects());3assertEquals(product.getIdCatalogEntity(), ((WithPublishedContentBlocks)product).getContentBlockObjects()[0].getId());4assertEquals(MODULE_OBJECT_TYPE_PRODUCT, ((WithPublishedContentBlocks)product).getContentBlockObjects()[0].getType());
Zkopírovat odkaz na sekciNačtení obsahových bloků
Zkopírovat odkaz na sekciJava
K načtení obsahových bloků slouží com.fg.edee.integration.service.ContentBlockOnModuleObjectService.
Zkopírovat odkaz na sekciRestApi
Načtení samotných obsahových bloků je možné pomocí restApi, více zde.