Heute bin ich auf folgendes Problem gestoßen:
Im TYPO3-Backend wollte ich in der Seiten-Ansicht ein neues Inhaltselement anlegen. Nach einem Klick auf das entsprechende Icon wurde die Seite jedoch leer und nichts weiter passierte.
Nach einer kurzen Recherche im Apache-Errorlog fand ich folgenden Fehler:
PHP Fatal error: Call to undefined method TYPO3\\CMS\\Core\\Utility\\General
Utility::readLLXMLfile() in /srv/www/htdocs/typo3conf/ext/we_gmanfahrt/pi1/
class.tx_wegmanfahrt_pi1_wizicon.php on line 61, referer: ...
Es stellte sich heraus, dass die Extension „we_gmanfahrt“ eine veraltete Funktion namens „t3lib_div::readLLXMLfile()“ verwendete.
Diese Funktion ist seit TYPO3 4.6 veraltet und wurde in Version 6.0 entfernt. Seit dem sollte die Funktion „t3lib_l10n_parser_Llxml::getParsedData()“ verwendet werden.
Gesagt, getan.
Die Übergabeparameter sind gleich geblieben und somit sollte durch einen Tausch der Funktionen das Problem behoben sein.
Sollte…den das Phänomen beim Anlegen eines neuen Inhaltselements blieb.
Im Errorlog fand sich nun ein neuer Eintrag:
PHP Fatal error: Call to undefined method tx_wegmanfahrt_pi1_wizicon:: getCharset() in /srv/www/typo3/typo3_src-6.1.0/typo3/sysext/core/Classes/ Localization/Parser/LocallangXmlParser.php on line 54, referer: ...
Wie sich herausstellte, hängt dies mit dem „neuen“ TYPO3 zusammen. Eine Lösung wurde von Thomas Dudzak im Bugtracker bereitgestellt:
/**
* Reads the [extDir]/locallang.xml and returns the $LOCAL_LANG array found in that file.
*
* @return The array with language labels
*/
function includeLocalLang() {
$llFile = t3lib_extMgm::extPath('td_calendar').'locallang.xml';
$version = class_exists('t3lib_utility_VersionNumber')
? t3lib_utility_VersionNumber::convertVersionNumberToInteger(TYPO3_version)
: t3lib_div::int_from_ver(TYPO3_version);
if ($version >= 4007000) {
$object = t3lib_div::makeInstance('t3lib_l10n_parser_Llxml');
$LOCAL_LANG = $object->getParsedData($llFile, $GLOBALS['LANG']->lang);
} else {
$LOCAL_LANG = t3lib_div::readLLXMLfile($llFile, $GLOBALS['LANG']->lang);
}
return $LOCAL_LANG;
}
Danke für deinen Tip 🙂
Für folgende zeile :
$LOCAL_LANG = t3lib_div::readLLXMLfile($llFile, $GLOBALS[‚LANG‘]->lang);
das ein setzen:
$version = class_exists(‚t3lib_utility_VersionNumber‘)
? t3lib_utility_VersionNumber::convertVersionNumberToInteger(TYPO3_version)
: t3lib_div::int_from_ver(TYPO3_version);
if ($version >= 4007000) {
$object = t3lib_div::makeInstance(‚t3lib_l10n_parser_Llxml‘);
$LOCAL_LANG = $object->getParsedData($llFile, $GLOBALS[‚LANG‘]->lang);
} else {
$LOCAL_LANG = t3lib_div::readLLXMLfile($llFile, $GLOBALS[‚LANG‘]->lang);
}
LG
Markus
Guten Tag
wos soll ich der eintrag neue code einsetzen?
Vielen Dank für ihr hilfe
mit freundlichen grüssen Heidi Arens
/////////////////////////////////////////
/**
* Class that adds the wizard icon.
*
* @author
* @package TYPO3
* @subpackage tx_dmfgalleria
*/
class tx_dmfgalleria_pi1_wizicon {
/**
* Processing the wizard items array
*
* @param array $wizardItems: The wizard items
* @return Modified array with wizard items
*/
function proc($wizardItems) {
global $LANG;
$LL = $this->includeLocalLang();
$wizardItems[‚plugins_tx_dmfgalleria_pi1‘] = array(
‚icon’=>t3lib_extMgm::extRelPath(‚dmf_galleria‘).’pi1/ce_wiz.gif‘,
‚title’=>$LANG->getLLL(‚pi1_title‘,$LL),
‚description’=>$LANG->getLLL(‚pi1_plus_wiz_description‘,$LL),
‚params’=>’&defVals[tt_content][CType]=list&defVals[tt_content][list_type]=dmf_galleria_pi1‘
);
return $wizardItems;
}
/**
* Reads the [extDir]/locallang.xml and returns the $LOCAL_LANG array found in that file.
*
* @return The array with language labels
*/
function includeLocalLang() {
$llFile = t3lib_extMgm::extPath(‚dmf_galleria‘).’locallang.xml‘;
$LOCAL_LANG = t3lib_div::readLLXMLfile($llFile, $GLOBALS[‚LANG‘]->lang);
return $LOCAL_LANG;
}
}
if (defined(‚TYPO3_MODE‘) && $TYPO3_CONF_VARS[TYPO3_MODE][‚XCLASS‘][‚ext/dmf_galleria/pi1/class.tx_dmfgalleria_pi1_wizicon.php‘]) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE][‚XCLASS‘][‚ext/dmf_galleria/pi1/class.tx_dmfgalleria_pi1_wizicon.php‘]);
}
?>
////////////////////////////////////
Hallo Heidi,
wie Markus schon geschrieben hat, musst du die von Ihm gepostete Zeile in deiner Datei ersetzen.
Du hast ja schon die richtige Datei, jetzt einfach in der Datei nach der folgenden Zeile suchen:
$LOCAL_LANG = t3lib_div::readLLXMLfile($llFile, $GLOBALS[‚LANG‘]->lang);
und mit dem Code von Markus ersetzen.
Vielen Danks!
Hallo, danke für Eure Hilfe. Hatte schon eine Weile nach der Lösung für mein Problem gesucht und diese nun endlich bei Euch gefunden. 🙂 Viele Grüße