EdeeShop · Implementace

Propojení obsahových bloků a entit e-shopu

Upraveno

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

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

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

✔

-

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.

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

json
[  {    "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.

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