TobbiVM

Platzhalter

Platzhalter, hier auch Placeholder genannt, sind in geschweifte Klammern stehende Bezeichnungen. Diese sind in allen editierbaren Seiten und allen Kategorie- und Artikeltemplates verwendbar. Diese Placeholder werden durch einen angegebenen Text und/oder Scriptcode ersetzt.
Im Gegensatz zu den xPlugins sind hier keine weiteren Einstellmöglichkeiten im Webend zu finden, um z. B. Farbe oder Größe zu ändern. Sie bestehn also aus festgelegten Zeichenfolgen bzw. fest vorgegebenen Scriptcode.
Eine Erweiterung der vorhandenen Placeholder kann einfach und schnell, in der Datei "/module/class/placeholder.class.php" vorgenommen werden.

placeholder.class.php

Im folgenden Beispiel sind schon ein mailto-Link-Generator, ein GooglePlus-Button und ein Facebook-Button eingefügt.

class placeholder
{

   // @var $_search array Placeholdernames
   static $_search = array();
   // @var $_replace array text/code to replace
   static $_replace = array();

   /**
    * Initializes the system-variable if still not available.
    */
   function __construct() {
   // Hier werden die entsprechenden Platzhalter MIT den geschweiften Klammern definiert
      self::$_search = array(
          '{mailTo}',
          '{shortname}',
          '{googlePlus}',
          '{facebook}');
  // Hier werden die entsprechenden Texte und/oder Scripte, in der Reihenfolge der
  // Platzhalter, angegeben.
      self::$_replace = array(
          '<a href="mailto:' . MAIL_SENDER . '">' . MAIL_SENDER . '</a>',
          URL_NAME,
          '<script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>' .
          '<g:plusone  size="tall" annotation="bubble" recommendations="true" align="left"></g:plusone>',
          '<div id="fb-root"></div>' .
          '<script>(function(d, s, id) {
            var js, fjs = d.getElementsByTagName(s)[0];
            if (d.getElementById(id)) return;
            js = d.createElement(s); js.id = id;
            js.src = \'https://connect.facebook.net/de_DE/sdk.js#xfbml=1&version=v2.12\';
            fjs.parentNode.insertBefore(js, fjs);
            }(document, \'script\', \'facebook-jssdk\'));</script>' .
           '<div class="fb-like"
              data-href="https://developers.facebook.com/docs/plugins/"
              data-layout="button" data-action="like" data-size="small"
              data-show-faces="true" data-share="true"></div>');
   }

   /**
    * replace Placeholder with given text/code in text
    * @param string $row Text of one row from the message
    * @param option $first Set the row on top-position if it true
    */
   public static function replace($text) {
      return (str_replace(self::$_search, self::$_replace, $text));
   }
   
   /**
    * Setting Variables in quickskin
    * @param $refPage pointer to Quickskin
    */
   public static function setPage($refPage) {
      for ($i= 0; $i < count(self::$_replace); $i++) {
         $refPage->assign(str_replace( ['{', '}'], '', self::$_search[$i]), self::$_replace[$i]);
      //echo str_replace( ['{', '}'], '', self::$_search[$i]);
      }
      //exit;
   }

}

Diese Placeholder sind leicht erweiterbar. Indem man die entsprechenden Einträge in den beiden Arrays vornimmt, können so viele neue, kleine Erweiterungen für deine Texte und Templates erstellt werden. Das weitere Design der Ausgabe kann einfach via CSS-Datei festgelegt werden.

Beachte:
Änderungen an bestehenden Einträgen haben Auswirkung auf alle Seiten und Templates in denen die entsprechenden Platzhalter verwendet werden!



Unterstützt von CMSimple  •  Gestaltet von TobbiVM