Extension XYZ installiert: Unterschied zwischen den Versionen
Aus Contao Community Documentation
K (Geshi-Anpassung) |
|||
Zeile 13: | Zeile 13: | ||
// Extension XYZ fehlt oder deaktiviert, Abbruch / Warnung | // Extension XYZ fehlt oder deaktiviert, Abbruch / Warnung | ||
} | } | ||
+ | </source> | ||
+ | |||
+ | Wenn bei einem Update der eigenen Extension eine neue Abhängigkeit hinzugekommen ist, wird diese bei der Aktualisierung über das Extension Repository nicht installiert. 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 nach installiert 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> | </source> | ||
Version vom 31. August 2011, 13:22 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 hinzugekommen ist, wird diese bei der Aktualisierung über das Extension Repository nicht installiert. 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 nach installiert 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)