PDA

Просмотр полной версии : TYPO3 6: Лучшие практики создания расширения


uoziod
14.12.2012, 17:06
Поставил старое расширение на TYPO3 6.

Обнаружилась проблема с Call to undefined method TYPO3\\CMS\\Core\\Utility\\GeneralUtility::readLLX MLfile()

Поправил
$LOCAL_LANG = t3lib_div::readLLXMLfile($llFile, $GLOBALS['LANG']->lang);
на
$LOCAL_LANG = t3lib_l10n_parser_Llxml::getParsedData($llFile, $GLOBALS['LANG']->lang);


Однако обнаружилась более загадочная ошибка:

Call to undefined method tx_smth_pi1_wizicon::getCharset() in /var/www/typo3_src-6.0.0/typo3/sysext/core/Classes/Localization/Parser/LocallangXmlParser.php on line 54, referer: http://localhost/typo3/sysext/cms/layout/db_layout.php?id=2

И я без идей уже куда с этим...

Кстати, kickstarter исчез...

Вообще вопрос можно сформулировать проще так:

Кто-нибудь знает, где найти самую актуальную болванку для расширения? :)

uoziod
14.12.2012, 18:46
Решение проблемы было найдено (в одном из недавно загруженных расширений) и оно весьма изящно! Вообще если у кого всё-таки будут идеи касательно того где искать такие решения более документированные и централизованно, предлагаю делиться ссылками тут.

Итак! Файл pi1/class.tx_smth_pi1_wizicon.php расширения из-за которого всё переставало работать в TYPO3 6. В данном примере этот скрипт является универсальным для всех TYPO3 от 4 до 6:

...

class tx_smth_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_smth_pi1'] = array(
'icon'=>t3lib_extMgm::extRelPath('smth').'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]=tx_smth_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('smth').'locallang.xml';

$version = class_exists('t3lib_utility_VersionNumber')
? t3lib_utility_VersionNumber::convertVersionNumberT oInteger(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;
}

}

...