유튜브 iframe 문의

ㅎㅎ kborad를 쓰고 있는 유저 입니다. 다름이 아니라 게시판에 유튜브 영상을 게시하는데

iFrame 작성후 글을 남겼을때 전체화면이 안되는 현상이 계속됩니다.

나중에 글 수정할때 찾아보니  iFrame 속성중에서allowfullscreen 이 속성이 계속 사라지는 것 같습니다. 

이문제를 어떻게 해결해야 할지 알려주시면 감사하겠습니다. 

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
  • http://stackoverflow.com/questions/4739284/htmlpurifier-iframe-vimeo-and-youtube-video

    이쪽 참고 해서 파일을 수정해주셔야 합니다.

    /kbaord/helper/Security.helper.php 파일 하단에 아래 클래스를 추가해주시고

    kboard_xssfilter() 함수에 설정을 추가 해주세요.

    $HTMLPurifier_Config->set('Filter.Custom', array(new HTMLPurifier_Filter_MyIframe()));

     

     

    /**
     * Based on: http://sachachua.com/blog/2011/08/drupal-html-purifier-embedding-iframes-youtube/
     * Iframe filter that does some primitive whitelisting in a somewhat recognizable and tweakable way
     */
    class HTMLPurifier_Filter_MyIframe extends HTMLPurifier_Filter
    {
        public $name = 'MyIframe';

        /**
         *
         * @param string $html
         * @param HTMLPurifier_Config $config
         * @param HTMLPurifier_Context $context
         * @return string
         */
        public function preFilter($html, HTMLPurifier_Config $config, HTMLPurifier_Context $context)
        {
            $html = preg_replace('#<iframe#i', '<img class="MyIframe"', $html);
            $html = preg_replace('#</iframe>#i', '</img>', $html);
            return $html;
        }

        /**
         *
         * @param string $html
         * @param HTMLPurifier_Config $config
         * @param HTMLPurifier_Context $context
         * @return string
         */
        public function postFilter($html, HTMLPurifier_Config $config, HTMLPurifier_Context $context)
        {
            $post_regex = '#<img class="MyIframe"([^>]+?)>#';
            return preg_replace_callback($post_regex, array($this, 'postFilterCallback'), $html);
        }

        /**
         *
         * @param array $matches
         * @return string
         */
        protected function postFilterCallback($matches)
        {
            // Domain Whitelist
            $youTubeMatch = preg_match('#src="https?://www.youtube(-nocookie)?.com/#i', $matches[1]);
            $vimeoMatch = preg_match('#src="http://player.vimeo.com/#i', $matches[1]);
            if ($youTubeMatch || $vimeoMatch) {
                $extra = ' frameborder="0"';
                if ($youTubeMatch) {
                    $extra .= ' allowfullscreen';
                } elseif ($vimeoMatch) {
                    $extra .= ' webkitAllowFullScreen mozallowfullscreen allowFullScreen';
                }
                return '<iframe ' . $matches[1] . $extra . '></iframe>';
            } else {
                return '';
            }
        }
    }

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요