Category met forumlay-out

voorbeeld forumtemplateDe titel klinkt misschien een beetje cryptisch, maar het is heel eenvoudig. Al tijden heb ik het idee om voor een specifieke categorie een forum lay-out te gebruiken. De categorie is dus eigenlijk het forum en de subcategorieën zijn dan de subfora.

WordPress biedt standaard de mogelijkheid om een aparte template te gebruiken voor een specifieke categorie. Dit kan eenvoudig worden gedaan door een bestand met de naam category-7.php aan te maken in de template directory. In mijn geval is 7 het ID van de categorie waarvoor ik een aparte template wil. In de basis hetzelfde idee als ik ook voor mijn inhoudsopgave-template gebruikt heb.

Nu leverde een zoektocht met de diverse zoekmachines mij niet veel op, ook de codex van WordPress bracht niet veel uitkomst. Er waren genoeg vragen van andere mensen die het zelfde wilden, maar geen van allen had iets gevonden of had een duidelijke uitwerking.

De code van de pagina zoals ik die nu gebruik:

<?php get_header(); ?>
<?php get_sidebar(); ?>

<div class="widecolumn">
<h2>Berichten in <?php single_cat_title(); ?></h2>
<?php
while (have_posts()) : the_post();
        if ((is_category()) && in_category($wp_query->get_queried_object_id())) { ?>
        <dl>
        <dt><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a>
        <?php the_time(get_settings('date_format')); ?> om <?php the_time(); ?> <?php the_tags('Tags: ', ', ', ' '); ?>
        <?php comments_popup_link('0 reacties', '1 reactie', '% reacties'); ?></dt>
        </dl>
        <?php }
endwhile;
?>

<?php
$categories=get_categories('child_of='.$cat);
if (!empty($categories)) :
        foreach($categories as $categorie) :
                query_posts('cat=' . $categorie->cat_ID . '&orderby=date&order=desc');
                echo '<h3>Subforum ' .$categorie->cat_name. '</h3>';
                while (have_posts()) : the_post(); ?>
                <dl>
                <dt><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a>
                <?php the_time(get_settings('date_format')); ?> om <?php the_time(); ?> <?php the_tags('Tags: ', ', ', ' '); ?>
                <?php comments_popup_link('0 reacties', '1 reactie', '% reacties'); ?></dt>
                </dl>
                <?php endwhile;
        endforeach;
        else :
endif; ?>

<?php get_footer(); ?>

Nu is dit een vrij eenvoudige opmaak. Het geheel kan natuurlijk verfraaid worden, maar de basis is er nu in ieder geval. Een voorbeeld is natuurlijk te zien in bovenstaande afbeelding.

