对于扩展程序,我想使用存储在专用文件夹中的sys_categories。如何配置文件夹并访问TCA安装程序中的配置?
我尝试了这种方法。我在\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::makeCategorizable
内部使用了Configuration/TCA/Overrides/tx_xref_domain_model_project.php
方法。
我将硬编码333放置在理想情况下tsconfig的位置。此时是否可以解析并访问它?
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::makeCategorizable(
'xref',
'tx_xref_domain_model_project',
'areas',
array(
'label' => 'Areas',
'exclude' => FALSE,
'fieldConfiguration' => array(
'foreign_table_where' => ' AND sys_category.pid = 333',
)
)
);
有没有更简单的方法来解决这个问题?
答案 0 :(得分:1)
在ExtensionManagementUtility::makeCategorizable()
中使用Configuration/TCA/Overrides/<your_table>.php
是正确的方法,实际上是TYPO3 itself does的正确方法。
答案 1 :(得分:0)
此时至少可以访问全局扩展配置。
这并不完全令人满意,因为您可能想为不同的页面或sys_folders定义不同的类别源文件夹。然而,它将对许多项目有用:
protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
var contentTypeService = ApplicationContext.Current.Services.ContentTypeService;
var dataTypeService = ApplicationContext.Current.Services.DataTypeService;
var mediaType = contentTypeService.GetMediaType(1032);
if (mediaType != null && !mediaType.PropertyTypeExists("myNewPropertyAlias"))
{
var dataTypeDefinitions = dataTypeService.GetAllDataTypeDefinitions().ToArray();
var textStringDataTypeDefinition = dataTypeDefinitions.FirstOrDefault(p => p.Name.ToLower() == "textstring");
mediaType.AddPropertyType(new PropertyType(textStringDataTypeDefinition) { Name = "My New Property Name", Alias = "myNewPropertyAlias" });
contentTypeService.Save(mediaType);
}
}