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

[gelöst] Farbiger Menüeintrag/andere H1-Farbe auf Produktdetailseite je nach Produktmerkmal

Eingetragen von Netzhexe (45)
am 13.11.2012 - 00:59 Uhr in
  • Themes & Theming
  • Drupal 7.x

Hallo Welt,

ich finde das hier kniffelig, aber vermute, dass ich da einfach nur zuwenig weiß. Also:

Ich habe einen kleinen Commerce Kickstart-Shop. Jedes Produkt gehört einer von drei Serien an, das ist einfach ein Merkmal des Inhaltstyps "Product Display". Die drei Serien sind Unterpunkte in meinem Hauptmenü.

Ich möchte nun auf der Detailseite jedes Produktes die Farbe der H1 je nach Serie, zu der das Produkt gehört, anpassen, und die Serie im Menü farbig hervorheben. Der Eintrag hat aber keine active-Tag, und auch im content habe ich ja keinen Marker, der mir sagt, auf welche Serie sich das Produkt bezieht...

Wie kriege ich so einen Marker da rein?? Eine simple Klasse auf irgendeiner Containerebene über dem Menü würd's ja schon tun. Aber ich steh da wie der Ochs vorm Berg.

Vielen Dank für eure Tipps!

Nächtliche Grüße
Anna~

‹ Context / Theming Problem is_front - is_node ? [gelöst] Span mit User-ID zu Username hinzufügen ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Du könntest über die

Eingetragen von wla (9461)
am 13.11.2012 - 09:45 Uhr

Du könntest über die preprocess_page-Funktion in der template.php in Deinem Theme dem body-Tag eine passende Klasse geben, die Du dann in CSS benutzen kannst.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Super! Woher weiß ich...

Eingetragen von Netzhexe (45)
am 14.11.2012 - 12:08 Uhr

Hey Werner, vielen vielen Dank! Das war genau der Ansatz, den ich gesucht hatte.

Jetzt hab ich nur noch ein Problem: Woher weiß ich, wie die Variable heißt, deren Existenz und Inhalt ich überprüfen will? Ich vermute, es versteckt sich irgendwo in den Weiten des $node Objektes...

Es ist ein Textfeld namens "field_series" am Inhaltstyp "product_display". Ich möchte mit isset() prüfen, ob diese Variable existiert (ist ja nicht auf allen Seiten der Fall) und dann per switch sagen, tu diese oder jene Klasse an mein body tag. Müsste so gehen, oder? Außer dass ich eben nicht weiß, wie die Variable heißt. Wie finde ich das denn raus?

Vielen Dank schonmal
Anna~

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hilfreich ist hier das Devel

Eingetragen von Sense (1559)
am 14.11.2012 - 12:46 Uhr

Hilfreich ist hier das Devel Modul, damit kannst Du dir dann eine Debugausgabe anzeigen lassen:

<?php
function THEME_preprocess_page(&$vars) {
 
dpm($vars);
}
?>

Wenn Du die Funktion angelegt hast musst Du den Cache leeren.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hmmmmm...

Eingetragen von Netzhexe (45)
am 15.11.2012 - 00:35 Uhr

Hmmmmm... also, eine Menge gelernt habe ich heute auf jeden Fall. Das Devel-Modul ist sehr spannend, danke für den Tipp!

Allerdings steh ich immer noch irgendwo aufm Schlauch %-) Der dpm-Befehl spuckt mir viele hübsch krumosortierte Variablen aus, denen ich aber auch nicht entnehmen kann, wie ich sie per PHP anspreche. Und so eine grundsätzliche Erklärung zu Krumo hab ich gerade auch nicht gefunden. Grübel...??

Kann mir bitte nochmal jemand auf die Sprünge helfen? Danke!

Jetzt dann müde Grüße
Anna~

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich hab's fast!

Eingetragen von Netzhexe (45)
am 15.11.2012 - 10:12 Uhr

Guten Morgen,

jetzt hab ich's fast... :-) Ich kann in meiner theme_preprocess_page Funktion den Inhalt des entsprechenden Feldes abfragen. ABER... in dieser Funktion kann ich keine Klasse dem body tag hinzufügen. (Oder?!)

