Konfigurácia meta tagov cez konfig…

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Peppy
Člen | 137
+
0
-

Tento trik slúži na to, aby ste menili meta tagy pomocou konfigu, žiadne ručné zadávanie do @layout.phtml

Do config.ini (časti common) napíšeme (môžte ich napísať viacej, pomenovať akokoľvek, pretože v presenteri je cyklus foreach :P):

; website defaults
website.url = localhost.sk
website.title = Môj prvý dynamický web pomocou Nette frameworku
website.author = Peppy
website.description = Môj dynamický web pomocou Nette frameworku
website.keywords = Nette, framework, Nette framework, Peppy, web, dynamický, dynamický web
; Delimiter in Url: $title $delimiter $url
website.delimiter = -

Do homepage presenteru:

public function renderDefault()
	{
		$web = Environment::getConfig('website')->toArray();

                foreach($web as $key => $value)
                {
                    $this->template->$key = $value;
                }
	}

a do @layout.phtml, niečo takéto:

	<meta name="description" content="Nette Framework web application skeleton">
	<meta name="robots" content="{$robots}" n:ifset="$robots">
<meta name="author" content="{$author}">
<meta name="keywords" content="{$keywords}">

	<title>{$title} {$delimiter} {$url}</title>

Už len to spustiť!…Dúfam, že vám to pomôže…

Editoval Peppy (17. 7. 2010 21:56)

Blizzy
Člen | 149
+
0
-

Podle Googlu by každá stránka měla mít jiný description, stejně tak jako jiný title. Description je to, co se ukáže ve výsledcích Googlu pod každým odkazem, všechny stránky by pak měli dole stejný popis. Lepší než mít na všech stránkách stejný popis je už decription nevyplňovat a nechat Google vybrat popisek sám.

Tohle se netýká toho triku, jenom jsem chtěl uvést věci na pravou míru, description by se imho prostě globálně nastavovat nemělo, pokud se nejedná o jednostránkový web.

EDIT: samozřejmě pokud máš takovýchto configů několik pro různé stránky, je to v pohodě :-)

Editoval Blizzy (17. 7. 2010 22:03)

Peppy
Člen | 137
+
0
-

A aký je problém napr. v LoginPresenteru prepísať $title, $description, $keywords ? :)…

EDIT: Ten konfig som bral ako ukážku :P
EDIT2: Samozrejme, môžeš si to rozvinúť, resp. umiestniť to do šablóny presenteru ap.

Editoval Peppy (17. 7. 2010 22:16)

Blizzy
Člen | 149
+
0
-

Peppy napsal(a):

*EDIT: Ten konfig som bral ako ukážku :P

Já jsem myslel, že ten config je právě jádro toho triku :-).

Zajímavé řešení (proměnné robots) je v CD-collection v examples ve verzi 1.0:

V layoutu je:

{if isset($robots)}<meta name="robots" content="{$robots}" />{/if}

V konkrétní šabloně (login.phtml) potom:

{var robots => noindex}

Tohle by se dalo použít i na zmíněné description, u neměnných stránek napsat do každé šablony var description => popis, u proměnlivých například dosadit popisek načtený v prestenteru v modelu. V @layout.phtml by potom byla ta kontrola isset, kde by se v případě chybějící description raději nedal tag žádný.

Peppy
Člen | 137
+
0
-

Toto vyzerá ešte lepšie :) :

{if isset($robots) && !empty($robots)}<meta name="robots" content="{$robots}" />{/if}

…tak ja to ešte nejak dorobím :)

Editoval Peppy (17. 7. 2010 22:32)

Michalek
Člen | 209
+
0
-

A co teprve https://componette.org/search/?… :-)

$this['header']->setRobots('index,follow');

Editoval Michalek (17. 7. 2010 22:38)

Cifro
Člen | 245
+
0
-

A ešte inak, pomocou n: atribútu:

	<meta name="robots" n:tag-ifset="$robots" content="{$robots}" />