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

CSS Klassen in der Template-Datei definieren lassen

Eingetragen von drupaler3000 (78)
am 20.07.2008 - 13:17 Uhr in
  • Themes & Theming
  • Drupal 5.x

Ich möchte, dass meine template.php datei verschiedene CSS Klassen erstellt, jenachdem zu welchen Taxonomys der jeweilige Node gehört.

Also wenn man z.b 2 Kategorien festlegt, und eine davon trifft zu soll der node die in der template definierte klasse erhalten.

Mein Ziel ist es unterschiedliche Hintergrundbilder mit CSS zu definieren, jenachdem welche Kategorien für den Node festgelegt wurden.

Die Variablen die mir zur Verfügung stehen, sehen auszugsweise so aus:

[2] => Array
  (
     [#type] => select
     [#title] => Genre
     [#default_value] => Array ( )
     [#options] => Array
       (
          [] => - None selected –
          [0] => stdClass Object
             (
               [option] => Array
                  (
                    [7] => Genre1
                   )
              )
          [1] => stdClass Object
             (
               [option] => Array
                  (
                    [8] => Genre2
                  )
             )
          [2] => stdClass Object
             (
               [option] => Array
                  (
                    [12] => Genre3
                  )
             )
          [3] => stdClass Object
             (
               [option] => Array
                  (
                    [11] => Genre4
                  )
             )
          [4] => stdClass Object
             (
               [option] => Array
                  (
                    [9] => Genre5
                  )
             )
          [5] => stdClass Object
             (
               [option] => Array
                  (
                    [10] => Genre6
                  )
             )
          [6] => stdClass Object
             (
               [option] => Array
                  (
                    [13] => Genre7
                  )
             )
       )
    [#description] =>
    [#multiple] => 0
    [#size] => 0
    [#weight] => 0
    [#theme] => taxonomy_term_select
    [#required] => 0
    [#post] => Array ( )
    [#programmed] =>
    [#tree] => 1
    [#parents] => Array
       (
         [0] => taxonomy
         [1] => 2
        )
    [#processed] =>
    [#attributes] => Array ( )
    [#input] => 1
    [#name] => taxonomy[2]
    [#id] => edit-taxonomy-2
    [#value] => Array ( )
    [#sorted] => 1
  )

‹ Karteireiter Karte Aktivem Menüpunkt eine Klasse zuweisen ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Wie immer du auf den Code

Eingetragen von dawehner (2639)
am 20.07.2008 - 14:16 Uhr

Wie immer du auf den Code gekommen bist, aber das ist eindeutig der Code eines Formulars und nicht der des geladenen Nodes

Ich werde nun einfach eine neue CSS klasse, welche den TID beinhaltet einführen

<?php
<?php phptemplate_comment_wrapper(NULL, $node->type); ?>

<?php $tag = array_pop($node->taxonomy); $tag = $tag->tid;
<
div id="node-<?php print $node->nid; ?>
" class="node<?php if ($sticky) { print ' sticky'; } ?><?php if (!$status) { print ' node-unpublished'; } ?> <?php print 'taxonomy-.'. $tag ; ?>">

<?php print $picture ?>

<?php if ($page == 0): ?>
  <h2><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title ?></a></h2>
<?php endif; ?>

  <?php if ($submitted): ?>
    <span class="submitted"><?php print t('!date — !username', array('!username' => theme('username', $node), '!date' => format_date($node->created))); ?></span>
  <?php endif; ?>

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

  <div class="clear-block clear">
    <div class="meta">
    <?php if ($taxonomy): ?>
      <div class="terms"><?php print $terms ?></div>
    <?php endif;?>
    </div>

    <?php if ($links): ?>
      <div class="links"><?php print $links; ?></div>
    <?php endif; ?>
  </div>

</div>
?>

Schon hast du die Taxonomy Klasse taxonomy-$tid und kannst damit arbeiten
--------------
Blog www.freeblogger.org: Deutscher IRC-Channel: irc.freenode.net #drupal.de ... Jabber-me: dwehner@im.calug.deXING

  • Anmelden oder Registrieren um Kommentare zu schreiben

bei mir sieht die klasse

Eingetragen von drupaler3000 (78)
am 21.07.2008 - 12:20 Uhr

bei mir sieht die klasse dann so aus:

.taxonomy-47

Dabei ist die Zahl, die Nummer des zuletzt erstellten und hier ausgewählten Taxonomys.

Das Problem ist, dass ich 3 Felder mit Free Tagging habe, und jedes mal dann natürlich neue Taxonomys ausgewählt werden könnten.

Nun ist es so dass ich ein bestimmtes Hintergrundbild nur anzeigen möchte, wenn alle 8 "Kategorien-Felder" ausgefüllt wurden, es müssen nämlich nicht alle ausgefüllt werden.

Wie wäre es, wenn man mit php einfach die Anzahl der Listenpunkte in einem Div Element zählen könnte?
Oder man ändert das "Node/add - Formular" so, dass das Script die Felder zählt, die ausgefüllt wurden und diese Zahl gleichzeitig mit in die SQL-Datenbank mitgespeichert wird, wenn das nicht schon der Fall ist.

Jedenfalls möchte ich:

1. Die Anzahl der Taxonomys zählen und als Klasse anzeigen (vielleicht mit dem Befehl "count" ?)
2. bei den Taxonomys, bei den man zwischen festgelegten Taxonomys auswählen kann, jenach auswahl eine explizite eigene Klasse (was mit dem obigen Code auch funktionieren würde, aber nur ohne Free Tagging Taxonomys)

Es gäbe höchstens die Möglichkeit, vielleicht den Code oben einzeln für jedes Feld anzubieten, dass heißt pro ausgefülltes Feld eine entsprechende Klasse erstellen lassen. Das wäre auch sehr praktisch.

P.S.: Für alle die KEINE Free Tagging Taxonomys verwenden ist der obige Code genau das Richtige um differenzierte Klassen jenach den taxonomys zu erstellen, aber sobald man auch Free Tagging nutzt,ist die Zahl für jeden Begriff der neuzugeordnet immer 1 höher, und dann ist der Code in manchen Fällen nicht sehr praktisch.

  • Anmelden oder Registrieren um Kommentare zu schreiben

1.: <?php$count =

Eingetragen von dawehner (2639)
am 21.07.2008 - 12:26 Uhr

1.:

<?php
$count
= 'taxonomy-count-'. count($node->taxonomy);
?>

Damit kannst du weiterarbeiten
--------------
Blog www.freeblogger.org: Deutscher IRC-Channel: irc.freenode.net #drupal.de ... Jabber-me: dwehner@im.calug.deXING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke! Genau das hat mir

Eingetragen von drupaler3000 (78)
am 21.07.2008 - 12:45 Uhr

Danke! Genau das hat mir noch gefehlt!!!!

Damit habe ich dann alle Möglichkeiten, und kann wunderbar mit den Taxonomys auch grafisch arbeiten!!!

So simpel und doch genial.

  • Anmelden oder Registrieren um Kommentare zu schreiben

CSS / Sektionen

Eingetragen von CyberCore (139)
am 21.07.2008 - 12:46 Uhr

Hallo,

kann man da nicht auch die Snippets aus dem Handbuch nutzen?
Habe das bei Taxonomy noch nicht ausprobiert, aber evtl. hilft es ja weiter:

Customising the full page layout and sections based on node type
Customising the full page layout and sections using CSS and unique BODY Class & IDs
Customising the full page layout and sections based on path

http://drupal.org/node/46006

Gruß Andreas

----------------------------------------
Nur Wer Selbst Brennt, Kann Das Feuer In Anderen Entfachen! - http://cybercore.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich kann aber leider immer

Eingetragen von drupaler3000 (78)
am 22.07.2008 - 14:43 Uhr

Ich kann aber leider immer noch nicht auf jedes Taxonomy zugreifen.

Bis jetzt habe ich die Möglichkeit die Anzahl der Taxonomys zu verwerten. Der frühere Code ist leider nutzlos wenn man Free Tagging nutzt. Deshalb bräuchte ich noch einen Code um wirklich für jedes einzelne Taxonomy gleichzeitig eine entsprechende Klasse zu haben.

Danke schon mal im Voraus. Ich habe versucht, den ersteren Code entsprechend zu verändern, aber bekomme immer Fehlermeldungen.

Ich habe mir ungefähr sowas vorgestellt:

foreach($$vocabulary) {
$output = '<div class="' . $tid . '">' $taxonomy . '</div>'
return $output;
}

oder sowas:

<div class="<?php print $taxonomy->$tid ?>"></div>

Auf jeden Fall sollte jede Taxonomy id einmal als Klasse erscheinen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe jetzt selber eine

Eingetragen von drupaler3000 (78)
am 22.07.2008 - 19:40 Uhr

Ich habe jetzt selber eine Lösung gefunden.

Mit dem folgenden Code kann man die Taxonomys aufsplitten und jedes Taxonomy mit einer Klasse oder Id versehen:

// split out taxonomy terms by vocabulary
function yourthemename_print_terms($nid) {
     $vocabularies = taxonomy_get_vocabularies();
     $output = '<ul>';
     foreach($vocabularies as $vocabulary) {
       if ($vocabularies) {
         $terms = taxonomy_node_get_terms_by_vocabulary($nid, $vocabulary->vid);
         if ($terms) {
           $links = array();
           $output .= '<div class="' . $vocabulary->name . '-' . $term->name . '">' . '<li>' . $vocabulary->name . ': ';
           foreach ($terms as $term) {
             $links[] = l($term->name, taxonomy_term_path($term), array('rel' => 'tag', 'title' => strip_tags($term->description)));
           }
           $output .= implode(', ', $links);
           $output .= '</div>' . '</li>';
         }
       }
     }
     $output .= '</ul>';
     return $output;
}

Mit diesem Code erhält man eine Auflistung der Taxonomys und gleichzeitig eine gleichnamige Klasse und kann damit arbeiten.

Leider gibt es bei mir trotzdem noch das Problem, dass der erste Taxonomy bei mir keine Klasse bekommt, und alle nachfolgenden Klassen bekommen an zweiter Stelle die Taxonomy, die davor hätte da sein müssen:

Taxonomy 1 alias "Gebäude" = Haus
Taxonomy 2 alias "Frucht" = Apfel
Taxonomy 3 alias "Möbelstück" = Tisch

Auflistung der Klassen ist dann leider falsch:

.gebäude-
.frucht-haus
.tisch-apfel

Seht ihr mein Problem? Tritt bei anderen das Problem auch auf? Ich weiß nicht woran es liegen könnte...

  • 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 2 Wochen 16 Stunden
  • Hey danke
    vor 2 Wochen 1 Tag
  • Update: jetzt gibt's ein
    vor 2 Wochen 2 Tagen
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 6 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 6 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 3 Tagen
  • In der entsprechenden View
    vor 3 Wochen 3 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 3 Tagen
  • gelöst
    vor 6 Wochen 13 Stunden
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 1 Tag

Statistik

Beiträge im Forum: 250233
Registrierte User: 20452

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

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