WebToDate/Extenze/Extenze pro vkládání obsahu polí jiných objektů

Z WebToDate
Verze z 22. 11. 2018, 15:00, kterou vytvořil Jardac (diskuse | příspěvky) (→‎Hledání objektů podle zkratky)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Skočit na navigaciSkočit na vyhledávání

Funkcionalita

Extenze je určena pro zprávy, obecně řečeno nahrazuje ve stránce značku obsahující ID objektu (zprávy či fragmentu) zvoleným polem z této zprávy či fragmentu. Ve stránce s celým textem dané zprávy tak lze jednoduše zobrazit obsah nějakého pole struktury jiné zprávy, kde tato vkládaná část jiné zprávy se identifikuje podle ID.

Instalace

Do souboru config/_modules_inc.php vložte následující kód:

// - extenze pro vkladani obsahu poli jinych objektu
$arrModules[] = 'nobjects/_insertfield_inc.php';

Ujistěte se, že v instalaci WebToDate existuje soubor /scripts/modules/nobjects/_insertfield_inc.php.

Reference

Extenze vyhledává v kódu zprávy či stránky značky typu

<!--WTD_INSERTFIELD(ID_objektu, název pole)-->

Prvním parametrem je ID zprávy či fragmentu, druhý parametr je název pole tak jak se používá v klíčových slovech pro styly pro zprávy. Například

<!--WTD_INSERTFIELD(1234, TITLE)-->

vloží nadpis zprávy či fragmentu s ID=1234.

Pro toto vkládání dále platí:

  • Název pole v druhém parametru se nejprve vyhledává ve standardní množině polí databáze zpráv, pak v rozšiřující struktuře databáze zpráv, lze takto tedy vkládat i pole rozšiřující struktury.
  • Pokud má pole příznak automatického řádkování (tělo zprávy nebo pole rozšiřující struktury, které tento příznak používají) a automatické řádkování je zapnuto, je obsah pole před vložením zformátován dle hodnoty tohoto příznaku.

Pro ladící účely je chování extenze vzhledem k nahrazování značky kódem následující:

  1. Pokud je ID zprávy či fragmentu v pořádku, objekt je ve stavu Publikováno nebo Archivováno a pole v druhém parametru je dle názvu identifikováno, je značka nahrazena příslušným kódem.
  2. Pokud je první parametr nula nebo prázdný řetězec a pole v druhém parametru je dle názvu identifikováno, je značka nahrazena prázdným řetězcem.
  3. Ve všech ostatních případech (ID neexistující nebo nepublikované zprávy či fragmentu, název neexistujícího pole v druhém parametru apod.) je značka v HTML kódu stránky ponechána – administrátor tak může prověřit, proč se očekávaný obsah nezobrazuje.

Kromě ID lze použít i zkratku, použitá značka má pak tvar

<!--WTD_INSERTFIELD(ID_objektu, název pole, zkratka_objektu)-->

tedy např.

<!--WTD_INSERTFIELD(0, TITLE, 'mojezprava')-->

kde mojezprava je řetězec zadaný do pole Zkratka zprávy.

Objekt se v takovém případě vyhledává tak, že nejprve se hledá podle zkratky, pokud není objekt nalezen, hledá se podle zadaného ID.

Příklad využití

Uvažujme např. požadavek zobrazování různých zpráv, např. informací o produktech, kde u každé zprávy se má vedle popisného textu zobrazit blok s vysvětlivkami či popisky použitých ikon. Přitom je požadavek zobrazovat zprávy s využitím jedné stejné předlohy a používá se několik typů bloků s vysvětlivkami. Pro každou zprávu má smysl zobrazit právě jeden z bloků vysvětlivek, typ tohoto bloku má vybrat uživatel vkládající zprávu.

Založíme nové pole rozšiřující struktury databáze zpráv, např. VYSVETLIVKY. Vytvoříme několik WebToDate fragmentů, každý fragment obsahuje v těle kompletní HTML kód jednoho bloku s vysvětlivkami. Pro pole VYSVETLIVKY nadefinujeme číselník, kde systémový název odpovídá názvu typu bloku s vysvětlivkami, hodnota odpovídá ID příslušného fragmentu.

Uživatel vkládající zprávu pak ve formuláři pro zprávu pouze pomocí rozevírací nabídky zvolí příslušný typ vysvětlivek. Tím v podstatě volí, který fragment se do stránky vloží.

V předloze pro zprávu použijeme kód

<!--WTD_INSERTFIELD(<!--WTD_D(VYSVETLIVKY)-->,BODY)-->

Tento kód vloží do stránky se zprávou tělo fragmentu vybraného redaktorem výše uvedeným postupem.