Hintergrund eines Nodes bei bestimmter Taxonomy verändern
am 29.11.2014 - 19:50 Uhr in
Hallo,
ich habe eine Taxonomy Namens "Seitenkategorie". Es gibt "intern" und "extern". Alle meine Inhaltstypen können entweder "intern" oder "extern" sein. Alles mit "extern" wird öffentlich angezeigt, alles mit "intern" wird nur Usern mit Account angezeigt.
Das Ziel ist nun, eine optische Trennung anhand dieser Taxonomy. Alle Inhaltstypen die "intern" sind, sollen z.B. einen hellblauen Hintergrund bekommen. Und das auch sowohl beim Anrisstext auf der Startseite, als auch beim kompletten Anschauen des Inhaltes.
Habe es bisher versucht über Templates zu lösen, aber bin gescheitert. Ist auch mühsam, da ich für jeden Content-Type ein eigenes Template schreiben müsste. Und ich habe viele Inhaltstpyen!
Ein brauchbares Modul hatte ich dann auch nicht gefunden.
Gibt es eine einfache Lösung? Freue mich über Anregungen :-)
Viele Grüße
Topf
- Anmelden oder Registrieren um Kommentare zu schreiben
Hast Du das Modul Theme Key
am 29.11.2014 - 21:49 Uhr
Hast Du das Modul Theme Key schon angeschaut?
https://www.drupal.org/project/themekey
Es erlaubt unterschiedliche Themes nach unterschiedlichen Kriterien.
Unterscheidung nach Referenz auf ein Taxonomy Term habe ich noch nicht getestet, aber evt. geht das ja auch.
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
montviso schriebHast Du das
am 30.11.2014 - 13:50 Uhr
Hast Du das Modul Theme Key schon angeschaut?
Hatte ich schon probiert. Ist aber leider nicht wirklich brauchbar, weil sich ja das ganze Theme ändert. Es sollen aber z.B. auf der Startseite erkennbar sein, ob es Interne oder Externe Taxonomy hat.
Und bei Views greift das Themekey auch leider nicht.
Die einzige Regel die man da dann ja machen kann ist im Anhang zu sehen.
Mach es doch mit CSS. Wenn
am 30.11.2014 - 14:05 Uhr
Mach es doch mit CSS.
Wenn dein Theme z.B. eine page.tpl.php enthält, dann kannst du dort in der Regel auch den Node-Type abfragen.
Je nach Node-Type lädtst du dann zusätzlich eine bestimmte CSS-Datei, in der der Hintergrund so gesetzt ist, wie du das haben willst.
Das löst aber nur die Hintergrundfrage bei den "vollständigen" Inhalten.
Drupal Video-Tutorials
torfnase schriebWenn dein
am 30.11.2014 - 14:19 Uhr
Wenn dein Theme z.B. eine page.tpl.php enthält, dann kannst du dort in der Regel auch den Node-Type abfragen.
Der node-type allein reicht nicht. Es gibt eine Taxonomy für jeden Node-Type. Also entweder "intern" oder "extern". Diese Taxonomy wird öfters gewechselt, z.B. um Dokumente erst "intern" zu bearbeiten und dann später extern zugänglich zu machen. Wüsste nicht wie ich das mit CSS lösen kann.
Du kannst doch auch alle
am 30.11.2014 - 14:58 Uhr
Du kannst doch auch alle Informationen über die angezeigte Node laden und dann entscheiden, welches CSS-File du laden willst, bzw. wie der Hintergrund aussehen soll.
Das ist nicht so schwierig.
Schau dir an, wie die Variablen aussehen, wenn du die Node geladen hast, ungefähr so
<?php
$bl_node=node_load("34");
dsm($bl_node);
?>
zum Durchsuchen der ganzen Arrays kannst du search_krumo verwenden.
DSM kommt aus dem Devel Modul.
Drupal Video-Tutorials
Hintergrund eines Nodes bei bestimmter Taxonomy verändern
am 30.11.2014 - 15:28 Uhr
Es gibt ja schon verschiedene Ansätze ( Module ) der Markierung bestimmter Zustände eines Nodes. Ich bin mir sicher wenn du auf Drupal org richtig unter den Modulen suchst wirst du bestimmt einen Ansatz finden. Ein Module gibt es bestimmt schon der eine CSS Markierung setzt wenn der Node noch in Bearbeitung ist.
Nun wie die alle heißen weiß ich nun nicht mehr.
Dynamic Background
am 30.11.2014 - 16:28 Uhr
Eine Möglichkeit, das mit einem Modul zu lösen:
Mit https://www.drupal.org/project/dynamic_background gibt es u.a. die Möglichkeit z.B. Hintergründe mit einer View zu verbinden, aber auch:
Context - The context extension allows administrators to select uploaded images base on different contexts using the context module. Such contexts as path, role, node type or taxonomy and may more conditions.
Solche Darstellungsprobleme
am 30.11.2014 - 16:50 Uhr
Solche Darstellungsprobleme lassen sich in der Regel nicht mit einem Modul lösen, dafür sind sie viel zu speziell.
Ich würde sagen: Da ist etwas Phantasie gefragt und dann bekommt man das ziemlich einfach in den Griff, eine mögliche Alternative habe ich ja oben schon aufgezeigt.
Einen schönen ersten Advent :-)
Berthold Lausch
Drupal Video-Tutorials
Das sehe ich anders, der
am 30.11.2014 - 17:17 Uhr
Das sehe ich anders, der modulare Aufbau ist ja gerade eine Stärke Drupals. Ich habe das Dynamic Background auf verschiedenen Installationen im Einsatz und sonderlich "speziell" ist das Problem nicht, da ja nur die Unterscheidung angemeldet oder Gast gegeben ist.
Wenn es mit Modul nicht
am 30.11.2014 - 17:44 Uhr
Wenn es mit Modul nicht klappt, könnte man die Aufgabe natürlich auch mit JS/jQuery lösen.
Also wenn ein bestimmter Div-Container den Text "Intern" hat, dann sei die Background-Farbe abweichend.
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
Ich habe auf einer privaten
am 30.11.2014 - 17:57 Uhr
Ich habe auf einer privaten Seiten, auf der bereits Dynamic-Background installiert ist, noch das Modul Context hinzu installiert, was die Option im Anhang ermöglicht (Background für eine spezifische Rolle). Die Möglichkeit scheint also gegeben.
Ich finde die Idee von unterschiedlichen Hintergründen für Gast und eingeloggten User sehr charmant - danke dafür! - werde ich am Montag in unserem Intranet testen, ob es wirklich funktioniert und wenn ja, dort umsetzen.
Aber natürlich, lehrreicher ist es, so etwas selbst im Template umzusetzen (nur hat man nicht immer Zeit - und dann kommen die fantastische Möglichkeiten zum Einsatz, die die Community von Drupal bereitstellt).
Finde die Vorschläge, für so
am 01.12.2014 - 09:19 Uhr
Finde die Vorschläge, für so einen Darstellungsproblem gleich 2 oder mehr Module zu installieren, völlig fehl am Platze. Das geht doch nun wirklich einfach mit dem Template von Drupal. Die Frage ist, wie Du per CSS den Hintergrund ändern willst...
Beschäftige Dich lieber mit den diversen Templat_Preprocess-Funktionen, die dafür in Frage kommen (template_preprocess_html, template_preprocess_page, template_preprocess_node) - die sind für genau so etwas gedacht.
Auch wenn es die Möglichkeiten für Module bei Drupal gibt, sind sie meist nur die augenscheinlich einfachste Möglichkeit, bestimmte Anforderungen zu ermöglichen: installieren, irgendwas konfigurieren und fertig erscheint so schön einfacher, als sich auch noch mit PHP und Funktionen zu beschäftigen. Aber wenn man für jedes kleine Problemchen gleich Module installiert,ohne die anderen Möglichkeiten von Drupal zu nutzen (vielleicht auch aus Scheu, sich mit PHP und den drupal-Funktionen auseinandersetzen zu müssen), erschafft man sich nur ein "Drupal-Monster" aus sich gegenseitig doppelnden Modulen, die das Projekt zudem unnötig langsamer werden lassen.
Mein Appell: lass den Firlefanz mit dem Context Modul, nur um einen Hintergrund auf Basis der Userrolle oder der Taxonomy zu ändern. Dafür sind vielleicht 4 bis 5 Zeilen PHP-Code und eine 4 bis 5 Zeilen CSS nötig, nicht diverse Modulen mit tausenden von Zeilen Code.
Ich mache soetwas auch ganz
am 01.12.2014 - 10:37 Uhr
Ich mache soetwas auch ganz einfach über die entsprechende page.tpl-php .... Ich lade den Node (node_load) und frage dann den Taxo-Value ab. Je nach Value wird dann eine entsprechende CSS-Klasse ausgegeben.
Wie tobi schon sagte, sind das nur ein paar Zeilen Code ...
Drupal rockt!!!
Dankeschön für die vielen Lösungsansätze!
am 01.12.2014 - 12:39 Uhr
Dankeschön für die vielen Lösungsansätze!
Ich bin mir nicht sicher, aber viele Lösungsansätze machen nicht genau das was ich meinte.
Nochmal in Kürze:
- Es gibt viel verschiedene Inhaltstypen (ungefähr 10 Stück).
- Es gibt eine Taxonomy namens "Kategorie". Dort gibt es entweder "intern" oder "extern".
- Jeder Inhaltstyp hat das Feld "Kategorie" mit drin, d.h. man wählt beim erstellen von Inhalt aus, ob dieser "intern" oder "extern" sein soll.
- Ist Kategorie auf "intern" können nur angemeldete Nutzer den Beitrag sehen, ist er auf "extern" können ihn alle Nutzer sehen
Die Unterscheidung durch den Hintergrund soll überall anhand "intern/extern" visualisiert werden. Z.B. auf der Startseite, auf der alle neuen Inhalte in chronologischer Reihenfolge zu sehen sind, soll dann der jeweilige Inhalt die passende Hintergrundfarbe haben. Die Bilder im Anhang visualisieren das. Grün und rot sollen die Hintergrundfarben sein (Beispielhaft).
Aber auch wenn ich den Inhalt dann aufrufe, soll dieser mit einer Hintergrundfarbe versehen sein. Also wenn ich auf der Startseite auf "weiterlesen" klicke.
Das ganze soll auch bei Views gehen, denn auch diese gibt es extern und intern.
Der Grund für das ganze ist, dass viele Menschen mit Hilfe dieser Homepage Arbeiten, aber nicht alles soll die Öffentlichkeit sofort lesen können. Und da oft vergessen wurde, den Status richtig zu setzen, oder Menschen nicht sofort gesehen haben, ob das intern oder extern ist, sind viele Missverständnisse entstanden. Diese sollen somit beseitigt werden.
Hoffe, das war verständlich.
Ich bin nicht der fitteste in php und CSS, bin aber gerne bereit etwas darüber zu lernen. Ich muss mir die 9 Beiträge jetzt mal genauer anschauen :-)
@torfnase
Damit ändere ich doch dann den kompletten Seitenhintergrund, oder?
@Patrick
Ich habe schon länger gesucht, und nicht das passende gefunden. Vielleicht war meine Suchmethode auch nicht gut genug.
@gnuschichten
Bei dir ändert sich dann auch der komplette Seitenhintergrund, oder?
@montviso
JS/jQuery klingt so, als ob das funktioniert. Aber ist JavaScript da nicht übertrieben? Hat ja auch nicht jeder immer aktiviert.
@tobi & Ionit
Das hatte ich mir schon gedacht, dass es einfach mit php und css geht. Aber ich bin darin einfach noch nicht geübt genug, weswegen ich ja hier im Forum Hilfe suche ;-) Ich recherchiere auch gerne dazu, aber bisher wusste ich einfach noch nicht genau, wo ich ansetzen soll. Wenn es ein einfaches Modul gegeben hätte, wäre das auf jeden Fall zeitsparend gewesen.
Firlefanz Context
am 01.12.2014 - 15:00 Uhr
Ja - und der Firlefanz funktioniert sehr gut. Mehr lernst du natürlich, wenn du das ganze selbst im Template anpasst.
gnuschichten schrieb Ja - und
am 01.12.2014 - 15:09 Uhr
Ja - und der Firlefanz funktioniert sehr gut. Mehr lernst du natürlich, wenn du das ganze selbst im Template anpasst.
Ändert sich dann der gesamte Seitenhintergrund, oder nur der Hintergrund des jeweiligen Beitrags, so wie ich das in meinen Bildern visualisiert habe? Das ist mir nicht ganz klar.
Du hast in dem Modul ein
am 01.12.2014 - 15:12 Uhr
Du hast in dem Modul ein CSS-Selector, es ändert sich der Bereich, den du dort hinterlegst.
Hm, bin ein wenig
am 02.12.2014 - 16:58 Uhr
Hm, bin ein wenig überfordert.
Hab jetzt beide Module installiert (Dynamic Background & Context). Jetzt kann ich in den Einstellungen (Startseite » Verwaltung » Konfiguration » Benutzeroberfläche » Dynamic background) nur Bilder hochladen. Aber ich möchte ja nur die Hintergrundfarbe ändern.
Einfach keine Bilder hochladen und den CSS-Code entsprechend setzen? Hab das mal probiert, und die Einstellungen wie in den Screenshots vorgenommen, aber irgendwo muss ja noch der Trigger für diese Hintergrundfarben gesetzt werden. Diese Einstellung fehlt mir momentan.
Hallo, Wenn ich das umsetzen
am 02.12.2014 - 20:12 Uhr
Hallo,
Wenn ich das umsetzen müsste, dann würde ich folgendes tun:
1. Via Firebug mal inspizieren, ob die DIVs grundlegend identifizierbar sind, die ich mit einem andern Hintergrund versehen möchte.
2. Dafür sorgen, dass diese DIVs mit passenden Klassen versehen werden, dies über Drupal Preprocess Funktionen (googlen nach "Drupal Preprocess", z.B. das da), oder über ein Views Template pro Node
3. CSS richtig setzen
lg leda
"Du liebst es, Du brauchst es oder Du gibst es weg"
www.leda.ch
leda.ch schrieb1. Via
am 02.12.2014 - 21:09 Uhr
1. Via Firebug mal inspizieren, ob die DIVs grundlegend identifizierbar sind, die ich mit einem andern Hintergrund versehen möchte.
Anhand der DIVs kann ich das nicht erkennen. Soll ja über die Taxonomy gehen.
Hier Beispiele:
Extern
<div id="node-341" class="node node-event node-promoted node-sticky node-teaser contextual-links-region clearfix" about="/drupal/fzb" typeof="sioc:Item foaf:Document">…</div>
<div id="node-426" class="node node-prot node-promoted node-teaser contextual-links-region clearfix" about="/drupal/node/426" typeof="sioc:Item foaf:Document">…</div>
Intern
<div id="node-376" class="node node-how-to node-promoted node-sticky node-teaser contextual-links-region clearfix" about="/drupal/HTM" typeof="sioc:Item foaf:Document">…</div>
<div id="node-460" class="node node-page node-promoted node-teaser contextual-links-region clearfix" about="/drupal/node/460" typeof="foaf:Document">…</div>
<div id="node-458" class="node node-page node-promoted node-teaser contextual-links-region clearfix" about="/drupal/node/458" typeof="foaf:Document">…</div>
<div id="node-443" class="node node-m-a node-promoted node-teaser contextual-links-region clearfix" about="/drupal/node/443" typeof="sioc:Item foaf:Document">
Sehe da kein Muster...
Das meine ich ja: es geht in
am 02.12.2014 - 21:37 Uhr
Das meine ich ja: es geht in Schritt zwei darum, den zuvor alllgemein identifizierten DIVs die passenden Klassen erst zu verpassen. Für das sind die Preprocess-Funktionen da.
lg leda
"Du liebst es, Du brauchst es oder Du gibst es weg"
www.leda.ch
Topf schriebHm, bin ein
am 03.12.2014 - 10:25 Uhr
Hm, bin ein wenig überfordert.
Hab jetzt beide Module installiert (Dynamic Background & Context). Jetzt kann ich in den Einstellungen (Startseite » Verwaltung » Konfiguration » Benutzeroberfläche » Dynamic background) nur Bilder hochladen. Aber ich möchte ja nur die Hintergrundfarbe ändern.
Einfach keine Bilder hochladen und den CSS-Code entsprechend setzen? Hab das mal probiert, und die Einstellungen wie in den Screenshots vorgenommen, aber irgendwo muss ja noch der Trigger für diese Hintergrundfarben gesetzt werden. Diese Einstellung fehlt mir momentan.
@Topf: 'tschuldigung das ich mich so späte melde - ich habe unter drupalnoob.de/dynamic-background-das-tapetenwechsel-modul ein kleines Tutorial erstellt (falls Fehler auffallen, bin ich für einen Hinweis dankbar),
Und ja, das mittels Modul zu lösen, ist ein Overkill - da ich aber immer die Seiten für einige Super-Redakteure (die auch im begrenztem Rahmen an Theme etc. schrauben dürfen) bereitstelle, die aber natürlich keinen Zugriff auf den DocumentRoot haben, war der Einsatz in diesem Fall sinnvoll.
Das Auslösen eines Hintergrundes mittels Taxonomie-Begriff findest du unter admin/structure/context/add - hier unter Bedingung Taxonomie auswählen und einen Begriff auswählen.
montviso schrieb Hast Du das
am 03.12.2014 - 10:34 Uhr
Hast Du das Modul Theme Key schon angeschaut?
https://www.drupal.org/project/themekey
Es erlaubt unterschiedliche Themes nach unterschiedlichen Kriterien.
Unterscheidung nach Referenz auf ein Taxonomy Term habe ich noch nicht getestet, aber evt. geht das ja auch.
Wow, das kannte ich noch nicht, danke!
Macht nix, wenn das etwas
am 04.12.2014 - 17:01 Uhr
Macht nix, wenn das etwas dauert, ich hab auch nicht immer so viel Zeit.
Und ja, das mittels Modul zu lösen, ist ein Overkill [...]
Das Auslösen eines Hintergrundes mittels Taxonomie-Begriff findest du unter admin/structure/context/add - hier unter Bedingung Taxonomie auswählen und einen Begriff auswählen.
Da es ein Overkill ist, wäre es sinnvoller das so zu machen wie leda es vorschlägt? Ich habe alle rechte, weswegen das von daher kein Problem ist. Eher meine mangelnde Zeit^^
Ich habe kein "Struktur -> Context". Also weder im Admin-Menü, noch wenn ich den Pfad eingebe. Aber ich habe "Context" "Context UI" und "Context layouts" aktiviert. Hm, seltsam.
Versuche es mal über die
am 05.12.2014 - 09:40 Uhr
Versuche es mal über die Modulverwaltung - dort sollte auch ein Link zur Contex-Modul Konfiguration sein.
Die andere Frage kannst nur du selbst aufgrund deiner Skills und der Zeit, die die dafür zur Verfügung steht beurteilen.
gnuschichten schrieb Du hast
am 07.12.2014 - 17:52 Uhr
Du hast in dem Modul ein CSS-Selector, es ändert sich der Bereich, den du dort hinterlegst.
Das klappt bei mir leider nicht.
Was klappt:
Interne Artikel haben jetzt eine gewünschte Hintergrundfarbe.
Was nicht klappt:
Auf der Startseite werden alle Sachen die auf der Homepage zu finden nacheinander als Anrisstext hinzugefügt. D.h., wenn ich ein angemeldeter User bin, kommen da abwechselnd interne und externe Dinge. Und dort weiß ich nicht, wie ich das mit den geeignet mit CSS-Klassen lösen kann. Denn die einzelnen Beiträge haben zwar die richtige Taxonomy, aber das funktioniert nicht als Kontext-Bedingung. Ich hänge eine Visualisierung an, wie das auf der Seite aussehen soll.
Gibt es dafür mit dem "Firlefanz" (also Dynamic Background und Kontext) eine Lösungsmöglichkeit? Hab die Seite schon mit firebug untersucht, aber finde da keine Regelmäßigkeit.
Die Standard-Startseite hat
am 08.12.2014 - 09:13 Uhr
Die Standard-Startseite hat keine Taxonomie, deshalb kann es nicht funktionieren. So auf Anhieb, weiß ich nicht, wie das mit dem Modul zu lösen wären - eine selbsterstellte Startseite mit Views und/oder Panels wäre ein Lösungsansatz, der mir aktuell einfällt.
Es läst sich in der
am 08.12.2014 - 13:25 Uhr
Es läst sich in der template.php Deines Themes die Funktion hook_preprocess_node implementieren. Damit kannst Du dem Node eine Klasse mitgeben, die über die Taxonomie gesteuert wird. Dann überprüfen, ob das schon reicht. Sonst statt der Klasse beim Node eine Variable definieren und in der node.tpl.php in Deinem Theme diese Variable in eine Klasse beim Artikel-Tag umsetzen. Diese Klasse kannst Du dann mittels CSS für die Verwendung einer Hintergrundfarbe auswerten. Da das Artikel-Tag auch auf der Startseite verwendet wird, gibt es damit auch Möglich, die verschiedenen Teaser verschiedenfarbig zu kennzeichnen.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *