EN | CS | Přihlásit | Registrovat

HeaderControl

Komponenta pro zjednodušení práce s HTML hlavičkou – už nikdy nezapomenete na žádný důležitý tag!

Download header-control.zip
Fórum http://forum.nette.org/…ml-hlavickou
Git repozitář http://github.com/…eadercontrol
Autor Ondřej Mirtes
Licence MIT

Co umí?

  • nastavovat DOCTYPE (HTML 4.01, HTML 5 a XHTML 1.0) všech tří úrovní (Strict, Transitional, Frameset) a posílat i kontroverzní (jediný správný a také značně problémový) Content-Type pro XHTML – application/xhtml+xml.
  • nastavovat jazyk dokumentu
  • hrátky s <title> – v konstruktoru předáte výchozí (např. Zdroják.cz) a pak ho můžete přepisovat/přidávat kaskádovitě další (např. kategorii a jméno článku – title pak bude mít podobu Nadpis článku - Kategorie - Název webu (pořadí a oddělovač jsou volitelné)
  • favikonu (kontroluje, zda soubor existuje)
  • RSS kanály
  • libovolné meta tagy (obsahuje zvláštní metody pro ty nejčastější – author, description, keywords, robots)
    • keywords lze přidávat kaskádovitě podobně jako title
  • elegantní volání setterů pomocí fluent rozhraní
  • propojení s WebLoaderem Honzy Marka – využívá ho pro přidávání CSS a JS skriptů, včetně widgetového volání

Instalace

Rozbalte složku HeaderControl do složky app/components (či do umístění, kde máte ostatní komponenty).

Komponenta pro zpracování CSS a Javascript souborů využívá WebLoader. Nezapomeňte ho do své aplikace také přidat!

Použití

Komponenta se vytváří pomocí továrničky v Presenteru, kde se jí také předají veškerá nastavení:

protected function createComponentHeader()
{
$header = new HeaderControl;

$header->setDocType(HeaderControl::HTML_5);
$header->setLanguage('en');
$header->setTitle('Example title');

// facebook xml namespace
$header->htmlTag->attrs['xmlns:fb'] = 'http://www.facebook.com/2008/fbml';

$header->setTitleSeparator(' | ')
->setTitlesReverseOrder(true)
->addKeywords('one')
->addKeywords(array('two', 'three'))
->setDescription('Our example site')
->setRobots('index,follow') //of course ;o)
->addRssChannel('News', 'Rss:')
->addRssChannel('Comments', 'Rss:comments');

//CssLoader
$css = $header['css'];
$css->sourcePath = APP_DIR . '/FrontModule/templates/css';
$css->tempUri = Environment::getVariable('baseUri') . 'temp';
$css->tempPath = WWW_DIR . '/temp';

//JavascriptLoader
$js = $header['js'];
$js->tempUri = Environment::getVariable('baseUri') . 'temp';
$js->tempPath = WWW_DIR . '/temp';
$js->sourcePath = APP_DIR . '/FrontModule/templates/js';

return $header;
}

Hlavička se vykreslí pomocí widgetového volání, typicky v šabloně @layout.phtml:

{widget header}

Hlavičku můžeme vykreslit i složitěji a definovat u toho RSS kanály, CSS a Javascript soubory (přepíše nastavení z továrničky):

{widget header:begin}
{widget header:css '960.gs/reset.css', '960.gs/text.css', '960.gs/960.css', 'default.css', 'screen.css'}
{widget header:js 'jquery-1.4.js', 'jquery.nette.js', 'web.js'}
{widget header:rss 'Sample RSS Channel' => 'Rss:sample'}
{widget header:end}

Výsledný HTML kód

<!DOCTYPE html>
<html>
<head>
<meta content="cs" http-equiv="Content-Language">
<meta content="text/html" http-equiv="Content-Type">
<title>Example title</title>
<link rel="shortcut icon" href="/favicon.ico">
<meta name="keywords" content="key,words,nette">
<meta name="description" content="Site description">
<meta name="robots" content="index,follow">
<link rel="stylesheet" type="text/css" href="/temp/cssloader-649fdaaa20fcd9f828ad9c25ac8d1596.css">
<script type="text/javascript" src="/temp/jsloader-367b76d07fd0a00b4316125595e1635d.js"></script>
<link rel="alternate" type="application/rss+xml" title="Sample RSS Channel" href="/rss/sample">
</head>

Poznámka

Pomocí metody $header->getComponent('css') či přes $header['css'] můžete manipulovat s připojeným CssLoaderem a JsLoaderem (css zaměňte za js) a měnit jim veškerá nastavení (viz WebLoader API)

Připojené soubory


Login to submit a comment