OK, grundsätzliche Erklärung: alle grundlegenden Funktionen für alle Themes existieren in include/themes.inc.php. Wird nun in theme.php innerhalb eines themes eine Funktion neu definiert, dann hat sie Vorrang vor den "Grunddefinition" in themes.inc.php.
Wir haben für cpg1.4.2 nur das in theme.php gelassen, was sich von der Grundfunktion unterscheidet. Beim classic theme ist das halt einfach "nichts" - es benutzt alle Grundfunktionen von themes.inc.php.
Wenn Du jetzt ein eigenes theme erzeugen willst, dann erzeuge eine Kopie vom Ordner "classic" und benenne ihn um, zum Beispiel in "mein_theme" (muss innerhalb des Ordners "themes" liegen). Jetzt hast Du einen "Clone" vom Classic theme. Das komplette Gegenteil vom Classic theme ist das Sample theme, dort werden alle möglichen Funktionen neu definiert, dadurch wird keine der Grunddefinitionen von themes.inc.php benutzt.
Jetzt kommt der Trick: willst Du einen bestimmtes Verhalten in Deinem Theme, das sich vom Classic theme unterscheidet, dann kopiere die entsprechende Definition aus dem Sample theme in Dein vorhin erzeugtes eigenes theme "mein_theme" (und dort in die Datei "theme.php").
Beispiel gefällig? OK, los geht's: wir wollen ein anderes Admin-Menü als den Standard: wir suchen also in themes/sample/theme.php nach
// HTML template for gallery admin menu
und kopieren alles, was wir darunter vorfinden:
// HTML template for gallery admin menu
$template_gallery_admin_menu = <<<EOT
<div align="center">
<table cellpadding="0" cellspacing="1">
<tr>
<!-- BEGIN admin_approval -->
<td class="admin_menu" id="admin_menu_anim"><a href="editpics.php?mode=upload_approval" title="{UPL_APP_TITLE}">{UPL_APP_LNK}</a></td>
<!-- END admin_approval -->
<td class="admin_menu"><a href="admin.php" title="{ADMIN_TITLE}">{ADMIN_LNK}</a></td>
<td class="admin_menu"><a href="catmgr.php" title="{CATEGORIES_TITLE}">{CATEGORIES_LNK}</a></td>
<td class="admin_menu"><a href="albmgr.php{CATL}" title="{ALBUMS_TITLE}">{ALBUMS_LNK}</a></td>
<td class="admin_menu"><a href="groupmgr.php" title="{GROUPS_TITLE}">{GROUPS_LNK}</a></td>
<td class="admin_menu"><a href="usermgr.php" title="{USERS_TITLE}">{USERS_LNK}</a></td>
<td class="admin_menu"><a href="banning.php" title="{BAN_TITLE}">{BAN_LNK}</a></td>
<td class="admin_menu"><a href="reviewcom.php" title="{COMMENTS_TITLE}">{COMMENTS_LNK}</a></td>
<!-- BEGIN log_ecards -->
<td class="admin_menu"><a href="db_ecard.php" title="{DB_ECARD_TITLE}">{DB_ECARD_LNK}</a></td>
<!-- END log_ecards -->
<td class="admin_menu"><a href="picmgr.php" title="{PICTURES_TITLE}">{PICTURES_LNK}</a></td>
<td class="admin_menu"><a href="searchnew.php" title="{SEARCHNEW_TITLE}">{SEARCHNEW_LNK}</a></td>
<td class="admin_menu"><a href="util.php" title="{UTIL_TITLE}">{UTIL_LNK}</a></td>
<td class="admin_menu"><a href="profile.php?op=edit_profile" title="{MY_PROF_TITLE}">{MY_PROF_LNK}</a></td>
<!-- BEGIN documentation -->
<td class="admin_menu"><a href="{DOCUMENTATION_HREF}" title="{DOCUMENTATION_TITLE}" target="cpg_documentation">{DOCUMENTATION_LNK}</a></td>
<!-- END documentation -->
</tr>
</table>
</div>
EOT;
markieren und in themes/mein_theme/theme.php nach der Zeile
define('THEME_IS_XHTML10_TRANSITIONAL',1);
einfügen.
Soweit keine Änderung - noch haben wir ja nichts geändert, unser eigenes Admin-Menü unterscheidet sich ja noch nicht von der Grunddefinition. Also flugs eine Änderung eingebaut, z.B. in themes/mein_theme/theme.php nach
<td class="admin_menu"><a href="{DOCUMENTATION_HREF}" title="{DOCUMENTATION_TITLE}" target="cpg_documentation">{DOCUMENTATION_LNK}</a></td>
suchen und danach (in einer neuen Zeile)
<td class="admin_menu"><a href="http://google.de/" title="zu Google" target="_blank">Google</a></td>
einfügen.
Jetzt nur noch schnell per FTP den neuen Ordner "mein_theme" auf die Seite hochladen. Zum Testen nicht gleich das neue Theme für jedermann sichtbar machen, daher nicht in den Coppermine-Einstellungen zum neuen Theme wechseln, sondern nur für Dich (zum Testen) das Standard-Theme zeitweise nicht anzeigen, sondern das neue Theme. Das geschieht, indem man den Parameter
theme=mein_theme an die URL in der Adress-Zeile des Browsers anhängen, also z.B. so
http://meine-seite.de/mein_coppermine_ordner/?theme=mein_themeJetzt wäre es natürlich verführerisch zu sagen "warum sollte ich nicht themes.inc.php verändern?" oder "warum sollte ich mein eigenes theme umbenennen - ich kann doch Classic benutzen?". Die Antwort ist klar: bei einem Upgrade von Coppermine gehen alle Änderungen verloren, wenn man nicht wie beschrieben vorgeht. Wenn Du Dich jedoch dran hälst, dann wird das Upgraden in Zukunft deutlich einfacher sein, selbst wenn zukünftige Versionen neue Features mitbringen wirst Du Dein "altes" Theme weiterverwenden können. Hört sich gut an? Ist gut.
Hoffe, dass diese Anleitung ankommt.
Joachim