Professional Documents
Culture Documents
Overzicht Presentatie
Introductie Core
Hack 1. Template overrides 2. Module klonen 3. Gebruik van Plugins 4. Component met eigen controller Vragen
>>> Sheets digitaal beschikbaar <<<
Core Hack
Core Hack
Joomla
Bescherming van vrijheid van gebruikers Broncode = openbaar Je mag en kan alle Joomla code wijzigen
Nadeel
Onderhoudbaarheid: Code kan worden overschreven bij upgrade Mogelijke problemen bij samenwerking 3rd party extensies
Core Hack
Voorbeeld:
Bezoekers
Core Hack
IP
Core Hack
Resultaat
Date: Sat, 21 Apr 2012 15:30:00 +0200 From: Afzender van Website <info@example.com> Reply-To: [Naam bezoeker] <[email adres bezoeker]> To: [e-mail adres SuperAdmin Website] IP adres: 127.0.0.1 Dit is een e-mailbericht via http://www.example,com/ van: [Naam bezoeker] <[email adres bezoeker]> [Bericht van bezoeker]
1. Template override
1. Template override
Template
Componenten
& Modules
Template
overrides
sinds Joomla 1.5 Wijzig HTML output van componenten / modules zonder core hacks
Change
10
Template override:
Maak eventueel in /templates/jouw_template/ nieuwe override map aan: /templates/beez_20/html/ Maak nieuwe map aan voor module override /templates/beez_20/html/mod_articles_latest/ Kopieer HTML output bestand uit de /tmpl/ map van de module:
/modules/mod_articles_latest/tmpl/default.php naar /templates/beez_20/html/mod_articles_latest/default.php
11
1c.
<ul class="latestnews<?php echo $moduleclass_sfx; ?>"> <?php foreach ($list as $item) : ?> <li><?php print_r($item);?> <a href="<?php echo $item->link; ?>"> <?php echo $item->title; ?></a> </li> <?php endforeach; ?> </ul> 12
13
<?php foreach ($list as $item) : ?> <li> <a href="<?php echo $item->link; ?>"> <?php echo $item->created." - ".$item->title; ?></a> </li> <?php endforeach; ?> Output: Latest News 2011-01-01 00:00:01 - Beginners
2011-01-01 00:00:01 - Getting Help 2011-01-01 00:00:01 - Getting Started 2011-01-01 00:00:01 - Joomla! 2011-01-01 00:00:01 - Options
14
15
Latest News
zaterdag 01 januari 2011, 01:00:01 - Beginners zaterdag 01 januari 2011, 01:00:01 - Getting Help zaterdag 01 januari 2011, 01:00:01 - Getting Started zaterdag 01 januari 2011, 01:00:01 - Joomla! zaterdag 01 januari 2011, 01:00:01 - Options
16
2. Module klonen
17
2. Module klonen
Indien
18
2. Module klonen
Toevoegen
19
2. Module klonen
2a.
kopieer module
hernoem bestanden
20
2. Module clonen
2c.
mod_quickicon2.php
$buttons = modQuickIcon2Helper::getButtons($params); require JModuleHelper::getLayoutPath('mod_quickicon2', $params->get('layout', 'default'));
mod_quickicon2.xml
<name>mod_quickicon2</name> <filename module="mod_quickicon2">mod_quickicon2.php</filename>
21
2. Module clonen
2d.
22
2. Module klonen
2e.
Extensions > Module Manager > Filter: administrator [New] > mod_quickicon2 Title: My own Quick Icons Position: icon
23
2. Module klonen
Oeps:
Fatal error: Cannot redeclare class modQuickIconHelper in /administrator/modules/mod_quickicon2/helper.p hp on line 18 edit helper.php
/administrator/modules/mod_quickicon2/helper.php verander de classname: abstract class modQuickIconHelper2
2f.
24
2. Module klonen
2g.
/administrator/modules/mod_quickicon2/helper.php
array( 'link' => Jroute::_('index.php?option=com_search'), 'image' => 'header/icon-48-search.png', 'text' => Jtext::_('Search'), 'access' => array('core.manage', 'com_search') ),
25
2. Module klonen
2h.
Resultaat:
26
27
Water
is H2O
Menu item H<sub>2</sub>O Water is H2O Artikel titel H<sub>2</sub>O Water is H2O Tekst in artikel H<sub>2</sub>O Water is H2O
28
29
subscript tag
Einde
subscript tag
30
is H2O
Menu item H#sub#2#/sub#O Water is H2O Menu item, Browser Page Title! Water is H2O Artikel titel H#sub#2#/sub#O Water is H2O Tekst in artikel H<sub>2</sub>O Water is H2O NB: let op Menu/Artikel Alias!
31
32
contact component:
Toont contactgegevens Toont contactformulier Handelt contactformulier af (controleert input, verstuurd naar gespecificeerd e-mail adres)
Echter,
in e-mail ontbreekt het IP adres van degene die formulier heeft ingevuld
Template override: niet mogelijk Clonen: mogelijk, maar component = groot Plugin: mogelijk, maar welke? Eigen controller....
33
Eigen controller in bestaande /controllers/ map van component Template override: aanpassing van de controller zodat andere (eigen) controller wordt aangesproken
Voorbeeld:
Aanpassen van com_contact zonder corehack zodat IP adres in e-mail naar de beheerder wordt meegestuurd
34
Maak map /html/com_contact/contact/ aan + plak daarin het default_form bestand en wijzig: /templates/beez_20/html/com_contact/contact/default_form.php
<input type="hidden" name="task" value="mijn_eigen_controller.submit" />
35
Eigen controller
Kopieer com_contact controller /components/com_contact/controllers/contact.php Geef eigen naam (= 'task' uit formulier van template override) /components/com_contact/controllers/mijn_eigen_controller.php
4c.
wordt:
class ContactControllerMijn_eigen_controller extends JControllerForm
36
4c2. Juiste model (Contact) met prefix aanroepen ter voorkoming van foutmelding
37
4c3. Eigen code toevoegen in methode private function _sendEmail($data, $contact), in gedeelte onder // Prepare email body $mail->setBody($body); wordt: $mail->setBody("IP address: ".$_SERVER['REMOTE_ADDR']. "\n\n".$body);
38
Resultaat:
Date: Sat, 21 Apr 2012 15:30:00 +0200 From: Afzender van Website <info@example.com> Reply-To: [Naam bezoeker] <[email adres bezoeker]> To: [e-mail adres SuperAdmin Website] IP adres: 127.0.0.1 Dit is een e-mailbericht via http://www.example,com/ van: [Naam bezoeker] <[email adres bezoeker]> [Bericht van bezoeker]
39
Conclusie
40
Conclusie
Core Hack
= Aanpassen core bestanden = Aanpassen van kopie van HTML output bestand = Aanpassen van kopie van complete module
1. Template overrides
2. Module clonen
= Aanpassen van kopie van controller bestand + Aanpassen van kopie van HTML output bestand zodat het eigen controller bestand wordt aangestuurd.
41
Conclusie
Core
Kan worden overschreven bij Joomla upgrade = Kopie van Joomla code Niet overschreven bij Joomla upgrade Nadeel: evt verbeteringen in Joomla's core bestanden worden niet doorgevoerd in het kopie...
Template
Plugins
42
Vragen?
43
Vragen?
Presentatie
44
Gebruikte foto's
Axe - Peter Huys, http://www.sxc.hu/photo/808871 Photo Frame 9 Billy Alexander, http://www.sxc.hu/photo/1367198 HiSpeed copier 1 - Marcin Barowski, http://www.sxc.hu/photo/537037 usb - Vangelis Thomaidis, http://www.sxc.hu/photo/913590 Game pad - Michal Zacharzewski, http://www.sxc.hu/photo/957040 signs signs - Jason Antony, http://www.sxc.hu/photo/751034 Face - Questions - Bob Smith, http://www.sxc.hu/photo/418215
45