#typo3 #typoscript
#typo3 #typoscript
Вопрос:
Я хочу отобразить версию моего sitepackage
(из моего файла объявления ext_emconf.php
) во внешнем интерфейсе.
Как мне запросить эту информацию? Я думал об использовании a DataProcessor
в my FLUIDTEMPLATE
, но я не уверен, нужно ли мне писать свой собственный или уже есть тот, который я могу использовать для этого.
Спасибо!
Ответ №1:
В зависимости от ваших конкретных потребностей вы можете использовать ExtensionManagementUtility::getExtensionVersion()
для ввода глобальной константы TypoScript через ExtensionManagementUtility::addTypoScriptConstants()
:
// ext_localconf.php
TYPO3CMSCoreUtilityExtensionManagementUtility::addTypoScriptConstants(sprintf(
'site.version = %s',
TYPO3CMSCoreUtilityExtensionManagementUtility::getExtensionVersion('sitepackage')
));
После этого вы можете использовать эту константу в любом месте настройки TypoScript, включая variables
шаблоны Fluid:
// TypoScript setup
10 = FLUIDTEMPLATE
10 {
// ...
variables {
siteVersion = {$site.version}
}
}
Теперь используйте эту переменную в любом месте вашего шаблона:
<!-- Fluid template -->
<p>Site {siteVersion}</p>
Ответ №2:
Для этого нет процессора обработки данных.
Я бы предложил создать небольшой класс PHP для считывания версии и интеграции ее с помощью TypoScript в качестве пользовательского объекта.
namespace VendorSitepackageService;
class SitepackageVersionService
{
public function getVersion(): string
{
$version = '';
$packageManager = GeneralUtility::makeInstance(TYPO3CMSCorePackagePackageManager::class);
$extensionKey = 'my_extension_key';
if ($packageManager->isPackageActive($extensionKey)) {
$package = $packageManager->getPackage($extensionKey);
$version = $package->getPackageMetaData()->getVersion();
}
return $version;
}
}
page.10.variables.sitePackageVersion = USER
page.10.variables.sitePackageVersion.userFunc = VendorSitepackageServiceSitepackageVersionService->getVersion
<strong>Version: {sitePackageVersion}</strong>
Комментарии:
1. Я бы предложил также использовать
ExtensionManagementUtility::getExtensionVersion()
здесь, поскольку он уже выявляет множество возможных проблем.2. Не знал этой функции, приятно!