Anzeige der Foren pro Kategorie

In diesem moderierten Forum werden Code-Schnipsel, die zu klein sind, um richtige Mods zu sein, abgelegt.
Bei Fragen oder Problemen benutze bitte das Forum phpBB 2.0: Mod Support.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
naderman
phpBB.com
Beiträge: 822
Registriert: 01.08.2003 18:23
Wohnort: Berlin
Kontaktdaten:

Anzeige der Foren pro Kategorie

Beitragvon naderman » 30.09.2005 14:35

Dieser CodeSchnipsel entstand aus folgender Anfrage im Forum Coding&Technik ...
Wofür ihr ihn nutzen wollt, bleibt eurer Phantasie überlassen. Ich werde hier ein allgemeines Beispiel geben, sowie den konkreten Anwendungsfall, aus dem die Idee entstanden ist beschreiben.

Was macht der CodeSchnipsel?
Er zählt für jede Kategorie die Anzahl der darin(sichtbaren) Foren und stellt diese Anzahl als Template-Variable zur Nutzung in der templates/DEIN_TEMPLATE/index_body.tpl zur Verfügung. Außerdem wird noch ein Template-Switch erzeugt, der innerhalb der bereits vorhandenen forumrow-Schleife genutzt werden kann, um im jeweils ersten Forum jeder Kategorie noch etwas Spezielles einzufügen.

Also dann, hier ist der ...

Code: Alles auswählen

##############################################################
##  Code-Snippet: Anzahl Foren pro Kategorie
## Snippet Autor: mad-manne < phpbb@mad-manne.de > (Manfred Hoffmann) http://phpbb.mad-manne.de
##  --------------------     Snippet-Beschreibung     --------------------
## Dieser Code-Schnipsel ermittelt die Anzahl der sichtbaren Foren pro Kategorie,
## welche sich dann für weitere Zwecke in der index_body.tpl nutzen lässt!
##
## --> Ausserdem hat man noch einen zusätzlichen Template-switch in der index_body.tpl
## zur Verfügung, mit dem man HTML einschliessen kann, welches nur beim ersten
## Forum innerhalb jeder Kategorie auftauchen soll ...
##  --------------------     Snippet-Beschreibung     --------------------
##
## Zu editierende Dateien: 2
##      index.php
##      templates/DEIN_TEMPLATE/index_body.tpl
##     
## License: http://opensource.org/licenses/gpl-license.php GNU General Public License v2
##############################################################
## Bevor du diesen Code-Schnipsel benutzt, solltest du ein Backup aller beteiligten Dateien erstellen!
##############################################################

#
#-----[ ÖFFNE ]------------------------------------------
#
index.php

#
#-----[ FINDE ]------------------------------------------
#
      $cat_id = $category_rows[$i]['cat_id'];

#
#-----[ DANACH, FÜGE EIN ]------------------------------------------
#
      $forums_in_cat = 0;

#
#-----[ FINDE ]------------------------------------------
#
            $display_forums = true;
            
#
#-----[ DANACH, FÜGE EIN ]------------------------------------------
#
            $forums_in_cat++;

#
#-----[ FINDE ]------------------------------------------
#
            'CAT_ID' => $cat_id,

#
#-----[ DANACH, FÜGE EIN ]------------------------------------------
#
            'FORUMS_IN_CAT' => $forums_in_cat,

#
#-----[ FINDE ]------------------------------------------
#
         if ( $viewcat == $cat_id || $viewcat == -1 )

#
#-----[ DAVOR, FÜGE EIN ]------------------------------------------
#
         $forums_in_cat = 0;

#
#-----[ FINDE ]------------------------------------------
#
                        'U_VIEWFORUM' => append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id"))
                     );

#
#-----[ DANACH, FÜGE EIN ]------------------------------------------
#
                     $forums_in_cat++;
                     if ( $forums_in_cat == 1 )
                     {
                        $template->assign_block_vars('catrow.forumrow.switch_first_forum_in_cat',array() );
                     }

#
#-----[ ÖFFNE ]------------------------------------------
#
templates/DEIN_TEMPLATE/index_body.tpl

#
#-----[ ZWISCHEN DIESEN SWITCHES ]------------------------------------------
#
<!-- BEGIN catrow -->
...
<!-- END catrow -->
 
#
#-----[ AN GEWÜNSCHTER STELLE EINSETZEN ]------------------------------------------
#
{catrow.FORUMS_IN_CAT}

#
#-----[ ZWISCHEN DIESEN SWITCHES ]------------------------------------------
#
<!-- BEGIN forumrow -->
...
<!-- END forumrow -->



     #                                                                         #
     #========== ZUSATZ-OPTION Switch für erstes Forum pro Kategorie ==========#
     #                                                                         # 

