[gelöst] eigene CSS für eigenen Inhaltstyp
am 02.10.2014 - 17:23 Uhr in
Hallo Zusammen,
ich hab einen Inhaltstyp mitarbeiter mit node--mitarbeiter.tpl.php erstellt. Alle Inhalte vom Typ mitarbeiter lasse ich in einem View anzeigen. Soweit funktioniert es wie gewünscht.
Jetzt würde ich gerne das Layout der node--mitarbeiter.tpl.php mit einer eigenen CSS-Datei gestalten.
Ich hab den Hinweis gefunden CSS-Dateien mit drupal_add_css einzufügen.
<?php
drupal_add_css('/sites/all/themes/test/css/mitarbeiter.css',
array('group' => CSS_THEME, 'type' => 'external'));
?>
Aber wo soll ich den Code reinschreiben, das hab ich leider nicht verstanden. Ich hab es am Anfang der node--mitarbeiter.tpl.php probiert, ohne Erfolg.
Wo finde ich einen Anleitung wie man das macht? Momentan stehe ich auf dem Schlauch und bin für jeden Hinweis dankbar.
Auf welche Art und Weise gestaltet Ihr das Layout der Inhaltstypen und Views?
- Anmelden oder Registrieren um Kommentare zu schreiben
Den Code bzw. die CSS Styles
am 02.10.2014 - 23:53 Uhr
Den Code bzw. die CSS Styles schreibst du in deine neu angelegte mitarbeiter.css, die muß dann in dem Ordner test/css liegen, die Einbindung erfolgt dann über drupal_add_css, wird also nur geladen wenn deine node--mitarbeiter.tpl.php aufgerufen wird.
Vielleicht ist das auch eine Lösung für dich, ich habe das Modul grad gefunden und noch nicht selbst getestet, aber es steht bei das es pro Node oder Contenttype angewendet werden kann.
https://www.drupal.org/project/cpn
Grüße Jenna
Hallo Jenna, danke für deine
am 03.10.2014 - 00:06 Uhr
Hallo Jenna,
danke für deine Antwort. Mir fehlt nur die Info in welche Datei ich den drupal_add_css Aufruf reinschreiben soll und ob er so richtig ist wie ich ihn oben habe.
Viele dstar
Du brauchst kein eigenes
am 03.10.2014 - 00:21 Uhr
Du brauchst kein eigenes Template, wenn du nur CSS Code des Content Type ändern willst.
Drupal gibt im Body Tag CSS Klassen aus. Beispiel:
<body class="html not-front not-logged-in one-sidebar sidebar-first page-node page-node- page-node-1301 node-type-event i18n-de" >
Bei dir steht dann vermutlich irgendwo...
<body class="node-type-mitarbeiter" >
Damit kannst du dein Content Type direkt ansprechen:
.node-type-mitarbeiter {
dein Code
}
Den Code kannst du in dein aktuell, verwendetes Theme packen.
WEBTRANSFORMER
Zitat: Du brauchst kein
am 03.10.2014 - 00:41 Uhr
Du brauchst kein eigenes Template, wenn du nur CSS Code des Content Type ändern willst.
Ich glaube ihm geht es darum diese css nur zu laden wenn der entsprechende Content Type aufgerufen wird?
Sieh dir doch mal dieses Tutorial an, da ist ein passendes Beispiel bei:
http://www.kotori.de/wissen/drupal-7-stylesheets-javascript-einbinden.html
Grüße Jenna
Danke für eure Antworten.
am 03.10.2014 - 11:07 Uhr
Danke für eure Antworten. Mein Problem ist, das ich noch das richtige Konzept im Umgang mit Drupal finden muss.
Die Lösung von Goekmen ist eigentlich genau richtig. Über die css-Klassen view-mitarbeiter und node-mitarbeiter kann ich ja auch schon die Elemente formatieren. Damit ist mein Problem gelöst.
Danke!
Allerdings war meine ursprüngliche Idee so wie es Jenna verstanden hat, die css-Datei nur zu laden wenn der Content Type aufgerufen wird.
Ich würde jetzt trotzdem gerne noch wissen wie das mit dem drupal_add_css Aufruf funktioniert.
Den Aufruf drupal_add_css hab ich in die node--mitarbeiter.tpl.php geschrieben:
<?php
drupal_add_css('/sites/all/themes/test/css/mitarbeiter.css',
array('group' => CSS_THEME, 'type' => 'external'));
?>
<article class="node-<?php print $node->nid; ?> <?php print $classes; ?> clearfix"<?php print $attributes; ?>>
<?php if ($title_prefix || $title_suffix || $display_submitted || $unpublished || !$page && $title): ?>
//weiterer Code ...
Allerdings wird die css-Datei nicht geladen. Cash hab ich schon gelöscht.
Ist das die falsche Stelle an der ich versuche die css-Datei zu laden oder hab ich grundsätzlich einen Denkfehler beim einbinden der css-Datei?
vielen Dank
Das laden der CSS Datei über
am 03.10.2014 - 11:11 Uhr
Das laden der CSS Datei über drupal_add_css gehört in die preprocess_node-Funktion in der template.php im eigenen Theme. Im Zen-Theme, in der template.php, kann man nachsehen, wie man diese auf eine Funktion pro Node-Typ aufbohrt (gut dokumentiert). Dann kannst Du Deinen Code dort einstellen.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
[gelöst]
am 03.10.2014 - 13:24 Uhr
Super, dass war noch der fehlende Hinweis.
Danke an euch drei.
Viele grüße
Zitat: Das laden der CSS
am 03.10.2014 - 13:29 Uhr
Das laden der CSS Datei über drupal_add_css gehört in die preprocess_node-Funktion in der template.php im eigenen Theme
Der Meinung war ich eigentlich auch, in dem obigen Link Beispiel wird es so beschrieben:
Drupal stellt hierzu drei Funktionen zur Verfügung (je eine für CSS, JavaScript und RSS-XML), die in die Templatedatei des jeweiligen Inhaltstyps direkt hinter die Renderfunktion des Headers gesetzt werden; wenn wir z. B. einen Inhaltstyp wissensartikel im Theme meintheme definiert haben, so bearbeiten wir im Theme-Directory (/sites/all/themes/meintheme/) das Template page--wissensartikel.tpl.php.
@wla
Ist es gleichgültig welchen Weg man wählt, ist mir jetzt auch nicht mehr so ganz klar?
Grüße Jenna
Das allgemeine Einbinden von
am 03.10.2014 - 19:09 Uhr
Das allgemeine Einbinden von CSS geschieht im Header und der wird in Drupal 7 über die html.tpl.php gesteuert. Da kann man also auch ansetzen. Wenn eine CSS-Datei aber allgemein eingebunden werden soll, mache ich das über die .info-Datei im Theme. Wird es dann speziell, wie im vorliegenden Fall, packe ich das in eine Nodetyp-spezifische preprocess-Funktion in der template.php im Theme.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *