Hi,
eine Frage an die PHP-Profis.
Ist es möglich, für einzelne Blöcke eine Browserabfrage zu generieren?
Ich müsste für ie6 (und älter) User einen anderen Block anzeigen lassen, wobei der Originalblock dabei ausgeblendet werden muss.
Hintergrund ist, dass ich ein CSS-Menue habe, welches ältere Browser nicht richtig anzeigen. Da ich mal wieder mehrsprachig arbeite, muss ich ein solches Flyout-Menü im Block verwenden.
Es gibt zwar jede Menge davon bei z. B. Dynamic-Drive. Allerdings krieg ich das dann nicht mehrsprachig hin innerhalb von Pragma.
Hat jemand ne Idee?
Thx und ciao
Frank
Zitat
Ist es möglich, für einzelne Blöcke eine Browserabfrage zu generieren?
Ich müsste für ie6 (und älter) User einen anderen Block anzeigen lassen, wobei der Originalblock dabei ausgeblendet werden muss.
Hab's jetzt nicht ausprobiert, sollte aber funktionopeln :morning:
<?php
...
$agent = getenv( 'HTTP_USER_AGENT' );
if ( preg_match("/MSIE/i", $agent ) && !preg_match( "/MSIE 7/i", $agent ) && !preg_match( "/MSIE 8/i", $agent ) ) {
include( 'blocks/block-anderen.php' );
return;
}
// $content des Originalblocks hier ...
Moin Siggi,
leider nicht wirklich.
Der Inhalt hat ein eigenes Stylesheet.
Wenn ich das wie oben gesagt mache krieg ich nur Fehler beim erstellen des Blocks.
Der Inhalt des Originalblocks sieht so aus:
<style>
.menu { margin: 4px; height: 150px; font-size: 8pt; font-family: verdana; }
.menu ul { margin: 0pt; padding: 0pt; position: relative; z-index: 500; list-style-type: none; width: 6em; }
.menu li { background-color: #f4f4f4; float: left; }
.menu li.sub { background-color: #f4f4f4; }
.menu table { position: absolute; border-collapse: collapse; top: 0pt; left: 0pt; z-index: 100; font-size: 1em; margin-top: -1px; }
.menu a, .menu a:visited { border: 1px solid #f4f4f4; display: block; text-decoration: none; height: 2em; line-height: 2em; width: 11em; color: #2f385f; padding-left: 1em; font-weight: normal; font-style: normal; font-variant: normal; text-transform: none; }
.menu b { float: right; margin-right: 5px; }
* html .menu a, * html .menu a:visited { width: 11em; }
* html .menu a:hover { color: #2F385F; background-color: #ccffff; position: relative; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; text-transform: none; }
.menu li:hover { position: relative; }
.menu a:active, .menu a:focus { color: #2F385F; background-color: #ccffff; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; text-transform: none; }
.menu li:hover > a { color: #2F385F; background-color: #ccffff; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; text-transform: none; }
.menu li ul { padding: 2em; visibility: hidden; position: absolute; top: -2em; left: 7em; background-color: transparent; }
.menu li:hover > ul { visibility: visible; }
.menu ul a:hover ul ul { visibility: hidden; }
.menu ul a:hover ul a:hover ul ul { visibility: hidden; }
.menu ul a:hover ul a:hover ul a:hover ul ul { visibility: hidden; }
.menu ul a:hover ul { visibility: visible; }
.menu ul a:hover ul a:hover ul { visibility: visible; }
.menu ul a:hover ul a:hover ul a:hover ul { visibility: visible; }
.menu ul a:hover ul a:hover ul a:hover ul a:hover ul { visibility: visible; }
</style>
<div class="menu">
<ul>
......... usw
Mach ich was falsch?
ciao
Frank :morning:
Hallo :)
ZitatMach ich was falsch?
Ich würde sagen ja. In einem Block gehören CSS-Anweisungen so nicht rein, weder in einem erstellten HTML-Block noch in eine Blockdatei. Diese müssen, damit die Seite korrekt validiert wird immer zwischen die <head></head> - Tags.
Mein Beispiel funktioniert. Wenn der Code ^^ am Anfang der Blockdatei deines Originalblocks ( kein HTML-Block wohlgemerkt ) eingetragen wird, inkludiert dieser eine andere Blockdatei, wenn der Client den Internet Explorer 6 benutzt.
Um nun CSS-Anweisungen in den Header zu transportieren benutzt man die pmxHeader::add() Methode.
Falls du allerdings eine Art CSS-Weiche brauchst könnte der Block folgendermaßen aussehen :
blocks/block-Beispiel.php :
$agent = getenv( 'HTTP_USER_AGENT' );
if ( preg_match("/MSIE/i", $agent ) && !preg_match( "/MSIE 7/i", $agent ) && !preg_match( "/MSIE 8/i", $agent ) ) {
pmxHeader::add(
'<style type="text/css">
// hier die CSS-Anweisungen fuer den IE6 ...
</style>');
}
else {
pmxHeader::add(
'<style type="text/css">
// hier die CSS-Anweisungen fuer alle anderen ...
</style>');
}
Auf diese Weise wird in dem Block auf den IE6 geprüft und dementsprechend der eine oder der andere Style in den Header geschrieben. ;)
HI,
ich habe in der Theme.html folgende If-Frage, da es bei meiner Seite schwierigkeite mit den PNG gab.
<!--[if lt IE 7]>
<![endif]-->
es hat sich problemlos im html einbauen lassen.....