Javascript Divi Wordpress主题-更改幻灯片转换速度

Javascript Divi Wordpress主题-更改幻灯片转换速度,javascript,jquery,html,css,wordpress,Javascript,Jquery,Html,Css,Wordpress,我在为客户构建的网站上使用Divi,在主页上我有一个预加载程序设置,在网站显示之前在后台加载页面和图像。唯一的问题是,Divi fullwidth滑块中的第一个幻灯片在页面加载的同时启动,因此当预加载完成并淡出屏幕时,第一个幻灯片变为第二个幻灯片的速度过快 我问过ElegantThemes,他们说我的请求超出了支持范围。我甚至不知道从哪里开始调整任何东西,以便只有第一张幻灯片的时间比其他幻灯片长 因此,我想我的问题是,如何才能更改Divi全宽滑块上第一张幻灯片的过渡时间? 以下是链接: 我想我已

我在为客户构建的网站上使用Divi,在主页上我有一个预加载程序设置,在网站显示之前在后台加载页面和图像。唯一的问题是,Divi fullwidth滑块中的第一个幻灯片在页面加载的同时启动,因此当预加载完成并淡出屏幕时,第一个幻灯片变为第二个幻灯片的速度过快

我问过ElegantThemes,他们说我的请求超出了支持范围。我甚至不知道从哪里开始调整任何东西,以便只有第一张幻灯片的时间比其他幻灯片长

因此,我想我的问题是,如何才能更改Divi全宽滑块上第一张幻灯片的过渡时间?

以下是链接:

我想我已经在/wp content/themes/Divi/includes/builder/main-modules.php下找到了确定幻灯片自动动画速度的代码:

$fullwidth = 'et_pb_fullwidth_slider' === $function_name ? 'on' : 'off';

    $class  = '';
    $class .= 'off' === $fullwidth ? ' et_pb_slider_fullwidth_off' : '';
    $class .= 'off' === $show_arrows ? ' et_pb_slider_no_arrows' : '';
    $class .= 'off' === $show_pagination ? ' et_pb_slider_no_pagination' : '';
    $class .= 'on' === $parallax ? ' et_pb_slider_parallax' : '';
    $class .= 'on' === $auto ? ' et_slider_auto et_slider_speed_' . esc_attr( $auto_speed ) : '';
    $class .= 'on' === $auto_ignore_hover ? ' et_slider_auto_ignore_hover' : '';
    $class .= 'on' === $remove_inner_shadow ? ' et_pb_slider_no_shadow' : '';
    $class .= 'on' === $show_image_video_mobile ? ' et_pb_slider_show_image' : '';

    $output = sprintf(
        '<div%4$s class="et_pb_module et_pb_slider%1$s%3$s%5$s">
            <div class="et_pb_slides">
                %2$s
            </div> <!-- .et_pb_slides -->
        </div> <!-- .et_pb_slider -->
        ',
        $class,
        $content,
        ( $et_pb_slider_has_video ? ' et_pb_preload' : '' ),
        ( '' !== $module_id ? sprintf( ' id="%1$s"', esc_attr( $module_id ) ) : '' ),
        ( '' !== $module_class ? sprintf( ' %1$s', esc_attr( $module_class ) ) : '' )
    );

return $output;
$fullwidth='et\u pb\u fullwidth\u滑块'====$function\u name?'“开”:“关”;
$class='';
$class.='off'==$fullwidth?'et_pb_滑块_全宽_关闭’:“”;
$class.='off'==$show\u箭头?'et_pb_滑块_无箭头':'';
$class.='off'==$show_pagination?'et_pb_滑块_no_pagination':'';
$class.='on'==$parallax?'et_pb_滑块_视差':'';
$class.='on'==$auto?'et_滑块\u自动et_滑块\u速度。esc_attr($自动速度):'';
$class.='on'===$auto\u ignore\u hover?'设置滑块自动忽略悬停“:”;
$class.='on'===$remove\u inner\u shadow?'et_pb_滑块_no_shadow':'';
$class.='on'==$show\u image\u video\u mobile?'et_pb_滑块_显示图像':'';
$output=sprintf(
'
%2元
',
$class,
$content,
($et_pb_slider_有视频?'et_pb_preload':''),
(“”!=$module_id?sprintf('id=“%1$s”),esc_attr($module_id)):“”),
(“”!=$module_class?sprintf(“%1$s”,esc_attr($module_class)):“”)
);
返回$output;

我如何调整它,使第一张幻灯片的滑动速度与其他幻灯片不同?

不确定您使用的是哪个版本的
Divi
,但在我的版本(
Divi 1.9.1
)中有一个名为
js/custom.js
的文件,负责运行幻灯片放映

在第119-125行附近,您会发现此函数:

function et_slider_auto_rotate(){
    if ( settings.slideshow && et_slides_number > 1 && ! $et_slider.hasClass( 'et_slider_hovered' ) ) {
        et_slider_timer = setTimeout( function() {
            $et_slider.et_slider_move_to( 'next' );
        }, settings.slideshow_speed );
    }
}
settings.slideshow\u speed
变量控制每张幻灯片的显示时间。您可能可以如下调整此文件。请注意,以下是动态伪代码,未经测试。它的评论,所以你可以跟随。我的示例只处理旋转木马的第一张幻灯片。因此,当第一张幻灯片重复时,除非您进行更多的黑客攻击,否则您将被困在与其他幻灯片相同的计时控件中

// somewhere inside the same function block closure in js/custom.js

// first, create some arbitrary variable to manage whether or not we've started
var hasCarouselStarted

// create our own custom function to get the interval between slides
function getMyInterval () {
  // our carousel has already started, so, return the default interval
  if (hasCarouselStarted) {
    return settings.slideshow_speed
  }
  // we got here, so this is the first time the carousel is start, 
  // mark the flag as true so we won't get here anymore
  hasCarouselStarted = true
  // return time in milliseconds for the first slide. 
  return 1 * 60 * 1000    // 1 min * 60 seconds & 1000 milliseconds
}

function et_slider_auto_rotate(){
  if ( settings.slideshow && et_slides_number > 1 && ! $et_slider.hasClass( 'et_slider_hovered' ) ) {
    et_slider_timer = setTimeout( function() {
      $et_slider.et_slider_move_to( 'next' );
    // use our function to determine slide speed instead of the original settings.slideshow_speed
    }, getMyInterval() );
  }
}

希望有帮助

因为您使用的是一个简单的淡入淡出幻灯片,所以我建议您避免使用这种复杂的插件,特别是如果您了解JS的话。或者选择一个更简单的插件,比如你可以尝试用jQuery在“幻灯片”中添加一个选择器,并用一个新的选择器覆盖当前的转换;具体到那张幻灯片上,尽管有些粗糙