[gelöst] Hook und Css
Eingetragen von loony (203)
am 21.07.2010 - 10:08 Uhr in
am 21.07.2010 - 10:08 Uhr in
Hab so ne peinliche anfänger Frage.
Weiss vieleicht einer wie ich ein CSS über einen hook (oder irgendwie auf eine andere art) einbinden kann und das standart CSS vom Theme überschreiben kann? Der Pfad zum CSS ist in einer DB hinterlegt. Das auslesen daraus ist kein Problem da dies in einer Variable gespeichert ist.
Mein Ziel ist es das Standart CSS vom Theme XYZ zu überschreiben. Kann mir dabei einer helfen?
Noch kurz zur Erleuterung weshalb das CSS in der DB ist. Da mehrere CSS zur Verfügung stehen, möchte ich über mein Frontend das ich programmiert habe, die einzelnen CSS auswählen können.
Ich danke schon mal für die Antworten. :)
Anhang | Größe |
---|---|
Die selectbox mit ein paar beispiel einträgen. | 17.7 KB |
- Anmelden oder Registrieren um Kommentare zu schreiben
drupal_add_css
am 21.07.2010 - 10:10 Uhr
Hallo.
Schau Dir mal die Funktion [api:drupal_add_css] an.
edit: und am Besten auch gleich noch [do:skinr Skinr]. Mit diesem Modul kann man nämlich für einzelne Elemente verschiedene Styles anlegen.
hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
geht leider nicht ganz.
am 21.07.2010 - 11:38 Uhr
geht leider nicht. :(
ich habe jetzt den Code
// gives the path to the css file starts at "sites/all/.."
$path = $css_table_array[$css_id]['path'];
// add the css
drupal_add_css($path);;
in die submit function gepackt. Durch das debuggen merkte ich das mir das Ubercartmodul einen strich durch die Rechnung macht und am schluss nochmals ein CSS added und mir somit mein CSS zurückstellt und ignoriert. :/
in der page.tpl hat die Variable styles mein css nich mit eingebunden. :(
haste dafür vieleicht eine lösung?
Soll diese CSS Datei denn
am 21.07.2010 - 11:49 Uhr
Soll diese CSS Datei denn generell in die Seite eingebunden werden?
sense-design | online solutions | Do not hack core!
Drupalcenter Verhaltensregeln | Threads bitte auf [gelöst] stellen.
ja soll sie aber soll
am 21.07.2010 - 11:52 Uhr
ja soll sie aber soll variabel bleiben. im page.tpl einpflegen wer nicht das problem, aber da darf ich nichts verändern. das ist die vorgae. xD
Du hast ja auch die
am 21.07.2010 - 12:08 Uhr
Du hast ja auch die Möglichkeit diese über die template.php einzubinden.
<?php
/**
* Implementation of hook_preprocess_page().
*/
function themename_proprocess_page(&$vars) {
drupal_add_css(path_to_theme() . '/css/yourcss.css', 'theme');
// Regenerate css
$vars['styles'] = drupal_get_css();
}
?>
sense-design | online solutions | Do not hack core!
Drupalcenter Verhaltensregeln | Threads bitte auf [gelöst] stellen.
Diese Idee hatte ich auch
am 21.07.2010 - 12:17 Uhr
Diese Idee hatte ich auch schon. Leider darf ich dies auch nicht. xD
Schlussentlich sollen 5 verschiedene themes ausgewählt werden können und 5 CSS. Alles was innerhalb von dem theme ist darf ich nicht brauchen also das page.tpl, template.php oder node.tpl etc nicht. nicht einmal das kern page.tpl. xD
mir bleibt also nichts anderes übrig als ein hook zu erstellen in meinem Modul? Wen dies der fall ist, wie würde das dan ausehen das mir dies nach dem Ubercartmodul eingebunden wird das CSS? in der Hirarchie muss das CSS zuoberst stehen um die Veränderungen/Styles übernemen zu können.
Würde ich dann folgendemaßen
am 21.07.2010 - 12:20 Uhr
Würde ich dann folgendermaßen machen:
<?php
/**
* Implementation of hook_init().
*/
function yourmodule_init() {
drupal_add_css(drupal_get_path('module', 'yourmodule') . '/yourcss.css');
}
?>
Die CSS-Datei musst Du dann im Modul Ordner ablegen, damit Sie geladen werden kann.
sense-design | online solutions | Do not hack core!
Drupalcenter Verhaltensregeln | Threads bitte auf [gelöst] stellen.
Skinr
am 21.07.2010 - 12:45 Uhr
Wie schon oben erwähnt: schau Dir mal [do:skinr Skinr] an.
So wie ich Deine Anforderungen verstehe, tut dieses Modul genau das, was Du haben möchtest.
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
@ sense deine lösung ist
am 21.07.2010 - 13:20 Uhr
@ sense
deine lösung ist super. es funktioniert noch nicht aber ich bin daran am arbeiten. im moment ist es so das ich zwar das css sehe welches ich eibindenmöchte in der variable $css in der Funktion selbst von drupal_add_css stehen alle css drin welche geladen werden. im page.tpl bei dieser zeile
<?php echo $styles ?>
sind alle css drin auser die ich mit drupal_add_css hinzugefügt habe aussert meine. :(
mein code sieht zurzeit so aus
Module:
<?php
/**
* implementation of a hook_menu().
*/
include_once 'includes/custom_css.form.php';
include_once 'includes/custom_css_form_submit.php';
include_once 'includes/custom_css_init.php';
function custom_css_menu() {
$items['admin/custom css'] = array(
'path' => 'admin/settings/custom_css',
'title' => t('Custom Css Module'),
'description' => 'This module includes custom css files and overwrithes the old css files.',
'position' => 'right',
'weight' => -5,
'page callback' => 'drupal_get_form',
'access arguments' => array('administer site configuration'),
);
return $items;
}
function custom_css_nodeapi(&$node, $op, $teaser, $page) {
include_once 'includes/custom_css.form.php';
$node->content[$content_name] = array(
'#value' => drupal_get_form("custom_css_form"),
'#weight' => $function->weight
);
}
?>
Funktion:
<?php
/**
* Implementation of hook_init().
*/
function custom_css_init() {
drupal_add_css(drupal_get_path('module', 'custom_css') . '/custom_stylesheets/chocolate.css');
}
?>
siehst du hier vieleicht ein überlegungsfehler?
@stBorchert
Ich werde mir skinner im hintergrund ansehen und schauen wie die es gelöst haben. da ich selbst keine zusätzlichen module brauchen darf, muss ich es selbst programmieren. :( danke ür den tipp :D
Module
am 21.07.2010 - 13:26 Uhr
da ich selbst keine zusätzlichen module brauchen darf, muss ich es selbst programmieren.
Bitte?
Ihr verzichtet lieber auf fertige, getestete und funktionierende Lösungen? Was soll das denn?
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
nur nicht ärgern :) mein
am 21.07.2010 - 13:35 Uhr
nur nicht ärgern :) mein scheff meint es wäre eine gute übung. xD
Zitat: mein scheff meint es
am 21.07.2010 - 13:42 Uhr
mein scheff meint es wäre eine gute übung
Wat is ein Scheff? :-P
Ne gute Übung wäre ne saubere, sichere und einfach zu pflegende Lösung zu finden
ein scheff ist einer der sagt
am 21.07.2010 - 13:47 Uhr
ein scheff ist einer der sagt was zu machen ist und selbst nichts macht oder so in der art :D hihi. is nur ein Witz:D
ja und die saubere lösung versuche ich zu finden. xD
ich habe mir skinr angeschaut
am 26.07.2010 - 11:18 Uhr
ich habe mir skinr angeschaut und gesehn das es für unser vorhaben nicht geigent ist, da die unterschiede von themes und css zu gross sind. Somit ist das Problem weiterhin bestehend. :(
Durch das debuggen fand ich heraus, dass mein css zwar in den header geladen wird, aber in der page.tpl. wird in der Variable $style mein css nicht eingebunden. Woran könnte das liegen? liegt es daran das es 2 mal durch meine funktion läuft?
-- CLOSE --
am 26.07.2010 - 13:45 Uhr
Kann geschlossen werden. Ich habe eine saubere Lösung gefunden.
Danke an die die mir geholfen haben. Das ganze funktioniert mit dem hook_init() und ein paar Zeilen Code. so wie es Sense gesagt hat.
:D danke
Bearbeite das Thema und packe
am 26.07.2010 - 13:48 Uhr
Bearbeite das Thema und packe einfach ein "[gelöst]" dazu, damit Besucher wissen dass geholfen werden konnte.
sense-design | online solutions | Do not hack core!
Drupalcenter Verhaltensregeln | Threads bitte auf [gelöst] stellen.