Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Themes & Theming ›

even und odd für blöcke

Eingetragen von loomie (63)
am 09.10.2009 - 11:05 Uhr in
  • Themes & Theming
  • Drupal 6.x

in Drupal gibt es ja überall diese wunderbaren Klassen bei Views und Fields und Tabellen und so weiter:

<div class="views-row-1 views-row-odd views-row-first">
<div class="views-row-2 views-row-even">
<div class="views-row-3 views-row-odd">
<div class="views-row-4 views-row-even">
<div class="views-row-5 views-row-odd">
<div class="views-row-6 views-row-even">
<div class="views-row-7 views-row-odd">

super praktisch für CSS und so weiter, wenn man nur jedes zweite objekt selektieren möchte.

ich brauche das ganze aber für blöcke:

<div id="region-right">
    <div id="block-sharethis-sharethis" class="block block-sharethis ODD">
    <div id="block-tagadelic-1" class="block block-tagadelic EVEN">
    <div id="block-menu-menu-category" class="block block-menu ODD">
</div>

weis jemand wie man das schön elegant einbauen kann?

‹ Inhaltstypen Template mouseover effekt ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Schreibe ein Template, das theme_blocks überschreibt.

Eingetragen von traxer (1009)
am 09.10.2009 - 11:45 Uhr

Schreibe ein Template, das theme_blocks überschreibt.

--
XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

ja, gut aber wie kann ich

Eingetragen von loomie (63)
am 09.10.2009 - 12:07 Uhr

ja, gut aber wie kann ich denn theme('block', $block) irgendwelche Klassen übergeben?

  • Anmelden oder Registrieren um Kommentare zu schreiben

geht das überhaupt?

Eingetragen von loomie (63)
am 09.10.2009 - 13:11 Uhr

geht das überhaupt?

  • Anmelden oder Registrieren um Kommentare zu schreiben

block.tpl.php

Eingetragen von stBorchert (6003)
am 09.10.2009 - 13:46 Uhr

Nur mal so zur Info: die block.tpl.php enthält bereits eine Variable, mit der man "even/odd" ausgeben kann:

api.drupal.org schrieb

$block_zebra: Outputs 'odd' and 'even' dependent on each block region.
$zebra: Same output as $block_zebra but independent of any block region.

hth,

 Stefan

--
sei nett zu Deinem Themer

Wir brauchen Deine Stimme für die DrupalCon 2010 oder 2011 in Berlin!

  • Anmelden oder Registrieren um Kommentare zu schreiben

loomie schrieb ja, gut aber

Eingetragen von traxer (1009)
am 09.10.2009 - 14:03 Uhr
loomie schrieb

ja, gut aber wie kann ich denn theme('block', $block) irgendwelche Klassen übergeben?

Brauchst du nicht. Du machst einfach div-Suppe:

<div class="<?php print (++$counter%2) ? 'odd' : 'even'; ?>">
  <?php print theme('block', $block) ?>
</div>

stBorchert schrieb

Nur mal so zur Info: die block.tpl.php enthält bereits eine Variable, mit der man "even/odd" ausgeben kann:

Wenn man keine Template Suggestions für die einzelnen Blöcke verwendet, dann ist das auch eine Möglichkeit.

--
XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

ah, vielen dank. zum erstem

Eingetragen von loomie (63)
am 09.10.2009 - 15:06 Uhr

ah, vielen dank.

zum erstem mal konnte mir in diesem forum geholfen werden :)

  • Anmelden oder Registrieren um Kommentare zu schreiben

traxer schrieb Wenn man

Eingetragen von stBorchert (6003)
am 09.10.2009 - 16:40 Uhr
traxer schrieb

Wenn man keine Template Suggestions für die einzelnen Blöcke verwendet, dann ist das auch eine Möglichkeit.

Auch bei der Verwendung von spezielleren Block-Templates (was Du vermutlich mit Template Suggestions meintest) sind oben genannten Variablen verfügbar.
Somit ist der zusätzliche PHP-Code schlichtweg überflüssig/unnötig.

loomie schrieb

zum erstem mal konnte mir in diesem forum geholfen werden :)

Hm, solche Aussagen finde ich immer ziemlich befremdlich. Besonders, da Dir hier schon häufiger geholfen wurde.

 Stefan

--
sei nett zu Deinem Themer

Wir brauchen Deine Stimme für die DrupalCon 2010 oder 2011 in Berlin!

  • Anmelden oder Registrieren um Kommentare zu schreiben

stBorchert schrieb traxer

