typo3 - TYPO3 Flux FAL 对象中的 YouTube id 内容
问题描述
我有一个 YouTube 视频作为 FAL 对象,我需要在我的流体模板中使用 YouTube id。
在 FileReference 对象中,可以通过{file.contents}
.
flux:field.inline.fal
但是我在我的通量内容模板中找不到 FAL 数组中的 YouTube id,我得到了这样的视频 FAL 数组:
{v:content.resources.fal(field: 'settings.falimage', record:record) -> v:iterator.first() -> v:variable.set(name: 'image')}
在收到的数组中,我只能找到 YouTube 视频的 url。是否有 getter 或 ViewHelper 呢?
我的设置:
TYPO3 9.5.9
通量 9.2.0
录像机 5.2.0
解决方案
在尝试将 VHS PregMatchViewHelper ( https://fluidtypo3.org/viewhelpers/vhs/development/Variable/PregMatchViewHelper.html ) 与模式https://gist.github.com/ghalusa/6c7f3a00fd2383e5ef33结合使用失败后,我结束了创建一个自己的 ViewHelper,从 url 中找到 YouTube id:
<?php
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
/**
* A view helper for rendering the YouTube Id from an url
*
* = Examples =
*
* <code>
* {nc:youTubeId(url: 'https://www.youtube.com/watch?v=zpOVYePk6mM')}
* </code>
* <output>
* zpOVYePk6mM
* </output>
*/
class YouTubeIdViewHelper extends AbstractViewHelper
{
use CompileWithRenderStatic;
/**
* Initialize arguments
*/
public function initializeArguments()
{
$this->registerArgument('url', 'string', 'YouTube url', true);
}
/**
* @param array $arguments
* @param \Closure $renderChildrenClosure
* @param RenderingContextInterface $renderingContext
* @return string youtube id
*/
public static function renderStatic(array $arguments, \Closure $renderChildrenClosure, RenderingContextInterface $renderingContext)
{
$url = $arguments['url'];
preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $match);
$youtube_id = $match[1];
return $youtube_id;
}
}
推荐阅读
- angular - 如何在 [(ngModel)] 中使用 Map()?
- javascript - JavaScript 购买 SDK - Shopify
- javascript - 沙盒以外的不同属性可在您的网站上显示网页
- node.js - 从 node express 中的 html 输入返回或查找对象
- android-studio - 使用proguard时执行失败
- redis - Kubernetes 中的 redis-ha 无法故障转移回主服务器
- python - 通过理解更新列表中的字典项
- autolisp - AutoLISP - 通过选择多个对象来更改多个图层
- arrays - 反应JS | 对象内部的连接数组
- python - Getting erratic runtime exceptions trying to access persistant data in multiprocessing.Pool worker processes