HEX
Server: nginx/1.28.1
System: Linux iZgw8b5bpgd4jyptfmmmxgZ 6.6.102-5.2.alnx4.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Nov 27 23:11:10 CST 2025 x86_64
User: www (1000)
PHP: 8.2.28
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/www.scdc-marine.com/wp-content/themes/heku-cms/HekuClass/Admin/Cmb2MainOptions.php
<?php

namespace Heku\HekuClass\Admin;

/**
 * @package     Heku\HekuClass\Admin
 * @subpackage  Classes/Cmb2MainOptions
 * @author      Heku Daleconan <http://www.daleconan.com>
 * @copyright   Copyright (c) 2022-2023, Heku Daleconan
 * @license     http://opensource.org/licenses/gpl-2.0.php GNU Public License
 */

class Cmb2MainOptions {

    /** 
     * 类实现单例模式,类的独生子女
     */
    private static $instance;

    /**
     * 依赖注入的接口 Instance 方法
     * 目标是 保证 init() 初始化方法 只执行一次
     *
     * @return self  唯一实例化的本类
     */
    public static function instance() {
        if ( ! isset( self::$instance ) ) {
            self::$instance = new self;
            self::$instance->init();
        }
        return self::$instance;
    }

    private function init() {

        add_action('cmb2_admin_init',array($this,'main_options_page'),101,5);

    }

    //默认设置项
    public static $default_settings = array(
        'wrapper_width'=>'1100',
        //打赏
        'doge_accessKey'=>'',
        'doge_secretKey'=>'',
        //海报
        'single_poster_default_img'=>'',
        //评论
        'comment_close'=>1,
        'comment_use_image'=>1
    );

    /**
     * 创建 Menu 设置 页面
     */
    public function main_options_page(){

        // 全局 参数设置 Global
        $this->menu_global_options();

        // 首页 图文设置 Index
        $this->menu_index_options();

        // 底部 图文设置 Footer
        $this->menu_footer_options();

        // 分类 排版设置 
        $this->menu_cat_model_options();

        // 产品 排版设置
        $this->menu_product_single_options();

        // 新闻 排版设置
        $this->menu_news_single_options();

    }

    /**
     *  全局 参数 设置
     */
    public function menu_global_options(){

        $global_options = new_cmb2_box(array(
            'id'	        =>	'heku_options_page',                        // 列表的ID
            'icon_url'	    =>	'dashicons-admin-generic',
            'option_key'    =>  'heku_global_options',                        // heku_get_option('global_options','index_partner_img')
            'position'      => 3,
            'show_on'	    =>	array(
                'options-page'  => 'heku_main_options',
                ),
            'object_types'  =>  array( 'options-page' ),
            'menu_title'    =>  __('主 题 设 置','heku'),
            'tab_group'     => 'heku_template_options',
            'tab_title'     =>  __('全局设置','heku'),
        ));

        // 全局设置 模块 '<div class="links-module cmb-row"> <h2 style="padding-left: 10px;">全局设置</h2>',

            $global_options->add_field(array(
                'before_row'=>'<div class="links-module cmb-row"> <h2 style="padding-left: 10px;">联系我们</h2>',
                'name'=>__('公司名称','heku'),
                'id'=>'global_company',
                'type'    => 'text',
                'default' => '',
                'desc'=>__(' 公司名称,顶部调用,<span class="heku-debug"> 调用ID:<code> global_company </code> </span>','heku')
            ));

            $global_options->add_field(array(
                'name'=>__('公司邮箱','heku'),
                'id'=>'global_email',
                'type'    => 'text',
                'default' => '',
                'desc'=>__(' 公司邮箱,默认收件地址,顶部,侧边栏和联系我们页面调用,<span class="heku-debug"> 调用ID:<code> global_email </code> </span>','heku')
            ));

            $global_options->add_field(array(
                'name'=>__('公司地址','heku'),
                'id'=>'global_address',
                'type'    => 'text',
                'default' => '',
                'desc'=>__(' 公司地址,联系我们页面和测边栏调用,<span class="heku-debug"> 调用ID:<code> global_address </code> </span>','heku')
            ));

            $global_options->add_field(array(
                'name'=>__('公司手机号码','heku'),
                'id'=>'global_phone',
                'type'    => 'text',
                'default' => '',
                'desc'=>__(' 公司地址,测边栏和联系我们页面调用字段,<span class="heku-debug"> 调用ID:<code> global_phone </code> </span>','heku')
            ));
            
            $global_options->add_field(array(
                'name'=>__('公司固定电话','heku'),
                'id'=>'global_telephone',
                'type'    => 'text',
                'default' => '',
                'after_row'=>'</div>',
                'desc'=>__(' 公司固定电话,测边栏和联系我们页面调用字段,<span class="heku-debug"> 调用ID:<code> global_telephone </code> </span>','heku')
            ));
            
            $global_options->add_field( array(
                'name'    => __( '导航 Logo 图标', 'heku' ),
                'id'      => 'logo_ico',
                'type'    => 'file',
                'options' => array(
                    'url' => true, 
                ),
                'text'    => array(
                    'add_upload_file_text' => __( '选择 网站 ICO 图片', 'heku' ),
                ),
                'default'   => HEKU_THEME_URI .  '/assets/img/favicon.ico.png',
                'query_args' => array(
                    'type' => array(
                        'image/svg+xml',
                        'image/gif',
                        'image/jpeg',
                        'image/png',
                        'image/ico',
                    ),
                ),
                'desc'    => sprintf(__( ' Logo ICO 图片 ,建议使用 %s 格式的图片。%s ', 'heku' ),'<code> .ico </code>','<span class="heku-debug"> 字段ID:<code> logo_ico </code> </span> '),
            ));

    
        // 全局设置 模块结束 'after_row'=>'</div>'

    }

