Admidio-Plugins in Joomla einbinden

1. Damit alle Plugins auf der Joomla-Seite angezeigt werden können, müssen diese über das Joomla-Modul Wrapper auf die gewünschte Position gesetzt werden. Damit man am eigentlichen Plugin nicht zuviel umcoden muss, ist der Aufruf über eine vorgelagerte PHP-Datei sinnvoll. In der Datei erfolgt so der Aufruf:

<?php
    include($_SERVER['DOCUMENT_ROOT']. "/adm_plugins/calendar/calendar.php");
?>

Im Head-Bereich sollte man die nachfolgenden Stylesheets und Scripte wie folgt einbinden:

<link rel="stylesheet" type="text/css" href="http://deine_domäne.de/adm_plugins/calendar/calendar.css" />
<!-- Ermöglicht die Ajax-Funktionen -->
<script type="text/javascript" src="http://deine_domäne.de/adm_program/libs/jquery/jquery.js"></script>
<!-- Nicht zwingend erforderlich -->
<script type="text/javascript" src="http://deine_domäne.de/adm_program/system/js/common_functions.js"></script>
<!-- Ermöglicht die Tooltipbox -->
<script type="text/javascript" src="http://deine_domäne.de/adm_program/libs/tooltip/ajax-tooltip.js"></script>

Bitte darauf achten, dass beim Einbinden der Scripte noch keine Admidio-Variable $_SERVER['DOCUMENT_ROOT'] definiert ist, deshalb am besten hart coden.

2. Durch das Einbinden der Plugins über Joomla-Wrapper-Module kommt es aber bei den dargestellten Links oft zum Problem, dass die Hauptseite von Joomla verlassen. Auch wenn man Admidio mittels Component-Wrapper eingebunden hat, ist ein Ansteuern der einzelnen Admidio-Module wie z.B. dates.php so noch nicht möglich.

Dank eines Eintrages im Joomlaportal-Forum gibt es aber eine Möglichkeit durch hacken des Wrapper-Moduls, der Joomla-Komponente Wrapper noch zusätzliche Parameter auf den Weg zu geben:

So heißt es bei JoomlaExpert http://www.joomlaexpert.com/index.php?option=com_content&task=view&id=30&Itemid=63

Zitat:

Pass Parameters to the Wrapper (13393 hits)
Written by Thomas Kahl
Have you ever needed to pass different parameters to your "wrapped" script?
Here is a flexible solution, which should work with all Wrapper-Items in mambo 4.5.1 & 4.5.2

   1. Make a backup of the file /components/com_wrapper/wrapper.php
   2. Open the file in an editor and go to line 35.
   3. Search for this text: $url = $params->def( 'url', '' );
   4. Insert the following block AFTER the line:

        foreach ($_GET as $key => $value) {
        if ($key<>"option" && $key<>"Itemid") {
           $url.=(strpos($url,"?")) ? "&" : "?";
           $url.="$key=$value";
           }
        }

   5. Save the file and test the solution in your browser.

      This is for example a link to a special phpBB topic:
          http://www.yourdomain.com/index.php?option=com_wrapper&Itemid=110&t=3022
      the corresponding URL in the Wrapper configuration is:
          http://www.yourdomain.com/phpBB/viewtopic.php
      the additional parameter "t" is passed to phpBB:
          http://www.yourdomain.com/phpBB/viewtopic.php?t=3022

Damit kann man also dem Wrapper von außen noch einen weiteren Parameter mitgeben. Die Beschreibung ist auch noch für die Version 1.5.x von Joomla gültig.

3. Das Plugin muss man dann an den entsprechenden Stellen anpassen:

Für das Modul calender.php sind dazu folgende Änderungen vorzunehmen:

Zeile 307:

if($ter_anzahl >> 0)
{
    if($i <= 9)
    {
        $plg_link = "http://www.deine_domäne.de/index.php?option=com_wrapper&Itemid=170&view=wrapper?date=$jahr$monat". "0". $i;
        $plg_link_target = "_top";
    }
    else
    {
        $plg_link = "http://www.deine_domäne.de/index.php?option=com_wrapper&Itemid=170&view=wrapper?date=$jahr$monat$i";
        $plg_link_target = "_top";
    }
}

An dieser Stelle muss der Aufruf mit target=_top erfolgen, da sonst der Link die Seite im iFrame des Moduls aufruft.
sowie neue Zeile 401:

if($i == $heute OR $i == $ter_aktuell OR $i == $geb_aktuell)
{
    if($i != $ter_aktuell && $i == $geb_aktuell)
    {
        $plg_link = "#";
        $plg_link_target = "_self";
    }
    if($i == $ter_aktuell || $i == $geb_aktuell)
    {
         if($plg_ajaxbox == 1)

Die Geburtstage werden für nicht angemeldete User nicht verlinkt, das Plugin codiert dafür die betreffende aufrufende PHP-Datei. Damit in diesem Falle aber nicht die vorgeschaltete Datei für das Modul Wrapper als _top aufgerufen wird, sondern im betreffenden Modul-iFrame erfolgt deshalb der Wechsel auf _self.

4. Die Umstellung funktioniert auch mit bei Einsatz einer Komponente SEO bzw. SEF für suchmaschinenfreundliche URL. Hier ist dann die durch die SEF-Komponente übersetzte Adresse einzugeben.
statt:

$plg_link = "http://www.deine_domäne.de/index.php?option=com_wrapper&Itemid=170&view=wrapper?date=$jahr$monat". "0". $i;

neu:

$plg_link = "http://www.deine_domäne.de/termine?date=$jahr$monat". "0". $i;
  • de/2.0/admidio-plugins_in_joomla_einbinden.txt
  • Last modified: 2010/01/18 22:24
  • by fasse