【问题标题】:YouTube id contents in TYPO3 Flux FAL ObjectTYPO3 Flux FAL 对象中的 YouTube id 内容
【发布时间】:2020-01-14 03:34:09
【问题描述】:

我有一个 YouTube 视频作为 FAL 对象,我需要在我的流体模板中使用 YouTube id。

在 FileReference 对象中,可以通过{file.contents} 获取 id。

但我在 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

  • VHS 5.2.0

【问题讨论】:

    标签: typo3 fluid typo3-9.x


    【解决方案1】:

    在尝试将 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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-05-08
      • 2020-08-06
      • 2019-02-22
      • 1970-01-01
      • 2021-04-20
      • 2018-05-09
      • 2017-07-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多