    /**
     *  首页 图文 设置
     */
    public function menu_index_options(){

        $heku_index = new_cmb2_box( array(
            'id'            => 'heku_template_options_page',
            'object_types'  => array( 'options-page' ),
            'option_key'    => 'heku_template_main',
            'menu_title'    =>  __('首页图文设置','heku'),
            'parent_slug'   => 'heku_main_options',
            'tab_group'     => 'heku_template_options',
            'tab_title'     => __('首页图文','b2'),
           
        ));

        // 首页 图文 参数设置

            $heku_index->add_field( array(
                'before_row'=>'<div class=" cmb-row"> <h2 style="padding-left: 10px;margin-bottom: 0px;"></h2>',
                'name'    => __( '导航 Logo 图标', 'heku' ),
                'id'      => 'logo_pr_img',
                'type'    => 'file',
                'options' => array(
                    'url' => true, 
                ),
                'text'    => array(
                    'add_upload_file_text' => __( '选择 Logo 图片', 'heku' ),
                ),
                'default'   => HEKU_THEME_URI .  '/assets/themes/images/logo-top-1.png',
                'query_args' => array(
                    'type' => array(
                        'image/svg+xml',
                        'image/gif',
                        'image/jpeg',
                        'image/png',
                    ),
                ),
                'desc'    => sprintf(__( ' Logo 图片 ,建议使用 %s 格式的图片。%s ', 'heku' ),'<code> .png </code>','<span class="heku-debug"> 字段ID:<code> logo_pr_img </code> </span> '),
            ));

            $banner_group = $heku_index->add_field( array(
                'id'          => 'banner_fliter_group',
                'type'        => 'group',
                'show_on_cb' => function( $cmb ) { $status =  heku_get_option( 'template_main', 'fliter_group2' );  return '1' === '1';  },
                'options'     => array(
                    'group_title'       => __( '筛选{#}', 'heku' ), // since version 1.1.4, {#} gets replaced by row number
                    'add_button'        => __( '添加新 Banner 图片', 'heku' ),
                    'remove_button'     => __( '删除 Banner 图片', 'heku' ),
                    'sortable'          => true,
                    'closed'         => true, // true to have the groups closed by default
                    'remove_confirm' => __( '确定要删除这个筛选吗?', 'heku' ), // Performs confirmation before removing group.
                ),
                'description' => sprintf( __( ' Banner 轮播图片 + 轮播排版格式 <p> 注意拖动时候,列表第一个的排序修改是无效的,无法保存,请展开,使用内置的下移按钮修改排序。 %s </p>', 'b2' ),'<span class="heku-debug"> 分组ID:<code> banner_fliter_group </code> </span> ' ),
                'after_row'=>'</div>',
            ));

            // Banner group_field 轮播图的样式

                $heku_index->add_group_field( $banner_group ,array(
                    'name'  => sprintf(__(' Banner 图的简称 %s','heku'),'<span class="red">(必填)</span>'),
                    'id'    => 'title',
                    'type'  => 'text',
                    'desc'  => __('给这个筛选起个名字','heku'),
                    'attributes' => array(
                        'required' => 'required',
                    ),
                ));
                $heku_index->add_group_field( $banner_group ,array(
                    'before_row'=>'<div class="cmb-row ">',
                    'name'=>__('显示在哪些地方','heku'),
                    'id'=>'banner_used',
                    'type'    => 'multicheck_inline',
                    'desc'    => '多选,首页高度自定义,配合 slider_type 展示样式选择',
                    'options' => array(
                        'home_banner' =>__('首页 Banner 背景','heku'),
                        'news_banner' => __( '新闻页 Banner背景', 'heku' ),
                        'post_banner' => __( '产品单独显示 Banner背景', 'heku' ),
                        'contact_banner' => __( '联系我们显示 Banner背景', 'heku' ),
                    ),
                    'select_all_button' => false,
                    'default' => array('home_banner'),
                    'after_row'=>'</div>',
                ));

                $slider = apply_filters('b2_admin_index_mudules_slider_settings', array(
                    'options'=>array(
                        'home_banner-1' => __('首页视频 Bnner 样式 home_banner-1','heku'), 
                        'home_banner-2' => __('首页视频 Bnner 样式 home_banner-2','heku'), 
                        'news_banner-1' => __('新闻分类 Bnner 样式 news_banner-1','heku'), 
                        'post_banner-1' => __('产品分类 Bnner 样式 post_banner-1','heku'), 
                    ),
                    'images'       => array(
                        'home_banner-1' => '/Assets/admin/images/slider-1.svg',
                        'home_banner-2' => '/Assets/admin/images/slider-2.svg',
                        'news_banner-1' => '/Assets/admin/images/slider-3.svg',
                        'post_banner-1' => '/Assets/admin/images/slider-3.svg',
                    )
                ));

                $heku_index->add_group_field( $banner_group, array(
                    'name'  => __( ' Banner 轮播图的样式 ', 'b2' ),
                    'id'    => 'slider_type',
                    'type'  => 'radio_image',
                    'classes'   => 'model-picked',
                    'options'   => $slider['options'],
                    'images_path'   => HEKU_THEME_URI,
                    'images'    => $slider['images'],
                    'default'   => 'home_banner'
                ));
                // Banner 轮播图的样式 结束
                $heku_index->add_group_field($banner_group,array(
                    'before_row'=>'<div class="home_banner-1-module home_banner-2-module cmb-row set-hidden">',
                    'name'=>' Banner 展示 Class 类名',
                    'id'=>'banner_class1',
                    'type'    => 'text',
                    'default' => '',
                    'desc'=>__('根据 Banner 图片的轮播样式,特殊位置的 Class 类名。<span class="heku-debug"> 字段ID:<code> banner_class1 </code> </span>', 'heku'),
                    'after_row'=>'</div>',
                ));
                $heku_index->add_group_field($banner_group,array(
                    'before_row'=>'<div class="home_banner-1-module home_banner-2-module cmb-row set-hidden">',
                    'name'=>' Banner Url 链接',
                    'id'=>'banner_product_url',
                    'type'    => 'text',
                    'default' => '',
                    'desc'=>__('根据 Banner 图片的轮播样式,具体调用展示不同数量的文字1。<span class="heku-debug"> 字段ID:<code> banner_product_url </code> </span>', 'heku'),
                    'after_row'=>'</div>',
                ));
                $heku_index->add_group_field($banner_group,array(
                    'before_row'=>'<div class="home_banner-1-module news_banner-1-module  home_banner-2-module cmb-row set-hidden">',
                    'name'=>' Banner 标题或描述 1',
                    'id'=>'banner_title1',
                    'type'    => 'text',
                    'default' => '',
                    'desc'=>__('根据 Banner 图片的轮播样式,具体调用展示不同数量的文字1。<span class="heku-debug"> 字段ID:<code> banner_title1 </code> </span>', 'heku'),
                    'after_row'=>'</div>',
                ));
                $heku_index->add_group_field( $banner_group,array(
                    'before_row'=>'<div class="home_banner-1-module news_banner-1-module home_banner-2-module cmb-row set-hidden">',
                    'name'=>' Banner 标题或描述 2',
                    'id'=>'banner_title2',
                    'type'    => 'text',
                    'default' => '',
                    'desc'=> __('根据 Banner 图片的轮播样式,具体调用展示不同数量的文字2。 <span class="heku-debug"> 字段ID:<code> banner_title2 </code> </span>', 'heku'),
                    'after_row'=>'</div>',
                ));
                $heku_index->add_group_field( $banner_group,array(
                    'before_row'=>'<div class="home_banner-1-module  home_banner-2-module cmb-row set-hidden">',
                    'name'=>' Banner 描述 1',
                    'id'=>'banner_des1',
                    'type'    => 'text',
                    'default' => '',
                    'desc'=> __('根据 Banner 图片的轮播样式,具体调用展示不同数量的文字2。 <span class="heku-debug"> 字段ID:<code> banner_des1 </code> </span>', 'heku'),
                    'after_row'=>'</div>',
                ));

                $heku_index->add_group_field( $banner_group,array(
                    'before_row'=>'<div class="home_banner-1-module  home_banner-2-module cmb-row set-hidden">',
                    'name' => '轮播图片( 特殊展示样式使用 )',
                    'desc' => '产品轮播图片,点击编辑特殊字段,图片尺寸建议1:1 ,尺寸建议60 X 60像素,; 调用ID: <code> product_imgs </code>',
                    'id'   => 'product_imgs',
                    'type' => 'file_list',
                    'preview_size' => array( 100, 100 ),
                    'text' => array(
                        'add_upload_files_text' => '添加产品图片',
                        'remove_image_text' => '删除图片',
                        'file_text' => '文件:',
                        'file_download_text' => '下载文件',
                        'remove_text' => '删除',
                    ),
                    'after_row'=>'</div>'
                ));


                $heku_index->add_group_field( $banner_group, array(
                    'before_row'=>'<div class="home_banner-1-module  home_banner-2-module cmb-row set-hidden">',
                    'name'    => __( 'Banner 前景图片(产品)', 'heku' ),
                    'desc'    => __( '某些 展示样式下使用,建议使用<code> image/png </code> 的透明图片,以适应展示需求。<span class="heku-debug"> 字段ID:<code> banner_pr_img1 </code> </span>', 'heku' ),
                    'id'      => 'banner_pr_img1',
                    'type'    => 'file',
                    'options' => array(
                        'url' => true, 
                    ),
                    'text'    => array(
                        'add_upload_file_text' => __( '选择 Banner 图片', 'b2' ),
                    ),
                    'query_args' => array(
                        'type' => array(
                            'image/svg+xml',
                            'image/gif',
                            'image/jpeg',
                            'image/png',
                        ),
                    ), 
                    'after_row'=>'</div>',
                ));
                $heku_index->add_group_field( $banner_group, array(
                    'before_row'=>'<div class="cmb-row">',
                    'name'    => __( 'Banner 背景(图片)', 'heku' ),
                    'id'      => 'banner_bg_img',
                    'type'    => 'file',
                    'options' => array(
                        'url' => true, 
                    ),
                    'text'    => array(
                        'add_upload_file_text' => __( '选择 Banner 图片', 'heku' ),
                    ),
                    //'default'   => HEKU_THEME_URI .  '/Assets/admin/images/ed-video.png',
                    'query_args' => array(
                        'type' => array(
                            'image/svg+xml',
                            'image/gif',
                            'image/jpeg',
                            'image/png',
                        ),
                    ),
                    'desc'    => sprintf(__( ' Banner 图片或是背景,建议使用 %s 格式的图片,以适应高分辨率屏幕。%s ', 'heku' ),'<code>.svg</code>','<span class="heku-debug"> 字段ID:<code> banner_bg_img </code> </span> '),
                    'after_row'=>'</div>',
                ));
                $heku_index->add_group_field( $banner_group, array(
                    'before_row'=>'<div class="cmb-row ">',
                    'name'    => __( 'Banner 背景(视频)', 'heku' ),
                    'id'      => 'banner_bg_video',
                    'type'    => 'file',
                    'options' => array(
                        'url' => true, 
                    ),
                    'text'    => array(
                        'add_upload_file_text' => __( '选择 Banner 图片', 'heku' ),
                    ),
                    //'default'   => HEKU_THEME_URI .  '/Assets/admin/images/ed-video.png',
                    'query_args' => array(
                        'type' => array(
                            'image/svg+xml',
                            'image/gif',
                            'image/jpeg',
                            'image/png',
                        ),
                    ),
                    'desc'    => sprintf(__( ' Banner 图片或是背景,建议使用 %s 格式的图片,以适应高分辨率屏幕。%s ', 'heku' ),'<code>.svg</code>','<span class="heku-debug"> 字段ID:<code> banner_bg_video </code> </span> '),
                    'after_row'=>'</div>',
                ));
                $heku_index->add_group_field( $banner_group, array(
                    'before_row'=>'<div class="home_banner-1-module  home_banner-2-module cmb-row set-hidden">',
                    'name' => __(' 自定义 CSS 样式','b2'),
                    'id' => 'banner_customcss',  
                    'default' => '.heku-admin-wrap{padding-top: 20px;}',
                    'type' => 'textarea_small',
                    'options' => array( 'disable_codemirror' => true ),
                    'desc' => '处理由于上传大小差异,文字差异导致的展现不协调,进行 css 样式覆盖和添加,注意 css 样式独有,不要破坏其它页面展示。<span class="heku-debug"> 字段ID:<code> banner_customcss </code> </span> ',
                    'after_row'=>'</div>',
                ));

            // Banner group_field 设置

            // 首页产品调用

                $heku_index->add_field( array(
                    'before_row'=>'</div><div class=" cmb-row"> <h2 style="padding-left: 10px;margin-bottom: 0px;">首页产品调用</h2>',
                    'name'    => __( '首页选择的产品 Posts', 'heku' ),
                    'desc'    => __( '首页选择的产品,轮播', 'heku' ),
                    'id'      => 'index_attached_posts',
                    'type'    => 'custom_attached_posts',
                    'show_names'        => false,
                    //'render_row_cb' => array( $this , 'yourprefix_render_row_cb' ),
                    'column'  => true, // Output in the admin post-listing as a custom column. https://github.com/CMB2/CMB2/wiki/Field-Parameters#column
                    'options' => array(
                        'show_thumbnails' => true, // Show thumbnails on the left
                        'filter_boxes'    => true, // Show a text box for filtering the results
                        'query_args'      => array(
                            'posts_per_page' => 10,
                            'post_type'      => array('post'),
                        ), 
                    ),
                    'after_row'=>'</div>'
                ));
            
            // 首页产品调用

            // 首页合作伙伴

                $heku_index->add_field( array(
                    'before_row'=>'<div class="cmb-row"> <h2 style="padding-left: 10px;margin-bottom: 10px;">首页合作伙伴调用</h2>',
                    'name' => '首页合作伙伴 Partner',
                    'desc' => '首页合作伙伴轮播图片,点击编辑特殊字段,图片尺寸建议1:1 ,尺寸建议60 X 60像素,; 调用ID: <code> index_partner_img </code>',
                    'id'   => 'index_partner_img',
                    'type' => 'file_list',
                    'preview_size' => array( 100, 100 ),
                    'text' => array(
                        'add_upload_files_text' => '添加产品图片',
                        'remove_image_text' => '删除图片',
                        'file_text' => '文件:',
                        'file_download_text' => '下载文件',
                        'remove_text' => '删除',
                    ),
                    'after_row'=>'</div>',
                ));

            // 首页合作伙伴
        // 首页 图文 参数设置
    }


