Conditional Comments
Eingetragen von karlotta (93)
am 08.05.2008 - 18:50 Uhr in
am 08.05.2008 - 18:50 Uhr in
ich moechte gerne fuer den ie ein alternatives css anbieten, kenne mich aber zuwenig aus um in das bestehende php:
if ($_COOKIE["style"] == "bigger") {
drupal_add_css(path_to_theme() .'/common_bigger.css', 'theme');
}
else if ($_COOKIE["style"] == "big") {
drupal_add_css(path_to_theme() .'/common_big.css', 'theme');
}
else {
drupal_add_css(path_to_theme() .'/common.css', 'theme');
}
Conditional Comments zu integrieren.
die drei bestehenden werden fuer eine schriftgroessenumstellung gebraucht, entsprechend muessten auch drei andere fuer den ie da irgendwie hinein.
leider hab ich keine ahnung wie das gehen kann.
- Anmelden oder Registrieren um Kommentare zu schreiben
kennt sich jemand mit php/html aus??
am 08.05.2008 - 19:32 Uhr
ich weiss nicht genau wie ich das in diesem fall verknuepfen kann
könntest du vielleicht noch
am 08.05.2008 - 21:31 Uhr
könntest du vielleicht noch was sagen zum theme und der datei?
so verstehe ich leider auch nur bhf...
php/html
am 09.05.2008 - 08:00 Uhr
es ist das marvin theme
dort steht original im theme:
drupal_add_css(path_to_theme() .'/common.css', 'theme');
und ich habe es ersetzt durch obige if abfrage.
oder was musst du noch wissen?
Ich kenne Conditional
am 09.05.2008 - 08:44 Uhr
Ich kenne Conditional Comments nur im HTML.
So was ähnliches wie unten müsste dann in deine page.tpl.php
Benutzt du dieses Modul?
http://drupal.org/project/jquery_fontsizer
<!--[if IE 5]>
<style type="text/css">
Stylesheets für den IE 5
</style>
<![endif]-->
<!--[if gte IE 6]>
<style type="text/css">
Stylesheets für den IE ab Version 6 (größer oder gleich 6)
</style>
<![endif]-->
<!--[if lt IE 6]>
<link rel="Stylesheet" href="ie5.css" type="text/css" />
<![endif]-->
nein, das modul benutze ich
am 09.05.2008 - 15:49 Uhr
nein, das modul benutze ich nicht, es ist eine selbstgestrickte loesung, weil die vorhandenen module nicht browserkompatibel gearbeitet haben.
danke fuer die comments, aber mein problem ist ja eben wie ich das in mein php rein bekomme.
???????
Von PHP verstehe ich leider
am 13.05.2008 - 00:50 Uhr
Von PHP verstehe ich leider nix, daher würde ich im Nebel stochern und ungefähr so vorgehen: Die Conditional Comments je nach IE-Typ vielleicht so in Deine jeweiligen if-Abfragen einfügen:
if ($_COOKIE["style"] "bigger") {
drupal_add_css(path_to_theme() .'/common_bigger.css', 'theme');
<!--[if lt IE 7]>
<style type="text/css" media="all">@import "<?php drupal_add_css(path_to_theme() .'/ie6bigger.css', 'theme' ?>";
</style>
<![endif]-->
<!--[evt. weitere CC-Bedingung]>
<style ...>
</style>
<![endif]--> ...
}
else if ...
Ob der Parser das dann auch versteht, kann ich nicht einschätzen, ich will erst anfangen mit PHP und kriege vorerst immer noch einen Knoten im Kopf, wenn ich mir so die Dateien anschaue und überlege, wo HTML aufhört und PHP anfängt bzw. vice versa. *g*
Die Frage ist für mich: Warum sollte man das tun wollen? Wie die meisten anderen Browser versteht auch der IE m.E. die Tastenkombination "Strg und +" als "Ansicht vergrößern", bzw. "Strg und -" als "Ansicht verkleinern". Ist das Marvin-CSS so starr, dass das nicht geht? Dann stehen Nutzer (egal welchen Browsers), die keine Cookies zulassen, trotzdem dumm da. Wäre es dann nicht besser, das common.css flexibler zu gestalten?
Ist zwar nicht sehr schön,
am 14.05.2008 - 06:17 Uhr
Ist zwar nicht sehr schön, aber folgendes sollte in Drupal 5 funktionieren.
In der template.php folgende Funktion einfügen oder entsprechend ergänzen:
function _phptemplate_variables($hook, $vars) {
if (!is_array($vars)) {
$vars = array();
}
// alle css dateien holen
$css = drupal_add_css();
$ie7_css_all = $css['all']['ie7'];
$ie7_css_print = $css['print']['ie7'];
$ie6_css_all = $css['all']['ie6'];
$ie6_css_print = $css['print']['ie6'];
$ie6_css = $ie7_css = '';
if (is_array($ie7_css_all)) {
foreach ($ie7_css_all AS $path => $value) {
$ie7_css .= "<style type=\"text/css\" media=\"all\">@import \"" . $path . "\";</style>\n";
}
}
if (is_array($ie7_css_print)) {
foreach ($ie7_css_print AS $path => $value) {
$ie7_css .= "<style type=\"text/css\" media=\"print\">@import \"" . $path . "\";</style>\n";
}
}
if (is_array($ie6_css_all)) {
foreach ($ie6_css_all AS $path => $value) {
$ie6_css .= "<style type=\"text/css\" media=\"all\">@import \"" . $path . "\";</style>\n";
}
}
if (is_array($ie6_css_print)) {
foreach ($ie6_css_print AS $path => $value) {
$ie6_css .= "<style type=\"text/css\" media=\"print\">@import \"" . $path . "\";</style>\n";
}
}
// Variablen fuer Templatedatei anlegen
$vars['ie7css'] = $ie7_css;
$vars['ie6css'] = $ie6_css;
// Conditional Dateien entfernen
unset($css['all']['ie7']);
unset($css['print']['ie7']);
unset($css['all']['ie6']);
unset($css['print']['ie6']);
// Alle Stylesheets ausser den Conditional Sheets rendern
$vars['styles'] = drupal_get_css($css);
return $vars;
}
Entsprechende Stylesheets dann per drupal_add_css('pfad/zum/stylesheet', 'ie7 oder ie6', 'all oder print'); hinzufügen.
In page.tpl.php die entsprechende Variable in den gewünschten conditionals ausgeben. z.b.
<!--[if lt IE 7]>
<?php print $ie6; ?>
<![endif]-->
Grüße,
Robin
@rcj
am 14.05.2008 - 12:12 Uhr
Sorry, aber könntest du vielleicht den Unterschied erklären
zwischen diesem:
- eine riesige function in der template.php deklarieren
- diese in page.tpl.php ausgeben so:
<!--[if lt IE 7]>
<?php print $ie6; ?>
<![endif]-->
und jenem:
- in page.tpl.php eintragen
<!--[if lt IE 7]>
<link rel="Stylesheet" href="ie6.css" type="text/css" />
<![endif]-->
Oder überhaupt den Sinn und Vorteil des Ganzen?
Merci
Klar, gerne. Der TS hat die
am 14.05.2008 - 13:22 Uhr
Klar, gerne.
Der TS hat die CSS Dateien mit drupal_add_css hinzugefügt. Falls also mehrere Dateien entsprechend in verschiedenen Modulen so hinzugefügt werden sollen und dies evtl auch nur dann wenn entsprechendes Modul aktiv ist, dann ist es notwendig dies so dynamisch zu machen anstatt es hardcoded in die Templatedatei zu schreiben.
Abgesehen davon habe ich in meinen Templatedateien ungern Logik, wenn also je nach Parametern verschiedene Stylesheets geladen werden sollen, kann man diese nicht vorher fest im Template eintragen, sondern muss sie eben dynamisch hinzufügen.
Grüße,
Robin