Page tree
Skip to end of metadata
Go to start of metadata

Jak pro určitou stránku nastavit specifický title?

Title stránky - obecné chování

Standardní title stránky se skládá ze dvou částí (před pipe a za pipe). Ty může sitebuilder ovlivňovat přes Vivo. Title je reprezentovaný v hlavičce stránky párovým tagem title, který má následující strukturu:

 

<title>Title | Suffix</title>

První část title se mění kontextově podle dokumentu, který se právě načítá. Jde o vlastnost dokumentu Název (Title). Druhá část title za pipe/rourou je globální a lze ji určit vlastností site - Název (Title), viz screenshoty níže.

Toto nám v naprosté většině případů vyhovuje, ale pokud zadavatel požaduje jiné chování title stránky, můžeme pro určitý projekt zajistit specifické chování.

Specifické zadání pro určitý projekt

Dostali jsme zadání, podle kterého máme vytvořit výjimku. Například title pro homepage webu by měl být specifický. Budeme muset zajistit následující záležitosti.

Nastavení suffixu

Suffix si nadefinujeme v configu/initu site:

use Vivo\Context;
define('TITLE_SUFFIX', ' | '.Context::$instance->site->title);

Specifický title

Title se generuje v třídě Layout

Uvažovanou logiku řeší třída Layout. Když chceme specifické chování titlu v našem projektu, napíšeme si na to třídu, která bude rozšiřovat standardní třídu Layout z jádra Viva. Moje třída řeší chování na homepage (v umístění /cs/), kde má být pro title použitý název dokumentu bez suffixu. Na ostatních stránkách webu chceme zobrazovat normální title, tak jak jsme zvyklí.

<?php
namespace Client\Project\CMS\UI\Content;
use Vivo\Context;
use Vivo\CMS;
use Vivo\UI;
class Layout extends CMS\UI\Content\Layout {
      function init() {
            parent::init();
 
            if(Context::$instance->path_info == '/' || Context::$instance->path_info == '/cs/') {
                  Context::$instance->root->main->title = (Context::$instance->document->title);
            }
            else {
                  Context::$instance->root->main->title = Context::$instance->document->title . TITLE_SUFFIX;
            }
      }
}

Sitebuilding a zobrazování na webu

V Components si vytvořím dokument s obsahem UI komponenta a namířím ho na svoji třídu viz screenshot napravo.

Na závěr si komponentu připojím do layoutu Page jako panel.

V praxi můžete vidět popsaný příklad na webu http://www.energieodpre.cz/cs/

Související články

 

 

Related issues