DomůČlánkyTipy a trikyDynamický JavaScript a CSS

Obvykle je kód JavaScriptu s stylování CSS pevně dáno js souborem, nebo souborem se styly CSS, které se zapisují do příslušných atributů tagů script, nebo link. V tomto článku se podíváme na trošku neobvyklou možnost, jak je v Joomle vygenerovat dynamicky pomocí PHP.

Začneme v přípravě pohledu - v souboru view.html.php, kam přidáme následující kód:

JFactory::getDocument()->addScript('index.php?option=com_my_component&controller=mycontroller&task=get_translations');

Pokud chceme generovat dynamicky css pouze místo metody addScript() použujeme addStyleSheet(). Z předchozího kódu poznáváme, že do atributů tagů link, nebo script zadáváme volání PHP skriptu. Pro méně zkušenější to může vypadat trošku divně, ale vysvětlení je jednoduché. WWW prohlížeči stačí obdržet kód daného MIME typu (pro JavaScript text/javascript a pro css text/css) a je mu jedno jestli se jedná o soubor někde na disku, nebo o dynamicky generovaná data. Správnou hlavičku nastavíme v ovladači(controlleru) mycontroller v metodě get_translations:

  function get_translations() {
    header("Content-type: text/javascript");
    echo $this->_model->getTranslations();
    JFactory::getApplication()->close();
  }

 

Jak jste již z názvu metody zajisté poznali v tomto příkladu si ukážeme jak navázat překladový systém Joomly do JavaScriptových kódů, aniž bychom si museli špinit stránku přímo vloženým JavaScriptovým kódem. V ovladači hlavně nastavíme odpovídající hlavičku a nakonec nesmíme zapomenout na volání metody close() Joomly, aby se nám do vygenerovaného textu nedostal kód Joomly, ale pouze to co vygenerujeme v metodě getTranslations() modelu.

V modelu si v odpovídající funkci pouze vygenerujeme JavaScriptový kód:

  function getTranslations() {
    $text="";
    $text.="var must_be_filled=\"".JText::_('This item must be filled in')."\";\n";
    return $text;
  }

V kódu javascriptu lze pak použít zápis alert(must_be_filled) a máme přeložený řetězec. V případě, že chceme takto dynamicky generovat CSS styly, stačí pouze změnit v hlavičce Content-type na text/css. Nemusíme se omezovat pouze na JavaScript, nebo CSS, stejným způsobem lze v Joomle generovat i obrázky. Důležité je pouze nezapomenout na medotu close() Joomly.

Komentářů (0)
Přidat komentář
YOUR_CONTACT_DETAILS:
Komentářů:
[b] [i] [u] [s] [url] [quote] [code] [img]   
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
SECURITY
Prosím=vložte text z obrázku (anti-SPAM ochrana

Zprávičky

Napsat novou zprávičku  |  Vše

sh404SEF 2.0.3.545

Nová verze

Napsal Peter Smrčák | 13.08 22:12

Kunena 1.6 RC1

Nová verze

Napsal Peter Smrčák |  9.08 15:28

Vyšla nová Kunena RC1 pre pripravovanú Joomlu 1.6.

EasyBook reloaded!

Nová verze

Napsal Peter Smrčák |  4.08 06:41

Vyšla stabilná verzia obľúbenej návštevnej knihy EasyBook reloaded vo verzii 2.0.4.

VirtueMart 1.1.5

Nová verze

Napsal Peter Smrčák | 28.07 15:11

Práve vyšiel nový VirtueMart.

Táto verzia opravuje rôzne problémy.

changelog | download

Joomla 1.5.19

Bezpečnost

Napsal Filip Bartmann | 16.07 18:30

Dnešním dnem spatřila světlo světa další aktualizace stabilní řady Joomly 1.5, tentokrát s pořadovým číslem 19 a kódovým jménem Wojmamni ama batani. Jedná se o opravu několika menších bezpečnostních chyb v administraci a také novou verzi js frameworku Mootools.

Více...

Jméno Joomla!® je použito pod limitovanou licenci od Open Source Matters ve Spojených státech a ostatních zemích. Joomladev nemá spojení s Open Source Matters, nebo projektem Joomla! a není součástí jejich podpory
Logo Joomla!® je použito pod limitovanou licenci od Open Source Matters ve Spojených státech a ostatních zemích. http://joomladev.eu nemá spojení s Open Source Matters, nebo projektem Joomla! a není součástí jejich podpory