✏️ 正在编辑: video.php
路径:
/home/qyel0117/public_html/wp-content/themes/semplice7/editor/modules/video.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php // namespace namespace Semplice\Editor\Modules; // use use Semplice\Editor; use Semplice\Editor\Placeholder; use Semplice\Helper\Get; use Semplice\Helper\Image; // ----------------------------------------- // module // ----------------------------------------- class VideoModule extends Editor { public $module; // ----------------------------------------- // constructor // ----------------------------------------- public function __construct() { $this->module = array( 'html' => '', 'css' => '', ); } // ----------------------------------------- // output editor // ----------------------------------------- public function editor($id, $values) { // get label $label = (isset($values['options']) && isset($values['options']['label'])) ? $values['options']['label'] : true; $output = $this->render($id, $values); if(!empty($output)) { $this->module['html'] = $output . '<template class="smp-video-placeholder">' . Placeholder::get('video', $id, false, true, $label) . '</template>'; $this->module['css'] = ''; } else { $this->module['html'] = Placeholder::get('video', $id, false, true, $label); } // output return $this->module; } // ----------------------------------------- // output frontend // ----------------------------------------- public function frontend($id, $values) { // render the actual video when a source is configured $video_html = $this->render($id, $values); if(!empty($video_html)) { $this->module['html'] = $video_html; // poster background on the frontend only $poster = isset($values['options']['poster']) ? $values['options']['poster'] : ''; if(!empty($poster)) { $poster = Image::get($poster, 'full'); $this->module['css'] = ' #content-holder #' . $id . ' video { background: transparent url("' . $poster['src'] . '") 50% 50% / cover no-repeat; } '; } } else { $this->module['html'] = Placeholder::get('video', $id, false, false, false); } // output return $this->module; } // ----------------------------------------- // render video // ----------------------------------------- private function render($id, $values) { // values extract(shortcode_atts( array( 'video_url' => '', 'poster' => '', 'loop' => '', 'muted' => '', 'autoplay' => '', 'hide_controls' => '', 'cover' => '', ), $values['options'] )); // get content $content = isset($values['content']['xl']) ? $values['content']['xl'] : ''; if(!empty($content)) { $src = is_numeric($content) ? wp_get_attachment_url($content) : $content; } else { $src = $video_url; } // no source → no video markup (caller falls back to placeholder) if(empty($src)) { return ''; } // controls $force_hide = self::$is_editor || $hide_controls == 'on'; $controls = $force_hide ? '' : ' controls'; $controls_class = $force_hide ? ' hide-controls' : ' has-controls'; // poster placeholder $poster_html = !empty($poster) ? ' poster="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" ' : ''; // video attributes $video_atts = ''; foreach(array('loop' => $loop, 'muted' => $muted, 'autoplay' => $autoplay) as $attr => $val) { if($val == 'on' && !(self::$is_editor && $attr == 'autoplay')) { $video_atts .= ' ' . $attr; } } // autoplay class $autoplay_class = ($autoplay == 'on' && $muted == 'on' && $hide_controls == 'on') ? ' smp-autoplay' : ''; // html return ' <div class="smp-video is-content' . $controls_class . $autoplay_class . '"> <video class="video" preload="metadata" ' . $controls . ' webkit-playsinline playsinline' . $poster_html . $video_atts . '> <source src="' . $src . '" type="video/' . Get::video_type($src) . '"> </video> </div> '; } } // instance Editor::$modules['video'] = new VideoModule; ?>
💾 保存文件
← 返回文件管理器