Eingetragen von traxer (1009)
am 10.10.2009 - 21:37 Uhr
stBorchert schrieb
traxer schrieb

Wenn man keine Template Suggestions für die einzelnen Blöcke verwendet, dann ist das auch eine Möglichkeit.

Auch bei der Verwendung von spezielleren Block-Templates (was Du vermutlich mit Template Suggestions meintest) sind oben genannten Variablen verfügbar.
Somit ist der zusätzliche PHP-Code schlichtweg überflüssig/unnötig.

Ich habe die Funktionalität, die du angesprochen hast, einfach nicht an dieser Stelle erwartet. Weil sie IMHO nicht dort hingehört. Für mich als Quelltextfreak ist es nicht Aufgabe des Blocks, zu bestimmen ob er gerade oder ungerade ist. Das sollte außerhalb der Möglichkeiten des einzelnen Blocks liegen.

Aber stimmt schon: wenn die Funktionalität da ist, dann braucht man sehr gute Gründe, sie nicht zu verwenden.
--
XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

even/odd

Eingetragen von stBorchert (6003)
am 10.10.2009 - 23:45 Uhr

traxer schrieb
Für mich als Quelltextfreak ist es nicht Aufgabe des Blocks, zu bestimmen ob er gerade oder ungerade ist.
Macht er auch gar nicht :-).
Und zwar wird das in diesem Fall von der Funktion template_preprocess_block getan; der Block (bzw. das entsprechende Template) stellt die Variable nur zur Ausgabe zur Verfügung.

hth,

 Stefan

--
sei nett zu Deinem Themer

Wir brauchen Deine Stimme für die DrupalCon 2010 oder 2011 in Berlin!

  • Anmelden oder Registrieren um Kommentare zu schreiben

traxer schrieb ... ist es

Eingetragen von traxer (1009)
am 11.10.2009 - 09:41 Uhr
traxer schrieb

... ist es nicht Aufgabe des Blocks, zu bestimmen ob er gerade oder ungerade ist.

Wow, das habe ich aber sowas von blöd formuliert, das darauf natürlich die Antwort

stBorchert schrieb

Macht er auch gar nicht :-).

kommen muss. Was ich eigentlich meinte war daß es in der Hand des Block-Templates liegt, diese Information zu nutzen, nicht zu nutzen, oder sogar zu verfälschen. Wenn man ein einziges Block-Template verwendet, dann ist das kein Problem. Wenn man aber viele Block-Templates verwendet, dann muss man (wenn man seine Entscheidung über die Verwendung von odd, even, etc. ändert) alle Block-Templates ändern. Das ist unhandlich und fehleranfällig.

--
XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

gibts auch ne möglichkeit

Eingetragen von loomie (63)
am 12.10.2009 - 12:58 Uhr

gibts auch ne möglichkeit "first" und "last" als klasse ein zu fügen?

eigentlich brauche ich nur "only_child"

  • Anmelden oder Registrieren um Kommentare zu schreiben

Re: gibts auch ne möglichkeit

Eingetragen von traxer (1009)
am 12.10.2009 - 13:04 Uhr

<div class="
  <?php print (($counter == 0) ? 'first' : ' '); ?>
  <?php print (($counter + 1  == count($list)) ? 'last' : ' '); ?>
  <?php print ((count($list) == 1) ? 'only_child' : ' '); ?>
  <?php print (++$counter%2) ? 'odd' : 'even'; ?>"
>
  <?php print theme('block', $block) ?>
</div>

--
XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

preprocess

Eingetragen von stBorchert (6003)
am 12.10.2009 - 13:17 Uhr

Öhm, dann doch lieber in der template.php die Funktion template_preprocess_block überschreiben und dort die neuen Variablen ($block_position, $block_count) dem Template zur Verfügung stellen.
Ist irgendwie sauberer.

hth,

 Stefan

--
sei nett zu Deinem Themer

Wir brauchen Deine Stimme für die DrupalCon 2010 oder 2011 in Berlin!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Re: preprocess

Eingetragen von traxer (1009)
am 12.10.2009 - 13:48 Uhr
stBorchert schrieb

Öhm, dann doch lieber in der template.php die Funktion template_preprocess_block überschreiben ...

Ich meine ich habe schon einige Argumente genannt, warum ich meine Herangehensweise für sauberer halte. Hier kommt noch eines: template_preprocess_block geht von der Annahme aus, das die Blöcke in der Reihenfolge ausgegeben werden, in der sie die Funktion template_preprocess_block durchlaufen. Ich verlasse mich nicht gerne auf solche Annahmen.

