Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › FAQ ›

Kann man Blöcke themen?

Eingetragen von quiptime (4972) am 05.09.2007 - 22:02 Uhr in
  • Themes

Blöcke kann man themen. Die Vorgehensweise möchte ich mit einem Beispiel beschreiben.

Block-Template einbinden

Ausgangspunkt ist die Datei "block.tpl.php". In dieser Datei wird zum gewünschten Block-Template für den gewünschten Block verzweigt. Um diese Verzweigung zu definieren und das passende Template zu erstellen muss der Block bereits existieren. Der Dateiname für das neue Block-Template ist frei wählbar und sollte sinnvoller Weise mit dem Namen des Blockes kongruieren. Die Block-Template-Datei befindet sich im gleichen Ordner wie die Datei "block.tpl.php".

Hier der Beispielcode einer "block.tpl.php" für 2 Blöcke mit den Namen "Archiv" und "Service" zum verzweigen auf die Block-Templates:

<?php

if ( $block->module == 'views' && $block->delta == 'Archive' ) {
  include
'block-archive.tpl.php';
  return;
}

if (
$block->module == 'menu' && $block->delta == '65' ) {
  include
'block-service.tpl.php';
  return;
}

?>


<div id="block-<?php print $block->module .'-'. $block->delta; ?>" class="clear-block block block-<?php print $block->module ?>">

/* normaler Blockcode */

<?php if ($block->subject): ?>
  <h3><?php print $block->subject ?></h3>
<?php endif;?>

  <div class="content"><?php print $block->content ?></div>
</div>

Es wird in diesem Beispiel auf die beiden Block-Templates "block-archive.tpl.php" und "block-service.tpl.php" verzweigt.

Die notwendigen Angaben für block->module und block->delta entnimmt man dem HTML-Quellcode einer Seite mit den angezeigten Blöcken.

Block-Template erstellen

Um ein Block-Template zu gestalten beginnt man am besten mit dem Code des normalen Blockes.

Normaler Blockcode:

<div id="block-<?php print $block->module .'-'. $block->delta; ?>" class="clear-block block block-<?php print $block->module ?>">

<?php if ($block->subject): ?>
  <h3><?php print $block->subject ?></h3>
<?php endif;?>

  <div class="content"><?php print $block->content ?></div>
</div>

Block-Template gestalten

Naja, hier kann man so ziehmlich alles tun was man möchte. PHP-Code wird entsprechend gekennzeichnet.

Hinweis:
Im Block-Template kann man nicht alle Drupal-Variablen ansprechen die in den Node-Templates oder im Page-Template verfügbar sind.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das geht doch auch einfacher?

Eingetragen von poilf (16)
am 26.09.2007 - 07:17 Uhr

Bei Drupal 5 mache ich einfach eine block-service.tpl.php Datei in den Theme Ordner, Drupal benutzt die dann von selber für den Block mit dem Namen service.
Oder hab ich was falsch verstanden?

  • Anmelden oder Registrieren um Kommentare zu schreiben

...Ausgangspunkt ist die

Eingetragen von Tobias Bähr (4019)
am 26.09.2007 - 07:30 Uhr

...Ausgangspunkt ist die Datei "block.tpl.php". ....

http://kochazubi.net

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ja und?

Eingetragen von poilf (16)
am 26.09.2007 - 07:37 Uhr

Den Beitrag verstehe ich nicht.
Natürlich ist der Ausgang die block.tpl.php, aber die kann man auch einfach kopieren, in block-foobar.tpl.php umbenennen, alles darin veranstalten was man will und Drupal wird dann für den Block mit dem Namen foobar statt der block.tpl.php die block-foobar.tpl.php verwenden.
In dem Text da oben ist zusätzlich PHP Code um etwas hinzubekommen, was Drupal von sich aus macht.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wenn du das sagst wird es

Eingetragen von Tobias Bähr (4019)
am 26.09.2007 - 07:46 Uhr

Wenn du das sagst wird es wohl stimmen, ich hab das noch nicht ausprobiert! Dann weiss ich nicht warum du frage stellst, wenn du es weisst!

http://kochazubi.net

  • Anmelden oder Registrieren um Kommentare zu schreiben

poilf hat echt. Es geht

