Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Přepsání snippetu pro <title> v HistoryAgent #14

Open
luksladky opened this issue Jun 18, 2017 · 5 comments
Open

Přepsání snippetu pro <title> v HistoryAgent #14

luksladky opened this issue Jun 18, 2017 · 5 comments
Assignees
Labels

Comments

@luksladky
Copy link

Když se pokusím měnit <title> pomocí snippetu, něco jako
<title n:snippet="title">{ifset title}{include title|striptags} | {/ifset} Website</title>
tak se title nejprve správně nahradí, ale poté se přepíše defaultním title (tím, které tam bylo při načtení stránky).

@jahudka jahudka self-assigned this Sep 6, 2017
@jahudka jahudka added the wontfix label Sep 6, 2017
@jahudka
Copy link
Member

jahudka commented Sep 6, 2017

Zdravím, pardon, byl jsem měsíc úplně pryč a předtím mi tahle issue nějak utekla - title se Nittru posílá v payloadu:

$presenter->payload->title = 'Home | Website';

Nemůžu si teď úplně vzpomenout, proč jsem tenkrát tuhle cestu volil - nějakej důvod to mělo, ale možná byl jen estetickej (něco jako "blok v šabloně je overkill na title kterej má bejt jen string a stejně nesmí obsahovat html") - popřemýšlím nad tím a případně možnost nastavovat title snippetem vrátím.

@jasir
Copy link

jasir commented Oct 2, 2017

Také jsem na to narazil, nechci specifikovat title v presenteru, ale v šablonách.
Dal jsem si do snippetu tento workaround:

{capture $captured_title}
   {block #title}Gekon{/block}
{/capture}
{$captured_title |noescape}
{php $control->payload->title = (string) $captured_title}

@misaon
Copy link

misaon commented Nov 10, 2017

Měl jsem ten samý problém, řešil jsem ho podobně jako @jasir . Kód se dá vložit do snippetu kdekoliv v layoutu, komponenta či template presentru potom zůstane čistý s definovaným #title blokem.

{capture $capturedTitle}
    {include title|striptags} | <nazev-projektu>
{/capture}
{php $control->payload->title = (string) $capturedTitle}

v komponentě, šabloně presenteru potom jen:

{block title}
    <h1>Seznam kategorií</h1>
{/block}

Jen je škoda, že Nittro makra neobsahují nějakou pěknou featuru, která by toto zjednodušila.

@jahudka
Copy link
Member

jahudka commented Nov 10, 2017

Mně se jen hrozně moc nelíbí to spoléhání na striptags.. tahle praxe sypat do title nějakej blok kterej může obsahovat HTML mě myslím původně vedla k tomu systému s parametrem v payloadu.. btw tak, jak to máš napsaný, bude hodnota title obsahovat i whitespace na začátku a konci - a některý browsery ti ten whitespace normálně vyrenderujou.. něco na to časem vymyslím, napadlo mě třeba, že by šlo konfigurovat nějakou "strategii", třeba v tomhle stylu:

// tohle by odpovídalo stávajícímu systému s parametrem v payloadu
var options = {
    titleStrategy: 'payload',
    param: 'title'
};

// a tohle naopak braní title z nějakýho snippetu
var options2 = {
    titleStrategy: 'snippet',
    name: 'snippet--title',
    selector: null // nebo třeba 'h2'
};

Snippetová strategie by si obsah brala pomocí textContent (tj. bez HTML) a obě by dělaly trim. Pak by ještě šlo mít třeba nějakej parametr format: '%s :: MySite' a samozřejmě nějaký default: '...'.. Co vy na to?

@chemix
Copy link
Member

chemix commented Dec 1, 2017

👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants