1. Einleitung

    Basis ist ein Theme, welches die Erstellung eines neuen Themes für WordPress vereinfachen soll.

    Wer sich an die Entwicklung eines eigenen Themes macht, der findet mit diesem Basis-Theme einen Einstieg, der sich leicht an die eigenen Bedürfnisse anpassen läßt.

    Es liegen eine Reihe unterschiedlicher Templates bei und das Stylesheet ist leer, bis auf die Vereinbarung der IDs und class, die schon Verwendung finden. Das Theme ist Widget-Tauglich und hat eine ganze Reihe von Funktionen, die in der functions.php abgelegt sind. Detaillierte Hinweise in den folgenden Punkten.

    Alternative xHTML5

    Zusätzlich ist im SVN das Projekt als xHTML5 Version vorzufinden.

     ↑ 

  2. Projektseiten

     ↑ 

  3. Templates/Struktur

    • Theme Basis
      • layout
        • css
          • reset
            • plugins
              • tripoli.layout.css
              • tripoli.negative.css
              • tripoli.type.css
              • tripoli.visual.css
            • yui
              • reset.css
              • reset-min.css
            • css-reset.css
            • reset.css
            • tripoli.base.css
            • tripoli.base.ie.css
            • tripoli.css
            • tripoli.ie.css
            • tripoli.simple.css
            • tripoli.simple.ie.css
          • ie.css
          • print.css
          • single.css
          • style.css
        • images
      • custom-login
        • custom-login.css
      • extra
        • db-error.php
      • js
        • quicktags.js
      • wp-root-tipps
        • .htaccess
        • robots.txt
        • wp-config.php
      • style.css
      • 404.php
      • blog.php
      • comments.php
      • footer.php
      • functions.php
      • header.php
      • image.php
      • index.php
      • page.php
      • search.php
      • searchform.php
      • sidebar.php
      • single.php
      • screenshot.png
      • xx_XX.pot
      • os.xml
      • license.txt
  4. integrierte Funktionen

    1. WordPress Konstanten
      • WordPress arbeitet vorallem seit Version 2.6 sehr stark mit Konstanten, was die Zugriffe und die Entwicklung erleichtert. Es werden die notwendigen Konstanten geprüft und ggf. gesetzt, wenn sie nicht existent sind
    2. fb_textdomain
      • Ermöglicht die Mehhsprachigkeit von Themes.
      • Es kann lediglich der Schlüssel 'basis' in define( 'FB_BASIS_TEXTDOMAIN', 'basis' ); umbenannt werden. Alle anderen Schlüssel werden automatisch über die Konstante gezogen.
    3. wp_count_posts, wp_count_terms, get_comment_count, wp_count_comments
      • zählt die Beiträge im Blog
      • mehr Informationen in diesem Beitrag
    4. Widget Unterstützung
      • In WordPress gibt es eine Möglichkeit, neue Funktionen in die Oberfläche zu integrieren, ohne manuell in den Code einer Template-Datei eingreifen zu müssen. Das Aktivieren und Positionieren wird per Drag&Drop erledigt. Dies erleichtert dem Anwender das Anpassen des Sidebar an die persönlichen Anforderungen enorm. Diese Technologie nennt man Widget.
      • mehr Informationen in diesem Beitrag
    5. Ähnliche Beiträge von Tags fb_get_related_posts()
      • Ähnliche Beiträge zum ggw. Beitrag auf Basis der Tags
      • mehr Informationen in diesem Beitrag
    6. Ähnliche Beiträge auf Basis Kategorie fb_get_cat_related_posts()
      • Ähnliche Beiträge zum ggw. Beitrag auf Basis der Kategorie
      • mehr Informationen in diesem Beitrag
    7. fb_in_category
      • Wenn ein Beitrag aus einer Unterkategorie ist, dann wird TRUE zurückgegeben.
    8. get_children_pages
      • Liefert die Seiten zu einer Oberseite zurück.
    9. Themespezifisches Login fb_custom_login()
      • Für ein personalisiertes Loginformular, wird mit dem Hook
        add_action('login_head', 'fb_custom_login');
        die CSS Datei "custom-login.css" aus dem Ordner custom-login eingebunden. Die dafür nötige Datei und der Ordner liegen dem Theme bei.
      • mehr Informationen in den Beiträgen 1 und 2
    10. Breadcrumb Navigation fb_breadcrumb_nav()
      • Um das WordPress Basis Theme um eine Breadcrumb Navigation (Brotkrumen Navigation) zu erweitern, binde den folgenden Code an die entsprechende Stelle ein:
      • if ( function_exists('fb_breadcrumb_nav') ) fb_breadcrumb_nav();
      • mehr Informationen in diesem Beitrag
    11. Werbung via benutzerdefinierten Feldern fb_example_link()
      • mehr Informationen in diesem Beitrag
    12. Beiträge direkt in Beitrag/Seite ausgeben, via Shortcode fb_get_posts()
      • Der Loop von WP direkt in einem Beitrag/Seite mit Hilfe der Shortcodes
      • Ein einfaches Beispiel, mehr nicht
      • Beispiel Shortcode für die 2 Parameter: [posts num="5" cat="1"]
    13. Shortcodes für verschlüsselte E-Mail-Adresse fb_secure_mail()
      • Verschlüsselt die Mail-Adresse mit Hilfe der Unicode-Codierung
      • mehr Informationen zur Idee in diesem Beitrag
      • mehr Informationen zum Shortcode in diesem Beitrag
      • Beispiel Shortcode für die 2 Parameter: [sm mailto="foo@bar.com" txt="here is my mail"]
    14. Shortcodes inaktiv in Beitrag/Seite schalten fb_kill_shortcodes()
      • Löscht alle Shortcodes in Beitrag/Seite
      • Shortcode: [KSC][/KSC]
    15. Shortcodes in Widgets aktivieren
      • Dazu ist die Aktiverung der Standardfunktion via Hook nötig.
      • add_filter('widget_text', 'do_shortcode');
    16. Auslesen der User IP fb_getUserCountry()
      • gibt dass Land zurück, wo die IP her ist
    17. Cachen der CSS Dateien fb_css_cache_buster()
    18. Tagcloud als Dropdown-Menü fb_dropdown_tag_cloud()
      • Tags im Dropdown-menu
    19. Kategorien aus Loop filtern fb_exclude_category()
      • IDs der Kategorien im Array vergeben und sie sind nicht mehr im Loop zu finden
    20. Entfernen von /category/ zu besseren Suchmaschinenoptimerung fb_fix_slash()
      • Entfernt /category/ aus den Permalinks
    21. Add Link Attribute
      • Fügt Attribute zum Link-Tag hinzu.
    22. Regular Expression für Links fb_add_thickbox()
      • Fügt Links mit Bilddateien eine Klasse hinzu, die das Öffnen mit Thickbox ermöglichen
      • mehr Informationen in diesem Beitrag
    23. Zeitverzögertes Veröffentlichen der Beiträge im Feed fb_pulish_later_on_feed()
      • mehr Informationen in diesem Beitrag
    24. Kein Pingen der eigenen Beiträge fb_noself_ping()
      • Verhindert das lästige Pingen der eigenen Beiträge im Blog.
    25. Markup der Kommentare fb_theme_comment()
      • Gibt das Markup und Inhalt des einzelnen Kommentars zurück
    26. Kommentare, Pings und Trackbacks zählen fb_comment_type_count()
      • mehr Informationen in diesem Beitrag
    27. Prüfung für doppelten meta-robots tag fb_comment_paging_noindex_meta()
      • Verhindert Double Content bei Pagination von Kommentaren
      • mehr Informationen in diesem Beitrag
    28. Werbung nur für Besucher von Suchmaschinen zeigen fb_fromasearchengine()
      • Mithilfe dieser Funktion lassen sich Werbebanner oder Textlinks auf Besuchergruppen von Suchmaschinen eingrenzen. Der Funktionsaufruf fb_fromasearchengine() wertet den Referrer jedes Besuchers aus und weitere Suchmaschinen können individuell in der functions.php des Themes erweitert werden.
      • Beispiel:
        if ( function_exists('fb_fromasearchengine') ) { 
        	if ( fb_fromasearchengine() ) {
        		PLATZHALTER FÜR HTML-/BANNER-CODE etc.
        	} 
        }
    29. Entfernen des more Tags fb_remove_more_anchor()
      • Löscht den more-Tag im Content.
      • Aktiviere dazu in der functions.php den Hook add_filter('the_content', 'fb_remove_more_anchor');
      • Hinweis: Um den more-Tag nicht zu beachten, kann man auch im Template des Themes die Variable $more nutzen und entsprechend setzen: global $more; $more = 1;
    30. automatisches Löschen der Kommentardaten fb_delete_comments_data()
      • Es werden mit der Funktion fb_delete_comments_data() automatisiert alle Kommentardaten der letzten 15 Tage gelöscht. Dieser Automatismus verringert die Größe der Datenbank und schützt gegen zukünftige Probleme in Bezug auf die Datenschutzbedingungen Deutschlands.
    31. Alternativer Doctype fb_alternate_doctype()
      • Diverse Anforderungen erwarten es, dass man in verschiedenen Seiten einen alternativen Doctype benutzen muss. Die Funktion ermöglicht das und übergibt als Doctype den Wert in der Variable $newdoctype.
      • Der Aufruf kann einfach in einem Template genutzt werden und so speziell auf eine bestimmte Anforderung mit Hilfe der Conditional Tags genutzt werden.
      • Beispiel:
        if ( is_page('about') ) fb_alternate_doctype(); 
    32. TinyURL erstellen fb_gettinyurl()
      • Einfache Funktion zum Erstllen einer TinyURL mit Hilfe der API von TinyURL.com
      • mehr Informationen in diesem Beitrag von René Ade
    33. Filter Rewrite rule fb_filter_rewrite_attachment()
      • Kann die Performance steigern, wenn ungünstige Permalinks aktiviert sind
      • Der Inhalt kann via var_dump( get_option('rewrite_rules') ); ausgeben werden
      • Zum Nutzen einfach die beiden Filter auskommentieren
    34. Useragent prüfen fb_agent()
      • Auf Useragent prüfen und entsprechend reagieren
      • beispielsweise um Stylesheets für bestimmte mobile Clients zu laden
      • Beispiel:
        if ( (fb_agent("iPhone") != FALSE) || (fb_agent("iPod") != FALSE) ) {
        	...
        }
    35. Tags zum Post fb_meta_tags()
      • Liest die Tags zum Post aus und gibt sie als keywords zum Meta-Tag aus.
      • Beispiel:
        <?php if (function_exists('fb_meta_tags') ) { fb_meta_tags(); } ?>
      • Ausgabebeispiel:
        <meta name="keywords" content="test,bueltge," />
    36. Excerpt filtern fb_clean_excerpt()
      • zeigt beispielhaft das Filtern von JavaScript und CSS im Excerpt
    37. Excerpt filtern 2 fb_trim_excerpt()
      • entfernt [...] aus dem excerpt oder setzt eine Alternative
    38. nofollow-Attribut im Kommentar-Autor-Link filtern fb_strip_nofollow()
      • entfernt das nofollow-Attribut aus dem Link des Kommentar-Autors
    39. Prüfe Seite und Unterseiten fb_has_parent()
      • Prüft, ob die aktuelle Seite, oder deren Unterseiten der ID entspricht bzw. zugehört.
      • if ( function_exists('fb_has_parent') ) {
        	if ( fb_has_parent($wp_query->post, 3) ) { ... }
        } ;
    40. Weiterleitung seitens WP deaktivieren template_redirect
      • Entfernt die Funktion der Canonical URL, seit WP 2.3 im System
      • Zum Aktivieren den Hook auskommentieren
    41. Kontaktfeld hinzufügen fb_add_twitter_contactmethod
      • Fügt ein Feld zu den User-Einstellungen im Backend hinzu, seit WP 2.9 im System
      • Beispiel: add_filter( 'user_contactmethods', 'fb_add_twitter_contactmethod', 10, 1 )
    42. User mit einer speziellen Rolle wählen fb_getUsersByRole
      • Rückgabe der User-IDs für eine Rolle, die man im Parameter $role übergibt
      • Beispiel: $userid = fb_getUsersByRole( 'author' )
    43. Entfert typographische "widows" in Seitentiteln fb_getUsersByRole
      • Ein "widow" ist in der Typographie ein kleines Wort, welches auf einer Zeile dargestellt werden.
      • Die Funktion filtert die letzten Wörter so, dass für Leerzeichen das &nbsp; übergeben wird.
      • Mit diesem Trick stellen Browser keinen Break dar.

     ↑ 

  5. Tipps für das WP Hauptverzeichnis

    Für eine reibungslose und sichere Installation liegen dem WordPress Basis Theme eine modifizierte

    • wp-config.php,
    • robots.txt und eine
    • .htaccess bei.

    Entscheide selbst über die Ideen und Lösungen in diesen Dateien oder Suche im Netz nach Erklärungen.

     ↑ 

  6. Hinweise zum Reset des Stylesheet

    Das Theme beinhaltet verschidene Möglichkeiten um das Stylesheet der Browser auf einene gemeinsamen Stand zu setzen. Entscheide dich für eine Lösung und nutze die Links um mehr über die unterschiedlichen Ansätze das interne Stylesheet der Browser auf einen gemeinsamen Standard zu setzen.

    1. CSS Framework Tripoli

      Das im WordPress Basis Theme zur Verwendung inkludierte CSS Framework Tripoli vereinheitlicht die Darstellung der CSS Befehle vom Browser Internet Explorer 5 bis zum Firefox 3. Die Idee wurde umgesetzt von David Hellsing.

    2. Reset CSS von Eric Meyer

      Die Reset CSS von Eric Meyer setzt alle internen Browserstyles zurück und benötigt eine komplett neue Definition der dort enthaltenen Stile.

      The reset styles given here are intentionally very generic. There isn't any default color or background set for the body element, for example. I don't particularly recommend that you just use this in its unaltered state in your own projects. It should be tweaked, edited, extended, and otherwise tuned to match your specific reset baseline. Fill in your preferred colors for the page, links, and so on.

    3. Yahoo User Interface Reset

      The foundational YUI Reset CSS file removes and neutralizes the inconsistent default styling of HTML elements, creating a level playing field across A-grade browsers and providing a sound foundation upon which you can explicitly declare your intentions.

    4. Ed Eliot´s Reset - Weniger ist mehr

      Viele Reset-CSS gehen einfach zu weit. Eliot´s Lösung beachtet nur ein Auswahl an Elementen, die eine sehr häufige Nutzung haben.

    5. Kurz und Schlank

      * {
      margin: 0;
      padding: 0;	
      }

     ↑ 

  7. Download

     ↑ 

  8. Danke

     ↑ 

  9. Projekt Team

     ↑ 

  10. Lizenz

    Basis Theme © 2007 – 2009 ist lizensiert unter GNU General Public License:

    This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

     ↑