Hier habe ich für euch ein kleines Tutorial wie man den Wrapper modifiziert um externe dynamische Seiten zb. Warplaner (vwar):
Code:
/vwar/war.php?action=oppinfo&oppid=18
einbinden zu können. Nachzusehen auf meiner Clanpage oben links.
Das Problem war immer bislang dass der Wrapper nur statisch in Joomla verlinkt wurde und per ItemID aufgerufen werden konnte.
~~~~Anleitung ausgehend von Joomla!1.0.11~~~~--------------------------------
1. Öffnen von \components\com_wrapper\wrapper.html.php
2. Suchen von (Zeile 53)
PHP-Code:
src="<?php echo $row->url; ?>"
3. Mit folgenden Code ersetzen:
PHP-Code:
<?php
switch ($_GET['type'])
{
case 'clanid':
echo "src=./com.vwar/war.php?action=oppinfo&oppid=".$_GET['id'];
break;
case 'warid':
echo "src=./com.vwar/war.php?action=details&warid=".$_GET['id'];
break;
default:
echo "src=".$row->url;
break;
}
?>
Erläuterung: Normalerweise wird der Wrapper wie folgt aufgerufen:
index.php?option=com_wrapper&Itemid=46
Der neue Code ermöglicht es, den statisch verankerten Link (im Backend eingestellt, zb durch einen neuen Menüpunkt) dynamisch neuen Werten zu zuweisen.
Nun ist es möglich, in eurem Modul den Link so anzugeben:
index.php?option=com_wrapper&Itemid=46&type=clanid&id=9
Da der Wert Type gesetzt wurde, wird in der SWITCH Anweisung die URL ./com.vwar/war.php?action=oppinfo&oppid= direkt in den Wrapper geladen und am Ende wird die &id=9 (als Zahl 9) angefügt.
Jetzt fragt ihr euch, wozu man dies braucht? Ganz einfach, ich habe zb ein Modul "Lastactions" geschrieben, das uns die letzten 4 Wars auflistet. Und da jeder User/Gast dann auf das zb Ergebnis klicken kann, sollte auch der angeforderte Inhalt daraufhin auch in Joomla erscheinen, und nicht extern auf einer neuen Page. Das ging leider nicht da der Wrapper in der hinsicht unflexibel war.
WICHTIG!!! Um dem ganzen auch ein wenig Sicherheit zu bieten, bitte ich euch die Variablen &type, &id und die anderen mit einem anderen Bezeichner zu versehen. So kann keiner sehen welche $_GET Vars verwendet werden.
WICHTIG!!! Wenn ihr für den Wrapper ein anderes Template verwendet müsst ihr bei der URL noch die &ItemID=xx anhängen. Wichtig ist hierbei, dass eine gültige ItemID eingefügt wird, die letztendlich jedoch nur zur Templatesteuerung verwendet wird. Die angeforderte URL wird übergangen.
>> URL verstecken (mod_rewrite muss auf dem Webserver laufen, Stichwort SEO/SEF):
4. Öffnet eure .htaccess und fügt nach
folgenden Code ein:
Code:
RewriteRule ^opp_details_([0-9]+).html$ index.php?option=com_wrapper&Itemid=52&type=clanid&id=$1
RewriteRule ^war_details_([0-9]+).html$ index.php?option=com_wrapper&Itemid=52&type=warid&id=$1
Erläuterung:
Die URL DeineDomain.de/opp_details_9.html wird in DeineDomain.de/index.php?option=com_wrapper&Itemid=52&type=clanid &id=$1 umgewandelt. Die &ItemId=52 ist eine gültige ItemID aus dem Backend für den Wrapper wg verschieden zugewiesener Templates.
([0-9]+) stellt somit $1 dar, brauchst du mehr Variablen dann sollte es so aussehen:
Code:
RewriteRule ^opp_details_([0-9]+)_([0-9]+)_([0-9]+).html$ index.php?option=com_wrapper&Itemid=52&type=clanid&id=$1&ids=$2&idx=$3
Falls ihr OpenSEF verwendet und sich dann nix mehr regt bei diesen Links, dann müsst ihr bei der OpenSEF Config den ValidationLevel auf "none" stellen. Dann geht es wieder.
Ich hoffe euch einen guten Tip gegeben zu haben und verzeiht mir meinen schlechten Schreibstil, bin leider nit so der TutWriter =)
Tom
Lesezeichen