Eingetragen von bv (3924)
am 26.09.2007 - 07:55 Uhr

poilf hat echt. Es geht natürlich viel einfacher (siehe auch: http://www.drupalcenter.de/handbuch/4291). Wir sollten den Beitrag aus den FAQ entfernen, könnte irreführend sein...

--
bv - drupalcenter.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

Oder den Inhalt ändern. Ich

Eingetragen von poilf (16)
am 26.09.2007 - 08:08 Uhr

Oder den Inhalt ändern. Ich wäre niemals drauf gekommen das Drupal von selber nach Dateien sucht und man so ganz spezifisch nodes, comments & blocks umgestalten kann, wenn ich das nicht zufällig auf drupal.org aufgeschnappt hätte. Leider weiß ich auch die URL nicht mehr :(

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zu diesem Thema steht

Eingetragen von bv (3924)
am 26.09.2007 - 08:12 Uhr

Zu diesem Thema steht eigentlich alle im Benutzerhandbuch: http://www.drupalcenter.de/handbuch/4217

Darum brauchen wir es eigentlich nicht nochmal in den FAQ.

--
bv - drupalcenter.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

Nun, das Namensschema für

Eingetragen von florianr (122)
am 12.10.2007 - 23:14 Uhr

Nun, das Namensschema für die block.tpl Datei ist mir aber auch nach Studium des Handbuchs nicht ganz klar.
Ich habe einen Block, der von einer View erzeugt wurde, er heißt aktuelles6.
Aber mit einer Datei block-views-aktuelles6.tpl.php bin ich nicht weitergekommen, Wie müssen denn nun die block-xy.tpl.php Dateien benannt werden?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wie oft gibt es bei Drupal verschiedene Loesungen

Eingetragen von quiptime (4972)
am 01.11.2007 - 12:17 Uhr

Ich denke irritierend ist mein FAQ nicht.

Wie oft gibt es bei Drupal verschiedene Loesungen fuer eine Aufgabe. So grundlegend weicht mein FAQ nicht vom Handbuch ab: http://www.drupalcenter.de/handbuch/4291

Der Vorteil der von mir beschriebene Methode, eine Template-Datei fuer einen Block anzusprechen, ist die freie Wahl des Namens fuer die Block-Template-Datei. Ein weiterer Vorteil waere, das man mit der Abfrage zum includen weitere Bedingungen fuer die Verwendung eines Block-Template stellen kann - also beispielsweise das Block-Template nicht immer zwingend verwendet wird wenn es denn schon existiert.

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

HTML-Code des Viewblockes

Eingetragen von quiptime (4972)
am 01.11.2007 - 12:31 Uhr
florianr schrieb

Aber mit einer Datei block-views-aktuelles6.tpl.php bin ich nicht weitergekommen, Wie müssen denn nun die block-xy.tpl.php Dateien benannt werden?

@florianr,

der HTML-Code Deines Viewblockes hat vermutlich diesen Inhalt:

Damit sollte der Name "block-views-aktuelles6.tpl.php" korrekt sein und Drupal dieses Template auch finden. Wenn nicht pruefe bitte die Ubereinstimmung vom Block-HTML-Code (wie beispielsweise voran genannt) mit dem Template-Dateinamen.
 

Sorry, eventuell sage ich Dir nichts Neues.

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Konkretes Beispiel: $block->module $block->delta

Eingetragen von quiptime (4972)
am 29.03.2008 - 01:39 Uhr

Hier ein konkrtetes Beispiel um das Verständnis von $block->module und $block->delta zu verbessern.

Ausgangspunkt des Beipieles ist dieses Szneario:
Die User sollen einen separaten Block mit der Bezeichnung "Mein Konto" bekommen (damit hat man bessere Kontrolle was der Block zeigt - im Vergleich zum standardmäßssigen Accountblock).

Es wird in der Administration ein neues Menü angelegt. Name des Menü heißt "Mein Konto".

Danach habe ich in der Block-Konfiguration einen Block "Mein Konto", den man nach Bedarf einer Sidebar zuordnet.
Damit dieser noch leere Block überhaupt erst mal angezeigt wird geht man wieder zur Menükonfiguration und erstellt dem Menü "Mein Konto" irgendeinen Menüpunkt.
Hat man dies erledigt sollte der aktivierte und einer Sidebar zugeordnete neue Block auch angezeigt werden.

Nun kann man im HTML-Quellcode der Seite (der neue Block wird angezeigt) nach dem Codebereich dieses Blockes sehen. Beispiel HTML-Code solch eines Blockes:

<div id="block-menu-271" class="clear-block block block-menu">
  <h2>Mein Konto</h2>
    <div class="content">
      <ul class="menu">
        <li class="leaf"><a href="/taxonomy/term/55">Hilfe</a></li>
      </ul>
    </div>
</div

Uns interessiert id="block-menu-271".

Und hier wird nun eine gewisse Sinnlosigkeit sichtbar wenn man nach "Schema F", also ohne in der "block.tpl.php" explizit mit include eine Template-Datei mit eigenem Namen einzubinden, ein Template für den neuen Block erstellt.
Sinnlosigkeit?
Nach "Schema F" würde die Template-Datei für den neuen Block "block-menu-271.tpl.php" heißen. Und jetzt mal ehrlich. Wer weiß nach 14 Tagen bei einem Blick in das Theme-Verzeichnis wofür das Template "block-menu-271.tpl.php" zuständig ist.

Also erstelle ich ein Block-Template mit einem sinnvolleren Namen: "block-my-account.tpl.php" als Beispiel.

Jetzt wieder zurück zu id="block-menu-271".

Die Ziffer 271 ist bei jedem Block eine andere und kann nicht aus diesem Beipiel hier übernommen werden. Es geht nur um die Schematik.

Um in der "block.tpl.php" auf eine Template-Datei mit selbst gewähltem Namen umzuleiten wird die "block.tpl.php" so geändert:

<?php
if ( $block->module == 'menu' && $block->delta == '271' ) {
  include
'block-my-account.tpl.php';
  return;
}
?>


<div id="block-<?php print $block->module .'-'. $block->delta; ?>" class="clear-block block block-<?php print $block->module ?>">
  <?php if ($block->subject): ?>
    <h2><?php print $block->subject ?></h2>
  <?php endif;?>
  <div class="content"><?php print $block->content ?></div>
</div>

Im PHP Codebereich ist zu sehen wie id="block-menu-271" verwendet wird:

$block->module == 'menu'

$block->delta == '271'

------------------------------------------------------------------------------------------------------------------

Noch ein Beispiel zur Verwendung von $block->module und $block->delta.

Bei einem mit Views erstellten Block mit dem Namen "Archive" hätte man diesen HTML-Code:

<div id="block-views-Archive" class="clear-block block block-views"

Uns interessiert:

id="block-views-Archive"

Der Code in der "block.tpl.php" waere:

$block->module == 'views'

$block->delta == 'Archive'

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

@quiptime: Das geht in die

Eingetragen von ab2211 (550)
am 14.07.2008 - 00:43 Uhr

@quiptime: Das geht in die Richtung, die ich verstehe und suche, also die Benamung selbsterstellter Blöcke mit IDs. Allerdings, verstehe ich nicht das mit der Menükonfiguration, zumal ich gerade den Fall habe, dass eben ein solches "id="block-menu-123", nach Update, bei mir auftaucht und mir die Primary Links doppelt.

Wenn ich eine Block einer Sidebar zuweise, dann erscheint er doch schon...?! Vielleicht kann man das hier dahingehend noch erweitern bzw. anpassen?

Views habe ich noch nicht durch...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 22 Stunden 53 Minuten
  • Hey danke
    vor 1 Tag 17 Stunden
  • Update: jetzt gibt's ein
    vor 2 Tagen 11 Stunden
  • Hallo, im Prinzip habe ich
    vor 6 Tagen 21 Stunden
  • Da scheint die Terminologie
    vor 1 Woche 29 Minuten
  • Kannst doch auch alles direkt
    vor 1 Woche 4 Tagen
  • In der entsprechenden View
    vor 1 Woche 4 Tagen
  • Dazu müsstest Du vermutlich
    vor 1 Woche 4 Tagen
  • gelöst
    vor 4 Wochen 19 Stunden
  • Ja natürlich. Dass ist etwas,
    vor 4 Wochen 1 Tag

Statistik

Beiträge im Forum: 250233
Registrierte User: 20449

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 18 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association