Theming DIY (WordPress)
Zie het spiekbriefje hier aan de zijkant. Zie ook Theming - Casus herfst 2013 (WordPress).
Segmenten
Websites bestaan meestal uit dezelfde terugkerende gedeeltes: kopje, hoofdgedeelte, voettekst en wellicht een zijbalk hier of daar. Deze gebieden worden sections genoemd, soms ook blocks, segmenten of regio's. Met elk standaard-segment correspondeert een sjabloon:
- header.php
- sidebar.php
- footer.php
Daarnaast kun je je eigen segmenten defineren, inclusief bijpassende sjablonen.
Dummy content
Als je een theme aan het ontwikkelen bent, kan het handig zijn om dummy content te laden, zodat je goed kunt testen. Zie [1].
Frameworks
Er bestaat zoiets als frameworks. http://wp.tutsplus.com/tutorials/theme-development/developing-wordpress-themes-using-responsive-frameworks/
Locatie
wp-content/themes
Ontwikkelomgeving
ThemeShaper beveelt aan:
- Developer plugin
- Monster widget, hier te downloaden
- config.php: Debug mode (WP_DEBUG) en Database logging (SAVEQUERIES) aanzetten
- Web Developer Add-on for Firefox
- Firebug.
Handleidingen:
- HTML Beginner Tutorial
- CSS Beginner Tutorial
- Element Index from HTML5 Doctor
- PHP 101: PHP for the Absolute Beginner.
Responsive themes
Responsive wil zeggen dat het theme zich aanpast aan het apparaat: Computer, mobieltje, etc. [2].
Sidebars
Met een sidebar of zijbalk bedoelen mensen meestal gebieden in een theme waarin widgets geplaatst kunnen worden. Justin ziet dit iets genuanceerder:
- Een dynamic sidebar of dynamische zijbalk is het object binnen de admin-interface waar je widgets in plaatst
- Een sidebar template of zijbalksjabloon is het gebied in een theme.
Meestal gaan deze twee begrippen hand-in-hand: De dynamische zijbalk wordt geregistreerd, en widgets worden in het bijbehorende zijbalksjabloon geplaatst.
Dynamische zijbalk registeren
Een zijbalk moet in functions.php geregistreerd worden. Zie Theming - Casus herfst 2013 (WordPress) en Justin's artikel voor voorbeelden.
Zijbalksjablonen
Code die betrekking heeft op een zijbalk, wordt in sidebar templates of zijbalksjablonen ondergebracht. Het standaardbestand is
sidebar.php
Indien je meerdere zijbalken hebt, is het handig om per zijbalk een apart zijbalksjabloon aan te maken, bv.:
sidebar-primary.php
en
sidebar-secondary.php
Bestand sidebar.php van Twenty Thirteen:
<?php /** * The sidebar containing the secondary widget area, displays on posts and pages. * * If no active widgets in this sidebar, it will be hidden completely. * * @package WordPress * @subpackage Twenty_Thirteen * @since Twenty Thirteen 1.0 */ if ( is_active_sidebar( 'sidebar-2' ) ) : ?> <div id="tertiary" class="sidebar-container" role="complementary"> <div class="sidebar-inner"> <div class="widget-area"> <?php dynamic_sidebar( 'sidebar-2' ); ?> </div><!-- .widget-area --> </div><!-- .sidebar-inner --> </div><!-- #tertiary --> <?php endif; ?>
Zijbalksjablonen aanroepen - get_sidebar()
Met behulp van de functie
get_sidebar()
worden zijbalksjablonen geïncorporeerd in een theme. Als er geen argument wordt meegegeven, zoekt WordPress naar sidebar.php. Indien er wel een argument wordt meegegeven, wordt het betreffende sjabloon geladen. Bv.:
get_sidebar('primary')
laadt sjabloon
sidebar-primary.php.
get_sidebar wordt aangeroepen vanuit index.html. Voorbeeld Twenty Thirteen:
<?php /** * The main template file. * * This is the most generic template file in a WordPress theme and one of the * two required files for a theme (the other being style.css). * It is used to display a page when nothing more specific matches a query. * For example, it puts together the home page when no home.php file exists. * * Learn more: http://codex.wordpress.org/Template_Hierarchy * * @package WordPress * @subpackage Twenty_Thirteen * @since Twenty Thirteen 1.0 */ get_header(); ?> <div id="primary" class="content-area"> <div id="content" class="site-content" role="main"> <?php if ( have_posts() ) : ?> <?php /* The loop */ ?> <?php while ( have_posts() ) : the_post(); ?> <?php get_template_part( 'content', get_post_format() ); ?> <?php endwhile; ?> <?php twentythirteen_paging_nav(); ?> <?php else : ?> <?php get_template_part( 'content', 'none' ); ?> <?php endif; ?> </div><!-- #content --> </div><!-- #primary --> <?php get_sidebar(); ?> <?php get_footer(); ?>
Dynamische zijbalk weergeven - dynamic_sidebar()
Weergave van een dynamische zijbalk in een theme wordt verzorgd in een zijbalksjabloon met het php-commando dynamic_sidebar(). Bv.:
<div id="sidebar-primary" class="sidebar"> <?php dynamic_sidebar( 'primary' ); ?> </div>
Plaatsing - style.css
De uiteindelijke plaatsing van een zijbalk wordt via css aangegeven in bestand style.css.
Casus: Twenty Thirteen
Zie ook
Bronnen
- http://justintadlock.com/archives/2010/11/08/sidebars-in-wordpress
- http://codex.wordpress.org/Function_Reference/register_sidebar
- http://codex.wordpress.org/Sidebars - php-code voor werken met zijbalken
- http://generatewp.com/sidebar/ - Zijbalk-registratiecode-generator
Theme-identificatie & klonen
Zaken zoals de naam van een theme, staan weergegeven in commentaarregels in style.css. Als je een theme kloont, is het handig om die gegevens aan te passen. Het hoeft trouwens niet per se: Dan wordt de kloon beschouwd als een child theme van het oorspronkelijke theme. Best goed over nagedacht!
Twitter Bootstrap
Rondom het onderwerp theming kom ik Twitter Bootstrap regelmatig tegen. Framework? css-library? Plugin? Kruising tussen een plugin en een theme?