#
#-----[ FOLGENDE SWITCHES UM DIE GEWÜNSCHTE STELLE EINSETZEN ]------------------------------------------
#
<!-- BEGIN switch_first_forum_in_cat -->
...   
<!-- END switch_first_forum_in_cat -->

#
#-----[ SPEICHERN/SCHLIESSEN ALLER DATEIEN ]------------------------------------------
#
# EdS
Na schön .. und was mach ich jetzt damit :roll:


Beispiel 1:
Nehmen wir an, ihr wollt in jeder Kategorie-Überschrift die Anzahl der darin befindlichen Foren anzeigen, dann könntet ihr das nun so machen.

Code: Alles auswählen

#
#-----[ ÖFFNE ]------------------------------------------
#
templates/DEIN_TEMPLATE/index_body.tpl

#
#-----[ FINDE ]------------------------------------------
#
   <td class="catLeft" colspan="2" height="28"><span class="cattitle"><a href="{catrow.U_VIEWCAT}" class="cattitle">{catrow.CAT_DESC}</a></span></td>

#
#-----[ IN DIESER ZEILE, FINDE ]------------------------------------------
#
   </a></span>
   
#
#
#-----[ IN DIESER ZEILE ... DANACH, FÜGE EIN ]------------------------------------------
#
&nbsp;&nbsp;<span class="gensmall">Foren in dieser Kategorie: {catrow.FORUMS_IN_CAT}</span>


Beispiel 2:
Hier am besten nur weiterlesen, falls halbwegs brauchbare Kenntnisse in HTML im Allgemeinen sowie in der Nutzung von TABLE-Tags im Besonderen vorhanden sind. Ansonsten kann ich für evtl. auftretende Schwindelgefühle nicht verantwortlich gemacht werden 8)
Im konkreten Fall, ging es darum bei den Zeilen der Foren jeweils rechts und links noch einen speziellen Rand anzuzeigen, der mittels einer zusätzlichen Tabellenspalte mit entsprechendem rowspan-TAG gelöst werden sollte. Dafür war es aber eben nicht nur nötig, die variable Anzahl der Zeilen(Foren) pro Kategorie zu ermitteln, sondern zusätzlich musste auch noch sichergestellt werden, dass diese zusätzlichen "rowspanned" Tabellenzellen, nur einmal und zwar jeweils in der ersten Zeile pro Kategorie erscheinen. Dazu wird auch noch ein zusätzlicher Template-Switch erzeugt, der dann innerhalb der forumrow-Schleife genutzt werden kann.
Das könnte dann also so aussehen ...

Code: Alles auswählen

  <!-- BEGIN forumrow -->
  <tr>
   <!-- BEGIN switch_first_forum_in_cat -->
   <td rowspan="{catrow.FORUMS_IN_CAT}">linker Rand hier</td>
   <!-- END switch_first_forum_in_cat -->
   <td class="row1" align="center" valign="middle" height="50"><img src="{catrow.forumrow.FORUM_FOLDER_IMG}" width="46" height="25" alt="{catrow.forumrow.L_FORUM_FOLDER_ALT}" title="{catrow.forumrow.L_FORUM_FOLDER_ALT}" /></td>
   <td class="row1" width="100%" height="50"><span class="forumlink"> <a href="{catrow.forumrow.U_VIEWFORUM}" class="forumlink">{catrow.forumrow.FORUM_NAME}</a><br />
     </span> <span class="genmed">{catrow.forumrow.FORUM_DESC}<br />
     </span><span class="gensmall">{catrow.forumrow.L_MODERATOR} {catrow.forumrow.MODERATORS}</span></td>
   <td class="row2" align="center" valign="middle" height="50"><span class="gensmall">{catrow.forumrow.TOPICS}</span></td>
   <td class="row2" align="center" valign="middle" height="50"><span class="gensmall">{catrow.forumrow.POSTS}</span></td>
   <td class="row2" align="center" valign="middle" height="50" nowrap="nowrap"> <span class="gensmall">{catrow.forumrow.LAST_POST}</span></td>
   <!-- BEGIN switch_first_forum_in_cat -->
   <td rowspan="{catrow.FORUMS_IN_CAT}">rechter Rand hier</td>
   <!-- END switch_first_forum_in_cat -->
  </tr>
  <!-- END forumrow -->
wobei da auch noch beachtet werden muss, dass die Gesamtzahl der Tabellenzellen in der umgebenden Tabelle angepast werden müssen.

Viel Spass damit,
Manne.

Zurück zu „phpBB 2.0: Snippets“