    /**
     *  底部 图文 设置 设置
     */
    public function menu_footer_options(){

        $heku_footer = new_cmb2_box( array(
            'id'            => 'heku_footer_menu_options',
            'object_types'  => array( 'options-page' ),
            'option_key'    => 'heku_footer_menu',
            'menu_title'    =>  __('底部图文设置','heku'),
            'parent_slug'   => 'heku_main_options',
            'tab_group'     => 'heku_template_options',
            'tab_title'     => __('底部图文','b2'),
           
        ));
    }

    /**
     *  分类 排版 设置
     */
    public function menu_cat_model_options(){

        $cat_model = new_cmb2_box( array(
            'id'            => 'heku_cat_model_options',
            'object_types'  => array( 'options-page' ),
            'option_key'    => 'heku_cat_model',
            'menu_title'    =>  __('分类排版设置','heku'),
            'parent_slug'   => 'heku_main_options',
            'tab_group'     => 'heku_template_options',
            'tab_title'     => __('分类排版','b2'),
           
        ));
    }

    /**
     *  产品单页 设置
     */
    public function menu_product_single_options(){

        $product_single = new_cmb2_box( array(
            'id'            => 'heku_product_single_options',
            'object_types'  => array( 'options-page' ),
            'option_key'    => 'heku_product_single',
            'menu_title'    =>  __('产品单页设置','heku'),
            'parent_slug'   => 'heku_main_options',
            'tab_group'     => 'heku_template_options',
            'tab_title'     => __('产品单页','b2'),
           
        ));
    }

    /**
     *  新闻 文章单页 设置
     */
    public function menu_news_single_options(){

        $news_single = new_cmb2_box( array(
            'id'            => 'heku_news_single_options',
            'object_types'  => array( 'options-page' ),
            'option_key'    => 'heku_news_single',
            'menu_title'    =>  __('新闻单页设置','heku'),
            'parent_slug'   => 'heku_main_options',
            'tab_group'     => 'heku_template_options',
            'tab_title'     => __('新闻单页','b2'),
        ));

    }

}