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 podobuNadpis č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
- header-control.zip 4 kB

Felix | 27. 3. 2011, 20:04 | comment
Uz je to stara verze. Nova je na gitu. Mozna by to chtelo update ;-)