--
XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

preprocess

Eingetragen von stBorchert (6003)
am 12.10.2009 - 14:04 Uhr
traxer schrieb

Ich meine ich habe schon einige Argumente genannt, warum ich meine Herangehensweise für sauberer halte.

Die Argumente sind jedoch nicht schlagkräftig.
Ja, Du kannst im Block-Template die Variablen ändern. Jedoch nur für den Block, den das gerade betrifft. Nicht für alle anderen Blöcke.
Und nein, die Variante über theme_block ist definitiv nicht sauberer.

traxer schrieb

Hier kommt noch eines: template_preprocess_block geht von der Annahme aus, das die Blöcke in der Reihenfolge ausgegeben werden, in der sie die Funktion template_preprocess_block durchlaufen.

template_preprocess_block kennt überhaupt keine Reihenfolge. Die Funktion wird beim Rendern jedes Blocks für jeden Block einzeln aufgerufen. Somit ist es für die Funktion vollkommen unerheblich, wo bzw. in welcher "Reihenfolge" der Block aufgerufen wird.

traxer schrieb

...Ich verlasse mich nicht gerne auf solche Annahmen.

Du vertraust also nicht dem sehr wohl funktionierenden Code sondern bastelst Dir eigenen womöglich fehlerhafte Lösungen? Ok.

hth,

 Stefan

--
sei nett zu Deinem Themer

Wir brauchen Deine Stimme für die DrupalCon 2010 oder 2011 in Berlin!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Re: preprocess

Eingetragen von traxer (1009)
am 12.10.2009 - 21:54 Uhr
stBorchert schrieb

Die Argumente sind jedoch nicht schlagkräftig.

Aber das muss man mir doch auch sagen, sonst rede ich mir hier den Mund fusselig.

stBorchert schrieb

Du kannst im Block-Template die Variablen ändern. Jedoch nur für den Block, den das gerade betrifft.

Das ist ja genau das schlimme daran.

stBorchert schrieb

Und nein, die Variante über theme_block ist definitiv nicht sauberer.

Genau meine Meinung; auch wenn theme_block in Drupal 6 rausgeflogen ist und du wahrscheinlich das Drupal-6-Äquivalent block.tpl.php gemeint hast.

stBorchert schrieb

template_preprocess_block kennt überhaupt keine Reihenfolge.

Tut aber so als ob es die Reihenfolge kennen würde; dazu ist die erste Zeile

<?php
static $block_counter = array();
?>
da.

stBorchert schrieb
traxer schrieb

...Ich verlasse mich nicht gerne auf solche Annahmen.

Du vertraust also nicht dem sehr wohl funktionierenden Code sondern bastelst Dir eigenen womöglich fehlerhafte Lösungen?

Ich vertraue dem Code, sonst wäre ich schon längst weg von Drupal. Aufgrund der unzureichenden Dokumentation ist es allerdings oft schwer, zu entscheiden ob ein bestimmtes Verhalten so gewollt ist, oder nur zuällig (aufgrund der aktuellen Implementierung) zu Stande gekommen ist. Ich bin da eher defensiv und schiebe es auf eine Eigenheit der derzeit aktuellen Implementierung.

--
XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe nur den Post vor

Eingetragen von quiptime (4972)
am 12.10.2009 - 23:05 Uhr

Ich habe nur den Post vor meinem hier gelesen. Es stimmt. Bei naeherer Betrachtung ist bei D6 die Implementierung der Blockfunktionalitaet an einigen Stellen etwas eigenwillig.

------------------------
Quiptime Group

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • 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?
Weiter

Neue Kommentare

  • Inzwischen sind wir bei
    vor 2 Tagen 1 Stunde
  • Migrieren von D7 auf D8/ D10/ D11
    vor 2 Tagen 17 Stunden
  • melde mich mal wieder, da ich
    vor 7 Wochen 6 Tagen
  • Hey danke
    vor 8 Wochen 15 Stunden
  • Update: jetzt gibt's ein
    vor 8 Wochen 1 Tag
  • Hallo, im Prinzip habe ich
    vor 8 Wochen 5 Tagen
  • Da scheint die Terminologie
    vor 8 Wochen 5 Tagen
  • Kannst doch auch alles direkt
    vor 9 Wochen 3 Tagen
  • In der entsprechenden View
    vor 9 Wochen 3 Tagen
  • Dazu müsstest Du vermutlich
    vor 9 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250235
Registrierte User: 20462

Neue User:

  • marouane.blel
  • capilclinic
  • Quabzibboter

» 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 16 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