Extension XYZ installiert: Unterschied zwischen den Versionen

Aus Contao Community Documentation

K
 
(2 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 4: Zeile 4:
 
{{AppliesTo|TLVersion=ab 2.7|Version=ab 2.9}}
 
{{AppliesTo|TLVersion=ab 2.7|Version=ab 2.9}}
 
Das ist wie folgt möglich:
 
Das ist wie folgt möglich:
<pre>
+
<source lang="php">
 
if (in_array('XYZ', $this->Config->getActiveModules()))
 
if (in_array('XYZ', $this->Config->getActiveModules()))
 
{
 
{
Zeile 13: Zeile 13:
 
   // Extension XYZ fehlt oder deaktiviert, Abbruch / Warnung
 
   // Extension XYZ fehlt oder deaktiviert, Abbruch / Warnung
 
}
 
}
</pre>
+
</source>
 +
 
 +
Wenn bei einem Update der eigenen Extension eine neue Abhängigkeit zu einer anderen Extension hinzugekommen ist, wird diese bei der Aktualisierung über das Extension Repository '''nicht''' mitinstalliert. Der folgende Codeschnippsel prüft die benötigten Extensions UND Dateien und zeigt im Backend solange eine eine entsprechende Meldung an, bis der User sie nachinstalliert hat.
 +
 
 +
<source lang="php">
 +
public function checkExtensions($strContent, $strTemplate)
 +
{
 +
    if ($strTemplate == 'be_main')
 +
    {
 +
        if (!is_array($_SESSION["TL_INFO"])) $_SESSION["TL_INFO"] = array();
 +
       
 +
// required extensions
 +
        $arrRequiredExtensions = array('cron', 'textwizard', '3cframework', 'multicolumnwizard');
 +
 +
// required files
 +
        $arrRequiredFiles = array('system/libraries/RequestExtended.php', 'system/drivers/DC_Memory.php', 'ajax.php');
 +
       
 +
// check for required extensions
 +
        foreach ($arrRequiredExtensions as $val)
 +
        {
 +
            if (!in_array($val, $this->Config->getActiveModules()))
 +
            {
 +
                $_SESSION["TL_INFO"] = array_merge($_SESSION["TL_INFO"], array($val => 'Please install the required extension <strong>'.$val.'</strong>'));
 +
 
 +
            }
 +
            else
 +
            {
 +
                if (is_array($_SESSION["TL_INFO"]) && key_exists($val, $_SESSION["TL_INFO"]))
 +
                {
 +
                    unset ($_SESSION["TL_INFO"][$val]);
 +
                }
 +
            }
 +
        }
 +
       
 +
        // check for required files
 +
        foreach ($arrRequiredFiles as $val)
 +
        {
 +
            if (!file_exists(TL_ROOT . '/'. $val))
 +
            {
 +
                $_SESSION["TL_INFO"] = array_merge($_SESSION["TL_INFO"], array($val => 'Please install the required file <strong>'.$val.'</strong>'));
 +
 
 +
            }
 +
            else
 +
            {
 +
                if (is_array($_SESSION["TL_INFO"]) && key_exists($val, $_SESSION["TL_INFO"]))
 +
                {
 +
                    unset ($_SESSION["TL_INFO"][$val]);
 +
                }
 +
            }
 +
        }
 +
       
 +
    }
 +
 
 +
    return $strContent;
 +
}
 +
</source>
 +
 
 +
Als Hook wird ''parseBackendTemplate'' verwendet!
 +
 
 +
<source lang="php">
 +
$GLOBALS['TL_HOOKS']['parseBackendTemplate'][] = array('MyClass', 'checkExtensions');
 +
</source>
  
  
 
----
 
----
 
--[[Benutzer:BugBuster|BugBuster]] 14:38, 12. Jul. 2010 (CEST)
 
--[[Benutzer:BugBuster|BugBuster]] 14:38, 12. Jul. 2010 (CEST)

Aktuelle Version vom 4. September 2011, 12:18 Uhr

Wenn ein Modul von einem anderen Modul abhängig ist, ist es manchmal nötig festzustellen, ob dieses installiert ist.

betrifft
TYPOlight Version ab 2.7
Contao Version ab 2.9

Das ist wie folgt möglich:

if (in_array('XYZ', $this->Config->getActiveModules()))
{
  // Extension XYZ ist installiert und nicht deaktiviert
} 
else
{
  // Extension XYZ fehlt oder deaktiviert, Abbruch / Warnung
}

Wenn bei einem Update der eigenen Extension eine neue Abhängigkeit zu einer anderen Extension hinzugekommen ist, wird diese bei der Aktualisierung über das Extension Repository nicht mitinstalliert. Der folgende Codeschnippsel prüft die benötigten Extensions UND Dateien und zeigt im Backend solange eine eine entsprechende Meldung an, bis der User sie nachinstalliert hat.

public function checkExtensions($strContent, $strTemplate)
{
    if ($strTemplate == 'be_main')
    {
        if (!is_array($_SESSION["TL_INFO"])) $_SESSION["TL_INFO"] = array();
 
	// required extensions
        $arrRequiredExtensions = array('cron', 'textwizard', '3cframework', 'multicolumnwizard');
 
	// required files
        $arrRequiredFiles = array('system/libraries/RequestExtended.php', 'system/drivers/DC_Memory.php', 'ajax.php');
 
	// check for required extensions
        foreach ($arrRequiredExtensions as $val)
        {
            if (!in_array($val, $this->Config->getActiveModules()))
            {
                $_SESSION["TL_INFO"] = array_merge($_SESSION["TL_INFO"], array($val => 'Please install the required extension <strong>'.$val.'</strong>'));
 
            }
            else
            {
                 if (is_array($_SESSION["TL_INFO"]) && key_exists($val, $_SESSION["TL_INFO"]))
                 {
                     unset ($_SESSION["TL_INFO"][$val]);
                 }
            }
        }
 
        // check for required files
        foreach ($arrRequiredFiles as $val)
        {
            if (!file_exists(TL_ROOT . '/'. $val))
            {
                $_SESSION["TL_INFO"] = array_merge($_SESSION["TL_INFO"], array($val => 'Please install the required file <strong>'.$val.'</strong>'));
 
            }
            else
            {
                 if (is_array($_SESSION["TL_INFO"]) && key_exists($val, $_SESSION["TL_INFO"]))
                 {
                     unset ($_SESSION["TL_INFO"][$val]);
                 }
            }
        }
 
    }
 
    return $strContent;
}

Als Hook wird parseBackendTemplate verwendet!

$GLOBALS['TL_HOOKS']['parseBackendTemplate'][] = array('MyClass', 'checkExtensions');



--BugBuster 14:38, 12. Jul. 2010 (CEST)

Ansichten
Meine Werkzeuge

Contao Community Documentation

<Kellner> und einmal Filet?
<backbone87> Nein Olli, nicht Philip!

Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge