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

xml
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.

VlastnostPopisHodnotaPovinná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.

java
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.

json
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.

java
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.