如何在前端显示我的站点包的版本?

How can I display the version of my sitepackage in the frontend?

我想在前端显示我的sitepackage(来自我的声明文件ext_emconf.php)的版本。

如何查询这些信息?我正在考虑在我的 FLUIDTEMPLATE 中使用 DataProcessor,但我不确定是否需要自己编写,或者是否已经有一个我可以使用的。

谢谢!

根据您的具体需要,您可以使用 ExtensionManagementUtility::getExtensionVersion() 通过 ExtensionManagementUtility::addTypoScriptConstants():

注入全局 TypoScript 常量
// ext_localconf.php
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScriptConstants(sprintf(
    'site.version = %s',
    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getExtensionVersion('sitepackage')
));

之后您可以在 TypoScript 设置中的任何位置使用此常量,包括 variables 流体模板:

// TypoScript setup
10 = FLUIDTEMPLATE
10 {
  // ...
  variables {
    siteVersion = {$site.version}
  }
}

现在在模板中任何你喜欢的地方使用这个变量:

<!-- Fluid template -->
<p>Site {siteVersion}</p>

没有对应的 DataProcessor。

我建议创建一个小的 PHP class 来读取版本并通过 TypoScript 将其作为 USER 对象集成。

namespace Vendor\Sitepackage\Service;

class SitepackageVersionService
{

    public function getVersion(): string
    {
        $version = '';
        $packageManager = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Package\PackageManager::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 = Vendor\Sitepackage\Service\SitepackageVersionService->getVersion
<strong>Version: {sitePackageVersion}</strong>