16.4.13

Blogger: Ein eigenes Template entsteht - Teil 7 - Einführung in Widgets III

Weiter geht's mit Widgets!

Im letzten Post haben wir ein Basis-Widget geschrieben - heute wird daraus etwas komplexeres, indem wir in das Widget weitere Includable einbauen.

Basis Widget

Zur Erinnerung - das ist das Basis-Layout mit unserem Widget vom letzten Post

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html>
<html>

 <head>
     <title><data:blog.pageTitle/></title>
<b:skin><![CDATA[
]]></b:skin>
</head>

<body>
<b:section id='main' class='main' >
    <b:widget id='Gadget1' type='Gadget' >
      <b:includable id='main'>
          <span>Mein Blog heißt:</span>
          <data:blog.title />
      </b:includable>
   </b:widget>
</b:section>
</body>

</html>

Wir diskutieren im folgenden nur das Widget selber:

  <b:widget id='Gadget1' type='Gadget' >
      <b:includable id='main'>
          <span>Mein Blog heißt:</span>
          <data:blog.title />
      </b:includable>
   </b:widget>

Includable

Ein Widget muss mindestens ein Includable mit der id='main' enthalten. Für einfache Widgets wird euch das auch reichen.

Komplexeren Widgets - wie das Blog-Widget - werden wir aber modular aufbauen, d.h. aus verschiedenen Includable 'Blöcken' zusammensetzen.

Ein zusätzlicher Includable Block würde so ausschauen:

  <b:widget id='Gadget1' type='Gadget' >
      <b:includable id='main'>
          <span>Mein Blog heißt:</span>
          <data:blog.title />
      </b:includable>
      <b:includable id='new'>
          <span>Ich bin neu</span>
      </b:includable>
   </b:widget>

Das neue Includable mit der id='new' ist gleich aufgebaut wie das Includable mit der id='main' - schreibt diese Erweiterung in euren Test-Blog und veröffentlicht sie.

Was seht ihr?

Include

Ihr seht nichts :). Andere Includable außer der Haupt-Includable werden nicht automatisch angezeigt.

Um die Includable mit der id='new' in eurem Blog zu sehen, müsst ihr sie in der Haupt-Includable aufrufen. Das geht mit dem sogenannten <b:include/>-Tag.

Ein <b:include/>-Tag ist ein weiterer Layout-Seiten-Tag. Ihr leitet den Tag mit dem Präfix <b: ein und dann kommt der Tag-Name, nämlich include. <b:include/>-Tags besitzen darüber hinaus Attribute, nämlich:

name
[erforderlich] Eine Kennung, über die ihr ein Includable Block aus dem Widget aufrufen könnt.
data
[optional] Das ist ein Datenelement, den ihr an den Includable Block weitergeleitet. Wozu ihr das braucht, werden wir uns später anschauen.
Beispiel

Rufen wir nun die Includable mit der id='new' in der Haupt-Includable auf:

  <b:widget id='Gadget1' type='Gadget' >
      <b:includable id='main'>
          <span>Mein Blog heißt:</span>
          <data:blog.title />
          <b:include name='new'/>
      </b:includable>
      <b:includable id='new'>
          <span>Ich bin neu</span>
      </b:includable>
   </b:widget>

Veröffentlicht dieses Widget und schaut euch das Ergebnis an. Es sollte nun ein neuer Text auf eurem Blog erscheinen Ich bin neu.

Erweiterung

Formulieren wir nun unsere Basis-Widget um und zwar definieren wir zwei weitere Includable, die den Text und den Blog-Titel enthalten.

  <b:widget id='Gadget1' type='Gadget' >
      <b:includable id='main'>
      </b:includable>
       <b:includable id='text'>
          <span>Mein Blog heißt:</span>
      </b:includable>
      <b:includable id='titel'>
          <data:blog.title />
      </b:includable>
  </b:widget>

Wie müssten nun die <b:include/>-Tags formuliert sein, um die beiden Includable in der Haupt-Includablen aufzurufen? Versucht es doch mal selber!

Die Lösung ist relativ einfach:

  <b:widget id='Gadget1' type='Gadget' >
      <b:includable id='main'>
       <b:include name='text'/>
       <b:include name='titel'/>
      </b:includable>
       <b:includable id='text'>
          <span>Mein Blog heißt:</span>
      </b:includable>
      <b:includable id='titel'>
          <data:blog.title />
      </b:includable>
  </b:widget>

Diese Schreibweise kommt euch jetzt vielleicht umständlich vor. Wenn wir später das Blog-Widget schreiben werdet ihr sehen, wie praktisch solche 'Blöcke' sind, um die Übersicht zu bewahren.

Alle Posts der Reihe

Ausblick

Heads up! Für Fragen stehen die Kommentare und mein Forum zur Verfügung - dort könnt ihr HTML problemlos posten. Für HTML in den Kommentaren schaut euch bitte diesen Post an.
Neuerer Post Älterer Post