/**
* 自定义器预览功能
* 实时预览关于我们时间轴设置的变化
*/
(function($) {
'use strict';
// 关于我们时间轴实时预览
initAboutTimelinePreview();
// 视频Banner实时预览
initVideoBannerPreview();
// 业务流程实时预览
initBusinessProcessPreview();
// 关于我们时间轴预览功能
function initAboutTimelinePreview() {
// 时间轴显示状态实时预览
wp.customize('about_timeline_show', function(value) {
value.bind(function(newval) {
const timelineContainer = $('.about-timeline-block');
if (newval) {
timelineContainer.show();
} else {
timelineContainer.hide();
}
});
});
// 时间轴标题实时预览
wp.customize('about_timeline_title', function(value) {
value.bind(function(newval) {
$('.about-timeline-block .timeline-title').text(newval);
});
});
// 监听各个时间轴项目字段的变化
for (let i = 1; i <= 5; i++) {
// 监听启用状态变化
wp.customize(`about_timeline_item_${i}_enabled`, function(value) {
value.bind(function(newval) {
updateTimelineFromFields();
});
});
// 监听年份变化
wp.customize(`about_timeline_item_${i}_year`, function(value) {
value.bind(function(newval) {
updateTimelineFromFields();
});
});
// 监听标题变化
wp.customize(`about_timeline_item_${i}_title`, function(value) {
value.bind(function(newval) {
updateTimelineFromFields();
});
});
// 监听描述变化
wp.customize(`about_timeline_item_${i}_description`, function(value) {
value.bind(function(newval) {
updateTimelineFromFields();
});
});
// 监听图片变化
wp.customize(`about_timeline_item_${i}_image`, function(value) {
value.bind(function(newval) {
updateTimelineFromFields();
});
});
}
}
// 从字段获取时间轴数据并更新预览
function updateTimelineFromFields() {
const timelineData = [];
// 收集所有启用的时间轴项目数据
for (let i = 1; i <= 5; i++) {
const enabled = wp.customize(`about_timeline_item_${i}_enabled`).get();
if (enabled) {
const year = wp.customize(`about_timeline_item_${i}_year`).get();
const title = wp.customize(`about_timeline_item_${i}_title`).get();
const description = wp.customize(`about_timeline_item_${i}_description`).get();
const image = wp.customize(`about_timeline_item_${i}_image`).get();
// 只有当年份和标题都不为空时才添加
if (year && title) {
timelineData.push({
year: year,
title: title,
description: description || '',
image: image || ''
});
}
}
}
if (timelineData.length > 0) {
updateTimelinePreview(timelineData);
}
}
// 更新时间轴预览内容
function updateTimelinePreview(timelineData) {
const timelineContainer = $('.timeline-container');
const swiperContainer = $('.swiper-wrapper');
if (timelineContainer.length === 0 || swiperContainer.length === 0) {
return;
}
// 更新时间轴点
let timelineHtml = '';
timelineData.forEach((item, index) => {
const activeClass = index === 0 ? ' active' : '';
timelineHtml += `
`;
});
timelineContainer.html(timelineHtml);
// 更新Swiper幻灯片
let swiperHtml = '';
timelineData.forEach((item, index) => {
swiperHtml += `
${item.title}
${item.description}
`;
});
swiperContainer.html(swiperHtml);
// 重新初始化时间轴(如果存在)
if (window.initTimelineBlocks) {
// 销毁现有的实例
$('.about-timeline-block').each(function() {
const instance = $(this).data('timeline-instance');
if (instance && typeof instance.destroy === 'function') {
instance.destroy();
}
$(this).removeData('timeline-instance');
$(this).removeData('timeline-initialized');
});
// 重新初始化
setTimeout(() => {
window.initTimelineBlocks();
}, 100);
}
}
// 视频Banner预览功能
function initVideoBannerPreview() {
// 背景图片实时预览
wp.customize('video_banner_bg_image', function(value) {
value.bind(function(newval) {
const bannerContainer = $('.video-banner-block');
if (bannerContainer.length) {
if (newval) {
bannerContainer.css('background-image', 'url(' + newval + ')');
} else {
bannerContainer.css('background-image', 'none');
}
}
});
});
// 标题实时预览
wp.customize('video_banner_content_title', function(value) {
value.bind(function(newval) {
$('.video-banner-content .banner-title').text(newval);
});
});
// 副标题实时预览
wp.customize('video_banner_content_subtitle', function(value) {
value.bind(function(newval) {
$('.video-banner-content .banner-subtitle').text(newval);
});
});
// 描述实时预览
wp.customize('video_banner_content_description', function(value) {
value.bind(function(newval) {
$('.video-banner-content .banner-description').text(newval);
});
});
// 高度实时预览
wp.customize('video_banner_height', function(value) {
value.bind(function(newval) {
const bannerContainer = $('.video-banner-block .video-banner-container');
if (bannerContainer.length) {
bannerContainer.css('height', newval + 'px');
}
});
});
// 视频背景启用/禁用
wp.customize('video_banner_video_bg_enabled', function(value) {
value.bind(function(newval) {
const videoBg = $('.video-banner-video-bg');
if (videoBg.length) {
if (newval) {
videoBg.show();
initVideoBackground();
} else {
videoBg.hide();
}
}
});
});
// 视频背景URL实时预览
wp.customize('video_banner_video_bg_url', function(value) {
value.bind(function(newval) {
const videoBg = $('.video-banner-video-bg video');
if (videoBg.length && newval) {
videoBg.attr('src', newval);
// 重新加载视频
videoBg[0].load();
}
});
});
// 视频背景不透明度实时预览
wp.customize('video_banner_video_bg_opacity', function(value) {
value.bind(function(newval) {
const videoBg = $('.video-banner-video-bg video');
if (videoBg.length) {
videoBg.css('opacity', newval / 100);
}
});
});
// 区块ID实时预览
wp.customize('video_banner_block_id', function(value) {
value.bind(function(newval) {
const bannerBlock = $('.video-banner-block');
if (bannerBlock.length) {
bannerBlock.attr('id', newval);
}
});
});
// 区块类名实时预览
wp.customize('video_banner_block_class', function(value) {
value.bind(function(newval) {
const bannerBlock = $('.video-banner-block');
if (bannerBlock.length) {
// 移除之前的自定义类名(保留默认类名)
bannerBlock.removeClass(function(index, className) {
return (className.match(/(^|\s)custom-\S+/g) || []).join(' ');
});
// 添加新的类名
if (newval) {
bannerBlock.addClass(newval);
}
}
});
});
// 初始化视频背景
initVideoBackground();
}
// 初始化视频背景
function initVideoBackground() {
const videoBg = $('.video-banner-video-bg video');
if (videoBg.length) {
const video = videoBg[0];
// 设置视频属性
video.muted = true;
video.loop = true;
video.playsInline = true;
// 尝试自动播放
const playPromise = video.play();
if (playPromise !== undefined) {
playPromise.catch(function(error) {
console.log('视频自动播放失败:', error);
// 可以在这里添加用户交互后播放的逻辑
});
}
// 视频加载完成后设置不透明度
video.addEventListener('loadeddata', function() {
const opacity = wp.customize('video_banner_video_bg_opacity')();
videoBg.css('opacity', opacity / 100 || 1);
});
// 错误处理
video.addEventListener('error', function(e) {
videoBg.hide();
});
}
}
// 实时更新视频Banner样式
function updateVideoBannerStyles() {
const bannerContainer = $('.video-banner-block .video-banner-container');
if (bannerContainer.length) {
// 获取当前设置值
const height = wp.customize('video_banner_height')();
const bgImage = wp.customize('video_banner_bg_image')();
// 应用样式
if (height) {
bannerContainer.css('height', height + 'px');
}
if (bgImage) {
bannerContainer.css('background-image', 'url(' + bgImage + ')');
}
}
}
// 页面加载完成后初始化
$(document).ready(function() {
// 延迟执行以确保DOM完全加载
setTimeout(function() {
updateVideoBannerStyles();
initVideoBackground();
}, 500);
});
// 业务流程预览功能
function initBusinessProcessPreview() {
// 业务流程显示状态实时预览
wp.customize('business_process_show', function(value) {
value.bind(function(newval) {
const processContainer = $('.business-process-block');
if (newval) {
processContainer.show();
} else {
processContainer.hide();
}
});
});
// 业务流程标题实时预览
wp.customize('business_process_title', function(value) {
value.bind(function(newval) {
$('.business-process-block .process-title').text(newval);
});
});
// 业务流程副标题实时预览
wp.customize('business_process_subtitle', function(value) {
value.bind(function(newval) {
$('.business-process-block .process-subtitle').text(newval);
});
});
// 监听各个tab的变化
for (let i = 1; i <= 4; i++) {
const tabNumber = i.toString().padStart(2, '0');
// 监听tab标题变化
wp.customize(`business_process_tab_${tabNumber}_title`, function(value) {
value.bind(function(newval) {
$(`.business-process-tabs .tab-item[data-tab="${tabNumber}"] .tab-title`).text(newval);
});
});
// 监听tab描述变化
wp.customize(`business_process_tab_${tabNumber}_description`, function(value) {
value.bind(function(newval) {
$(`.business-process-tabs .tab-item[data-tab="${tabNumber}"] .tab-description`).text(newval);
});
});
// 监听tab图片变化
wp.customize(`business_process_tab_${tabNumber}_image`, function(value) {
value.bind(function(newval) {
const imageContainer = $('.business-process-image');
const currentActiveTab = $('.business-process-tabs .tab-item.active').data('tab');
// 如果当前活动的tab是正在更改的tab,则更新图片
if (currentActiveTab === tabNumber) {
const img = imageContainer.find('img');
if (img.length && newval) {
img.attr('src', newval);
}
}
// 更新数据属性以备后续切换使用
$(`.business-process-tabs .tab-item[data-tab="${tabNumber}"]`).attr('data-image', newval);
});
});
}
// 监听tab切换事件,更新图片预览
$(document).on('click', '.business-process-tabs .tab-item', function() {
const tabNumber = $(this).data('tab');
const imageUrl = $(this).data('image');
const imageContainer = $('.business-process-image');
if (imageUrl && imageContainer.length) {
const img = imageContainer.find('img');
if (img.length) {
// 添加淡出效果
img.fadeOut(200, function() {
$(this).attr('src', imageUrl).fadeIn(200);
});
}
}
});
}
})(jQuery);