首页 文章

如何获取引用的所有FAL文件对象?

提问于
浏览
0

我正在尝试为TYPO3制作一个extbase扩展,以获取具有mimetype image / ...的alle文件对象,该文件对象由typo3中的任何内容,插件或流体引用 .

但我不知道哪种方法可以获得这些数据 . 我应该如何在我的扩展中创建模型,我应该如何创建正确的存储库?

如果我创建自定义查询,我不知道如何返回包含任何数据(如元数据)等的完整FAL对象 .

希望有人可以帮助我找到正确的方法,也许有一个例子或者什么 .

非常感谢

1 回答

  • 3

    你可以这样做,细节在底部:

    • 获取所有文件引用 .

    • 浏览它们,为每个文件检索引用的文件,并仅保留 mime_type 字段以 image/ 开头的文件 .

    您可能需要注意两件事:

    • 字段 mime_type 需要是最新的 . 检查FAL调度程序索引任务 .

    • 表现 . 根据您拥有的文件数量,使用JOIN的自定义SQL语句执行此操作可能要快得多 . 但是,如果性能有问题,你应该这样做 .

    How to get all file references:

    首先,构建自己的空文件引用类:

    namespace Vendor/Extkey/Domain/Model;
    
    class FileReference extends \TYPO3\CMS\Extbase\Domain\Model\FileReference {}
    

    确保在TypoScript中将其配置为序列化到表 sys_file_reference

    config.tx_extbase.persistence {
        classes {
            Vendor\Extkey\Domain\Model\FileReference {
                mapping {
                    tableName = sys_file_reference
                }
            }
        }
    }
    

    添加引用的存储库:

    namespace Vendor/Extkey/Domain/Repository;
    
    class FileReferenceRepository extends \TYPO3\CMS\Extbase\Persistence\Repository {
        public function initializeObject() {
            /** @var \TYPO3\CMS\Extbase\Persistence\Generic\QuerySettingsInterface */
            $defaultQuerySettings = $this->objectManager->get('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\QuerySettingsInterface');
    
            $defaultQuerySettings->setRespectStoragePage(FALSE);
            $this->setDefaultQuerySettings($defaultQuerySettings);
        }
    }
    

    引用类可以为空,但存储库需要它才能正常工作 . 确保添加默认查询设置以忽略页面ID,因此通过调用 $fileReferenceRepository->findAll() 可以获得所有非隐藏和未删除的文件引用 .

    How to check the MIME-type of each referenced file:

    您可以通过调用获取每个引用的MIME类型

    $fileReference->getOriginalResource()->getMimeType()
    

    这应该自动从存储中获取原始文件并读取其MIME类型 .

相关问题