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.
Příklad konfigurace
<contentBlockConfig> <blocks> <block> <categorySystemId/> </block> </blocks></contentBlockConfig>
Popis
contentBlockConfig/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 |
|
|
Konfigurace obsahových bloků
Je třeba také definovat samotné obsahové bloky. Tyto bloky se definují v rámci prototypů, více informací naleznete zde.
Fulltext 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.
Vytvoření obsahového bloku
Java
Obsahové bloky je možné vytvořit a přidělit k eshopové entitě pomocí com.fg.edee.integration.service.ContentBlockService.
final ContentBlockOpenToModify block = contentBlockService.createBlock(ESHOP_ENTITY_BLOCK_PROTOTYPE, "blockSystemName", "cs");block.setPageState(PageState.PUBLISHED);contentBlockService.storeBlock(block);contentBlockService.attachBlock(block, general, MODULE_OBJECT_TYPE_PRODUCT, (long)product.getIdCatalogEntity());RestApi
Vytvoření obsahového bloku je možné pomocí restApi, více zde.
Přístup k publikovaných datům o vazbách na obsahové bloky
EvitaDb
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.
[ { "type": "eshopProduct", "id": 123456 }]Java
V java lze informace o obsahových blocích získat pomocí traitu com.fg.eshop.content.publishing.model.WithPublishedContentBlocks.
PublishedProduct product = getPublishedProduct(product);assertNotNull(((WithPublishedContentBlocks)product).getContentBlockObjects());assertEquals(product.getIdCatalogEntity(), ((WithPublishedContentBlocks)product).getContentBlockObjects()[0].getId());assertEquals(MODULE_OBJECT_TYPE_PRODUCT, ((WithPublishedContentBlocks)product).getContentBlockObjects()[0].getType());Načtení obsahových bloků
Java
K načtení obsahových bloků slouží com.fg.edee.integration.service.ContentBlockOnModuleObjectService.
RestApi
Načtení samotných obsahových bloků je možné pomocí restApi, více zde.
