Neulich wurde ich angefragt, wie ich es schaffe, immer die Revisionsnummer der aktuellen Joomla! 1.5.1 SVN in der Fusszeile meines Joomlanews-Templates anzeigen zu lassen. Das Ganze funktioniert mit einem simplen Codeschnipsel, einem sogenannten Hack. Meinem Kollegen Nikolai Plath (www.easy-joomla.org) ist es zu verdanken, dass ich diese Idee auf der Seite realisieren konnte. Ich möchte euch diesen [[wiktipedia:Hack]] natürlich nicht vorenthalten.
Dafür braucht es eigentlich nur zwei Codeschnipsel, welches ihr in euer Template einbauen müsst. (Pfad: ../templates/dein_Template/index.php) Dieser Hack bewirkt, dass aus der CHANGELOG.php die Versionsinfos der aktuellen Joomlaausgabe ausgelesen wird. Das ist vor allem für diejenigen praktisch, die sich laufend die neuste SVN-Version installieren. So ist nach der Installation der neuen Files auch gleichzeitig die neuste Versionsnummer auf der Seite sichtbar.
Dazu müsst ihr in der index.php eures Templateordners die folgenden Teile einfügen.
Zwischen <head> und </head > fügt ihr den folgenden Code ein:
<? php /** * Extract strings from svn:property Id * * like: * * version $ I d: CHANGELOG.php 362 2007-12-14 22:22:19Z elkuku $ * [0] => Id: [1] => CHANGELOG.php [2] => 362 [3] => 2007-12-14 [4] => 22:22:19Z [5] => elkuku [6] => 😉 * * @param string $path full path * @param string $filename the name of the file * @return mixed propertystring or FALSE */ $VERSION = new JVersion; function getVersionFromFile( $path, $filename ) { if( ! file_exists( $path.DS.$filename) ) { return $filename.JText::_(' NOT FOUND in path').' '.$path; } $output = ''; $f = fopen( $path.DS.$filename, 'r' ); while( $line = fgets( $f, 1000 ) ) { if( strpos( $line, '@version')) { // we found the @version $line = explode( '
Anschliessend muss man nur noch innerhalb des Seitentemplates an gewünschter Stelle zwischen <body> und </body> den Aufruf der Funktion platzieren. Dies beruht auf einem simplen php Echo-Befehl
powered by Joomla <? php echo $VERSION->getShortVersion(); echo getVersionFromFile( JPATH_SITE, 'CHANGELOG.php' ); ?>
Hinweis: Bitte entfernen Sie oben bei den PHP Tags: „< ? php “ und „? > “ die Leerschläge dazwischen. Sonst hätte ich hier den Code nicht abbilden können.
Ich danke an dieser Stelle nochmals ganz herzlich meinem Kollegen Nikolai Plath für das Schreiben dieses Hacks. Ich hoffe, dass es euch allen genauso eine Hilfe ist wie mir.
, $line ); $line = explode( ' ', $line[1] ); $svn_rev = $line[2]; $svn_date = $line[3]; //custom date for roger $c_date = explode ( '-', $svn_date ); $svn_date = $c_date[2].'-'.$c_date[1].'-'.$c_date[0]; //custom format: REV - DATE $output = 'Rev # '.$svn_rev.' - '.$svn_date; return $output; } }// while return JText::_('No @version string (Id) found...').' '.$path; }// function ?>
Anschliessend muss man nur noch innerhalb des Seitentemplates an gewünschter Stelle zwischen <body> und </body> den Aufruf der Funktion platzieren. Dies beruht auf einem simplen php Echo-Befehl
Hinweis: Bitte entfernen Sie oben bei den PHP Tags: „< ? php “ und „? > “ die Leerschläge dazwischen. Sonst hätte ich hier den Code nicht abbilden können.
Ich danke an dieser Stelle nochmals ganz herzlich meinem Kollegen Nikolai Plath für das Schreiben dieses Hacks. Ich hoffe, dass es euch allen genauso eine Hilfe ist wie mir.