Přeskočit na obsah
Přihlásit

Boxy

Box je metoda v aplikačním stromu, která vrací vykreslený výstup. Databázové řádky ji přiřazují webu a sekci.

Statické a datové boxy

Statický box vykreslí pohled. Datový box nejprve načte data modelem a předá je pohledu. Oba rozšiřují Wbengine\Box\WbengineBoxAbstract a patří do App\Box\<Section>.

<?php
namespace App\Box\Central;

use Wbengine\Box\WbengineBoxAbstract;

class Welcome extends WbengineBoxAbstract
{
    public function Welcome(): string
    {
        return $this->getRenderer()->render(
            $this->getBoxTemplatePath(),
            ['name' => 'Svět']
        );
    }
}

Vytvořte src/View/Central/Welcome.tpl a v cms_boxes spojte modul welcome a metodu welcome se sekcí a webem. Hodnoty SQL předávejte jako vázané parametry. Opakovaně použitelnou databázovou logiku umístěte do modelu.

Striktní a dynamické stránky

Každá stránka je buď striktní, nebo dynamická (pole strict stránky).

  • Striktní stránka odpovídá jen na vlastní adresu. /docs/ je platná a /docs/cokoli/ je 404.
  • Dynamická stránka odpovídá na vlastní adresu i na vše za ní. Nalezená stránka je stále /addons/ a zbytek adresy, například v21-2 a server-1 v /addons/v21-2/server-1/, se předá boxu jako parametry. Box je čte přes $this->getUrlParams() a pracuje s nimi.

U dynamické stránky framework nemůže vědět, které parametry jsou platné, takže rozhoduje box. Box, který adresu nepřijímá, například třetí parametr, který v /addons/v21-2/server-1/xyz/ neexistuje, vyhodí \Wbengine\Exception\RuntimeException s kódem 404 a framework zobrazí stránku 404. Bez toho by každá adresa pod stránkou zobrazila stránku. Dynamická stránka je v sitemapě uvedena jen vlastní adresou (viz Vyhledávače).

Sekce, pořadí a zařízení

Box patří do sekce layoutu a ke stránkám, které ho zobrazují (pole sites boxu), a boxy sekce se zobrazují podle svého pořadí (order). Box se ze stránky skryje tím, že se stránka odebere z jeho seznamu; box sám zůstává.

Box lze omezit na zařízení pomocí device_min a device_strict. Třídy zařízení jsou 1 mobil, 2 tablet a 3 stolní počítač. device_min 0 znamená jakékoli zařízení. Jinak musí být zařízení alespoň device_min a s device_strict přesně device_min. Uložená výchozí hodnota (device_min 1, ne striktní) zobrazí box na každém zařízení. Cache stránek drží jednu kopii stránky pro každou třídu zařízení, takže omezení podle zařízení nikdy neukáže návštěvníkovi kopii vytvořenou pro jinou třídu (viz Cache).

Správa boxů bez kódu

Boxy registrovaného typu lze přidávat a měnit přes API v2 a asistentem MCP serveru: vypsat typy boxů a boxy, přidat box do sekce, změnit jeho pořadí a omezení zařízení, sundat ho ze stránky a vrátit. Typ registruje aplikace v Application::registerBoxTypes() s jeho modulem, metodou a sekcemi, kam smí. Typ, který zobrazuje článek své stránky, je označen, takže klient ví, že stránka s takovým boxem není prázdná. Viz API.