Reacties

  1. Ik had natuurlijk kunnen weten dat jij dezelfde ideeën als ik heb. En ook dat jij veel meer van WordPress weet dan ik :) . Werkt dit ook al in WordPress 2.1.3 of is dit in een latere versie toegevoegd? Een upgrade van WordPress lijkt mij desnoods zinniger dan upgraden naar de nieuwste phpBB 3. Zeker omdat ik toch langzaam maar zeker naar mijn eigen systeem wil…

  2. Roland says:

    Volgens mij is de template hierarchy zoals WordPress dit noemt, beschikbaar vanaf versie 1.5. Ik heb het gemaakt tegen versie 2.5.1, maar volgens mij moet het zonder problemen met versie 2.1.3 werken.

    Ook voor wat betreft de gebruikte functies moet het volgens mij wel werken, er zitten geen functies in dit stukje code die niet in versie 2.1.3 aanwezig zijn. Anders is het snel genoeg aan te passen naar de oudere functie.

  3. Martine Bloem says:

    Ik vind dit ook fraai :) Maar vraagje – ik ken WP niet goed. Is het eigenlijk meertalig? En zijn tekst en layout gescheiden? Ik weet dat dat vroeger niet zo was en ik zie ook in jouw code tekst staan en de pagina is (nog) een mix?

  4. Roland says:

    WordPress is standaard engelstalig, maar biedt wel ondersteuning om voor het admin gedeelte een vertaalbestand toe te voegen.

    Tekst en lay-out is tot op zekere hoogte wel gescheiden. In het stukje code wat ik heb geplaatst is dat niet helemaal het geval, maar dat komt vooral omdat het nog maar een eerste versie is. Wat niet altijd gescheiden is, dat zijn de teksten rondom een bericht, de meta informatie dus. Zo is de datumnotatie van een reactie bijvoorbeeld vastgelegd in de php-code. Ik heb dat bijvoorbeeld zo aangepast dat de datumnotatie uit het adminpanel wordt overgenomen. Is een kleine aanpassing waarvan ik persoonlijk vind dat die standaard in WordPress had moeten zitten.

    Feit is, WordPress is handig, maar kent zeker wat eigenaardigheden waar je even aan moet wennen.

  5. @Martine: WordPress is niet super strak gescheiden. Kortom meertalig zal zeker qua frontend — de backend wordt via .po bestanden gedaan en dat is wel redelijk strak — lastig worden. Aan de andere kant is WordPress goed te hacken, veel meer dan bijvoorbeeld mogelijk is met phpBB.

    @Roland: Als ik WordPress ook als vervanging voor phpBB ga gebruiken, is het wellicht wel slim om tegen die tijd gewoon de nieuwste versie te gebruiken. Moet ik even over nadenken. Langzaam maar zeker wordt het steeds lastiger om bugfixes te backporten…

  6. Martine Bloem says:

    Flauw dat je WP moet ‘hacken’. Is dat wat externe developers doen? Dan zou het mijn cms geloof ik toch niet zijn :(

  7. Roland says:

    WordPress is zo opgezet dat je allerlei uitbreidingen en aanpassingen via plugins kunt realiseren. Zo kun je dus de originele code ongemoeid laten en toch je zaken doorvoeren.

    Alleen, stel dat je iets wilt aanpassen dat niet via een plugin kan. Hoe dan verder? De makers hebben dan het liefste dat je een bugreport meldt met datgene wat je wilt bereiken en de volgende versie zou het er dan in zitten. Nu heb ik ten eerste geen zin om daarvoor een bugreport te melden en ten tweede om dan ook nog te wachten op de volgende release.

    Bovendien ben ik ook geen programmeur. Dus in mijn code zul je veel dingen tegenkomen die jij als doorgewinterde programmeur niet gauw zult doen ;) .

  8. Martine Bloem says:

    ach, doorgewinterd :) Maar OK, plugins dus. Het leek me al een beetje raar…

  9. Roland says:

    Als ik WordPress ook als vervanging voor phpBB ga gebruiken, is het wellicht wel slim om tegen die tijd gewoon de nieuwste versie te gebruiken. Moet ik even over nadenken. Langzaam maar zeker wordt het steeds lastiger om bugfixes te backporten…

    In ieder geval kun je wel je eigen steno blijven gebruiken. Die plugin heb ik op mijn testblog werkend voor versie 2.5.1. Je zult waarschijnlijk alleen je eigen blue-thema door moeten lopen, daar kunnen functies in zitten die in 2.5.1 niet meer aanwezig zijn.

  10. Het Blue theme dat ik gebruik is heel erg simpel en uitgekleed. Kan me haast niet voorstellen dat daarin dingen zitten die nu niet meer zouden werken. Het is dat ik weinig tijd heb, anders zou ik eigenlijk eens een test installatie moeten gaan bouwen…

  11. Roland says:

    Op zich is daar nog wel snel achter te komen hoor. Als in de wp-config.php de debug optie aan staat, dan wordt bij het gebruik van een deprecated functie een notice in de php errorlog weggeschreven.

    Gisteren is versie 2.6 trouwens uitgekomen, de plugin voor de steno werkt zonder problemen in die versie.

  12. Ik zag dat er inderdaad weer een nieuwe versie is. Ondertussen loop ik er dus 10 achter :) . Maar ik gok dat mijn bijhouden van 2.1.3 wel eens minder werk is dan het hopen dat de eigen aanpassingen nog steeds werken in de nieuwste versie. Wel wil ik een keer de sprong gaan maken om zo phpBB 2.0.23 uit te kunnen bannen. Hoe ik de sprong ga maken, is mij nog niet helemaal duidelijk…

 

Geef uw reactie

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>