Jak přepsat výstup

Napsáno 29.09.2011 pro Joomla! a označeno jako HTML, Joomla

čili how to override the output

HTML

Už jste se setkali s termínem override the output, čili přepsat výstup? Nevíte, oč jde? Asi takhle, máte třeba rozšíření - komponentu, modul, u kterého potřebujete upravit výstupní kód, zobrazený na stránce a máte obavu, že pokud ho upravíte přímo v komponentě, zapomenete, co jste upravovali a při nejbližší aktualizaci dotčeného rozšíření o změny přijdete.

Já jsem si takto například potřeboval upravit výstupy z komponenty RSMembershi!, kde jsem si potřeboval doplnit HTML formátování a CSS třídy tak, aby zobrazení ladilo s šablonou.

A právě, abych nemusel sahat přímo do kódu rozšíření, využil jsem možnost zmíněného přepsání výstupu.

Jdeme na to

V první řadě si otevřete složku components ve vaší Joomla! instalaci a najdete si složku přepisovaného rozšíření, u mne to bude složka com_rsmembership a v té pak složku views, ve které jsou uložena jednotlivá zobrazení. Otevřte si složku toho přepisovaného, u mne tedy složku categories, v ní najdete složku tmpl a v té soubor default.php.

Pak ve vaší šabloně vytvoříte složku (pokud ještě vytvořena není) s názvem html, v té složku s názvem rozšíření, pro které chcete výstup přepsat a v ní další složku, s názvem zobrazení, které přepisujete. Do této složky nakopírujte ze složky rozšíření soubor default.php. Obecný popis cesty vypadá takto:

templates/NAZEV_SABLONY/html/NAZEV_ROZSIRENI/NAZEV_ZOBRAZENI/NAZEV_SOUBORU.php

V mém vzorovém případě pak bude cesta do složky vypadat takto:

templates/yoo_shelf/html/com_rsmembership/categories/default.php

U modulu je to trochu jinak, zde je obecná cesta:

templates/NAZEV_SABLONY/html/NAZEV_MODULU/NAZEV_SOUBORU.php

Ve vzorovém případě může cesta do složky vypadat takto:

templates/yoo_shelf/html/mod_login/default.php

Tím jsou přípravné práce dokončeny a můžete se pustit do úprav souboru default.php, tvořícího výstup příslušného zobrazení. Komponenta, pro kterou tak činíte, bude pro tvorbu výstupního kódu nadále používat soubor z vámi vytvořené složky v šabloně namísto souboru, uloženého ve složce komponenty.

Pokud pak budete komponentu či modul aktualizovat, vámi vytvořené soubory pro přepis výstupu zůstanou nedotčeny.Po případné aktualizaci je ovšem vhodné zkontrolovat, zda se aktualizace netýkala i souborů výstupu - v takovém případě si budete muset s upravenými soubory zase pohrát.

Mimochodem, možnost přepsání výstupu používají mnohé šablony právě pro možnost úpravy výstupu dle představ svých tvůrců.

Uff...

Když si to tak po sobě čtu, obávám se, že je to pro mnohé nesrozumitelné, ale co nadělám, tohle už je vyšší dívčí a já doufám, že tento návod těm, co se textem prokoušou, přece jenom něco užitečného přinese.

Komentáře (2)

  • Bart

    Bart

    01 Říjen 2011 v 11:15 |
    Parádní úvod do této problematiky. Toto téma by si zasloužilo pokračování.
    Něco podobného jsem hledal... Konečně
  • Mira

    Mira

    03 Říjen 2011 v 10:04 |
    jen doplnim, ze ne vse jde takto "prepsat"
    virtuemart je tato neresitelny + i jeho hlavni moduly
    aby byla komponenta/modul prepisovatelny, musi mit MVC strukturu => laicky receno "byt dobre napsana"
    takze nejznamejsi veci obvykle jsou prepisovatelne, ale pokud clovek narazi na blbe vymysleny modul/komponentu ci je to neco starsiho, upravam primo se nevyhne

Napsat komentář

Pro přidání komentáře se prosím přihlaste.