Templates in Genesis Dynamik Website Builder

Im “Dynamik Custom”-Bereich bietet der Dynamik Website Builder die Möglichkeit, eigene Templates zu erstellen. Zur Auswahl gibt es dabei zwei verschiedene Templates, das “WordPress Template” sowie das “Page Template”. Was welches Template ist und wofür ich es verwende beschreibt dieser Post.

Page Template

Das Page-Template ist eine Vorlage für Seiten, die immer wieder verwendet werden kann. Veranschaulichen kann man dies beispielsweise an einem “Über uns”-Bereich einer Website, wo jeder Mitarbeiter aufgelistet ist. Wird ein Mitarbeiter angeklickt, dann erscheint eine Detail-Seite für diesen Mitarbeiter. Soll auf dieser Detail-Seite jeweils links oben ein Bild des Mitarbeiters und dann eine Auflistung von verschiedenen Custom Fields erfolgen (Mitarbeiter seit, Aufgabengebiet, E-Mailadresse, etc.), dann könnte man hierfür ein Page-Template anlegen und dieses Page-Template für jede Mitarbeiter-Detailseite auswählen. Jede dieser Seiten würde dann auf dem gleichen Template basieren und – sollte das Template verändert werden – automatisch angepasst werden.

Das Page Template wird über die Seiten-Attribute der WordPress-Seite ausgewählt. Dort erscheint das entsprechende Template im DropDown-Menü.

Zusammengefasst eignen sich Page Templates daher für Einsatzzwecke, wenn mehrere Seiten das gleiche Template nutzen sollen.

WordPress Template

Das WordPress-Template funktioniert ähnlich, hat jedoch einen anderen Einsatzzweck. Möchte ich eine einzige Seite mit Hilfe des Templates anpassen oder alle Seiten / Posts eines bestimmten Post Types, dann nutze ich das WordPress Template. Das WordPress-Template muss beispielsweise einen der folgenden Namen tragen (je nach Einsatzzweck):

  • page.php (Alle Seiten)
  • page-{slug}.php (Seite mit dem angegebenen Slug)
  • page-{ID}.php (Seite mit angegebener ID)
  • archive-{post_type}.php (Archiv-Seite des Post Types)
  • single-{post_type}.php (Single-Seite des Post Types)

WordPress weiß dadurch, welcher Seite oder welchem Post Type es zugeordnet ist. Der Inhalt des Templates kann dem Inhalt des Page Templates identisch entsprechen. Es handelt sich bei der Unterscheidung zwischen Page Template und WordPress Template lediglich um eine Zuordnungsfrage.

WordPress Templates eignen sich immer dann, wenn eine einzelne Seite oder alle Seiten / Posts eines Post Types angepasst werden sollen. Da WordPress Templates nicht im oben genannten DropDown-Menü erscheinen, wird die Menü-Liste nicht unnötig aufgebläht. Würde man hingegen für jede individuell zu gestaltende Seite ein Page Template nutzen, dann wäre das DropDown-Menü sehr schnell sehr voll und unübersichtlich.

Anwendung

Um nun ein Page Template oder WordPress Template mit Hilfe des Dynamik Website Builders zu erstellen muss im Templates Menü ausgewählt werden, welches von beiden Templates erstellt werden soll. Als File Name wird dann der gewünschte Name der Datei eingetragen, allerdings ohne die Endung “.php”. Dort muss also beispielsweise “projects” für ein Page Template oder “page-project” für ein WordPress Template eingetragen werden. Der Template Name ist dann frei wählbar, bei Page Templates erscheint dieser im DropDown-Menü der Seitenattribute, daher sollte der Name sprechend gewählt sein.

Der Template-Code kann dann aus normalem HTML-Code oder aus PHP-Code bestehen. Im Prinzip kann man sich den Template Code als “kleine functions.php” bestehen, die immer mit <?php genesis(); ?> endet.

Ein Beispiel für ein Page-Template sieht wie folgt aus:

<?php
// Seitentitel entfernen
// remove_action( 'genesis_entry_header', 'genesis_do_post_title' );

// Beispiel für forciertes Layout (Full Width)
// add_filter( 'genesis_pre_get_option_site_layout', '__genesis_return_full_width_content' );

// Default Genesis Loop entfernen
// remove_action( 'genesis_loop', 'genesis_do_loop' );

// Custom Loop hinzufügen
add_action( 'genesis_loop', 'sewid_project_custom_loop' );

/**
 * Custom Loop
 */
function sewid_project_custom_loop() {
  $type = 'project';

  $args = array(
    'post_type' => $type,
    'post_status' => 'publish',
    'posts_per_page' => -1,
    'ignore_sticky_posts' => 1
  );

  $my_query = null;
  $my_query = new WP_Query($args);

  echo '<div class="entry-content">';
  echo '<ul>';

  if( $my_query->have_posts() ) {
    while ($my_query->have_posts()) {
      $my_query->the_post();
      echo '<li><a href="'. get_permalink() .'">'. get_the_title() .'</a></li>';
    }
  }

  echo '</ul>';
  echo '</div>';
  wp_reset_query();
}

genesis();

Schreibe einen Kommentar