headerbanner

Odstranění caption z Joomla 1.5 až Joomla 2.5

Joomla ani ve verzi 2.5 neumožňuje v administraci vypnout vkládání javascriptového kódu, který neumí nic jiného, než vložit titulek (caption) k obrázku. Pokud titulky nepoužíváte, můžete zjednodušit kód a tím i zrychlit Joomlu. Někdy se tím odstraní i problémy při instalaci pluginů (pro lightbox a pod.).

Zvládnou to i začátečníci, kterým se podařilo Joomlu naistalovat a mají alespoň povšechný přehled o HTML a PHP. (Podobný efekt má i použití pluginu pro odstranění Mootools, který je ověřený na této instalaci Joomly.)

1. Podívejte se na zdrojový kód svých stránek a pokud tam najdete řádek:

<script src="/media/system/js/caption.js" type="text/javascript"></script>

je to důvod k následujícímu:

2. Otevřete si administraci a proklikejte se na úpravu zdrojového kódu šablony, kterou používáte:

  1. Joomla remove caption
  2. Joomla remove caption
  3. Joomla remove caption
  4. Joomla remove caption

Nyní vidíte PHP kód šablony, který je potřeba doplnit. Najděte řádek s kódem:

<jdoc:include type="head" />
 

Před tento řádek vložte:

 
<?php
$headerstuff = $this->getHeadData();
foreach ($headerstuff as $key => $value){
  foreach ($value as $keyx => $valuex){
    //viz |A| dále
    if (($key == "scripts") and (strpos($keyx,"caption") !== false)) {
      unset ($headerstuff[$key][$keyx]);
    }
    //viz |B| dále
    if (($key == "script") and (strpos($keyx,"text/javascript") !== false)) {
      if (strpos($headerstuff[$key][$keyx],"caption") !== false) {
        $headerstuff[$key][$keyx] = preg_replace("~\s*window\.addEvent\s*\(\s*\'load\'\s*,\s*function\s*\(\s*\)\s*\{\s*new\s*JCaption[^;]*;[^;]*;\s*~m", '', $this->_script['text/javascript']);        
 
      }
    }
  }                                 
}
$this->setHeadData($headerstuff);
//viz |C| dále
if (empty($this->_script['text/javascript'])){
    unset($this->_script['text/javascript']);
}
?>

Kód šablony uložte. Když nyní obnovíte svoji stránku v prohlížeči a podíváte se na zdrojový kód, neměli byste tam už vidět následující kód, odstranění díky |A|:

<script src="/media/system/js/caption.js" type="text/javascript"></script>

A také zmizelo (díky |B| a |C|):

<script type="text/javascript">
do_nothing( function() {
 
});
</script>

Všechny ostatní javascripty vkládané jako soubor zůstaly, stejně tak zůstaly přímo vkládané zdrojové kódy v elementu script type="text/javascript" (celý element je díky |C|odstraněn jen v případě, že obsahuje pouze kód pro caption).