Wie kriege ich das nun in die Funktion theme_preprocess_html übergeben?

Dankedankedanke
Anna~

  • Anmelden oder Registrieren um Kommentare zu schreiben

Sieh Dir mal das an. Beste

Eingetragen von wla (9461)
am 15.11.2012 - 10:16 Uhr

Sieh Dir mal das an.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wenn Du es dem Body

Eingetragen von Sense (1559)
am 15.11.2012 - 10:17 Uhr

Wenn Du es dem Body hinzufügen willst musst das Ganze in der HOOK_preprocess_html() Funktion ablaufen. HOOK_preprocess_page() ist dafür nicht geeignet.

  • Anmelden oder Registrieren um Kommentare zu schreiben

wla schriebSieh Dir mal das

Eingetragen von Sense (1559)
am 15.11.2012 - 10:28 Uhr
wla schrieb

Sieh Dir mal das an.

Das gilt aber nur für Drupal 6, in D7 ist es nunmehr über HOOK_preprocess_html() umsetzbar.

Hier der Code, den Du benötigst:

<?php
function THEME_preprocess_html(&$vars) {
  if (
$irgendwas == 'irgendwas') {
   
$vars['classes_array'][] = 'new-class';
  }
}
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Leider nein...

Eingetragen von Netzhexe (45)
am 15.11.2012 - 10:42 Uhr

Es sieht so aus, als stünde mir in THEME_preprocess_html nur page zur Verfügung, nicht aber node... Mit anderen Worten, der Code, der mir in THEME_preprocess_page die richtige Variable ausspuckt, macht in THEME_preprocess_html gar nichts.

:-\ Nur um sicherzugehen, dass ich keinen Flüchtigkeitsfehler drin habe, hier mein Code:

<?php
function kerns_preprocess_html(&$vars) {
 
dpm($vars);
    if (isset(
$vars['node'])) {
       
$node = $vars['node'];
       
$value = field_get_items('node', $node, 'field_series');
    }
    if (isset(
$value[0])) {
        switch (
$value[0]['value']) {
            case
"tuebingen-publications-in-prehistory":
           
$vars['classes_array'][] = "tpp";
            break;

            case
"tuebinger-monographien-zur-urgeschichte":
           
$vars['classes_array'][] = "tmu";
            break;
           
            case
"the-archaeology-of-jebel-al-buhais":
           
$vars['classes_array'][] = "ajb";
            break;
        }
    } else {
        echo
"not set!";
    }
}

?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Kann ich leider direkt nicht

Eingetragen von Sense (1559)
am 15.11.2012 - 10:55 Uhr

Kann ich leider direkt nicht beantworten, welche Variablen bzw. Arrays Keys zur Verfügung stehen, alternativ sollte das hier funktionieren:

<?php
function kerns_preprocess_html(&$vars) {
 
dpm($vars);
  if (
arg(0) == 'node' && is_numeric(arg(1)) {
   
$node = menu_get_object(); // or node_load(arg(1))
   
if ($node->type == 'node-type') {
     
$value = field_get_items('node', $node, 'field_series');
    }
  }
   
  if (isset(
$value[0])) {
    switch (
$value[0]['value']) {
      case
'tuebingen-publications-in-prehistory':
       
$vars['classes_array'][] = 'tpp';
        break;

      case
'tuebinger-monographien-zur-urgeschichte':
       
$vars['classes_array'][] = 'tmu';
        break;
          
      case
'the-archaeology-of-jebel-al-buhais':
       
$vars['classes_array'][] = 'ajb';
        break;
    }
  } else {
   
dpm('not set!');
  }
}
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Funktioniert super

Eingetragen von Netzhexe (45)
am 16.11.2012 - 08:32 Uhr

Zauberhaft! Funktioniert genau so wie ich's brauche (außer dass ich natürlich 'node-type' in meinem Fall noch durch 'product_display' ersetzen musste).

Auf menu_get_object etc. wäre ich noch eine ganze Weile nicht von selbst gekommen. Vielen, vielen Dank!

Freut sich riesig und bastelt jetzt weiter
Anna~

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

Statistik

Beiträge im Forum: 250233
Registrierte User: 20450

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 11 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