芝麻web文件管理V1.00
编辑当前文件:/www/wwwroot/shphe-en.com/wp-content/plugins/bb-plugin/modules/menu/menu.php
__('菜单', 'fl-builder'), 'description' => __('Renders a WordPress menu.', 'fl-builder'), 'category' => __('基本模块', 'fl-builder'), 'partial_refresh' => true, 'editor_export' => false )); add_action( 'pre_get_posts', __CLASS__ . '::set_pre_get_posts_query', 10, 2 ); add_filter( 'nav_menu_css_class', __CLASS__ . '::render_menu_classes', 10, 2 ); } public static function _get_menus(){ $get_menus = get_terms( 'nav_menu', array( 'hide_empty' => true ) ); $fields = array( 'type' => 'select', 'label' => __( 'Menu', 'fl-builder' ), 'helper' => __( 'Select a WordPress menu that you created in the admin under Appearance > Menus.', 'fl-builder' ) ); if( $get_menus ){ foreach( $get_menus as $key => $menu ){ if( $key == 0 ){ $fields['default'] = $menu->name; } $menus[ $menu->slug ] = $menu->name; } $fields['options'] = $menus; } else { $fields['options'] = array( '' => __( 'No Menus Found', 'fl-builder' ) ); } return $fields; } public function render_toggle_button(){ $toggle = $this->settings->mobile_toggle; if( isset( $toggle ) && $toggle != 'expanded' ){ if( in_array( $toggle, array( 'hamburger', 'hamburger-label' ) ) ){ echo '
'; include FL_BUILDER_DIR .'img/svg/hamburger-menu.svg'; echo '
'; if( $toggle == 'hamburger-label' ){ echo '
'. __( 'Menu', 'fl-builder' ) .'
'; } echo '
'; } elseif( $toggle == 'text' ){ echo '
'. __( 'Menu', 'fl-builder' ) .'
'; } } } public static function set_pre_get_posts_query( $query ) { if ( ! is_admin() && $query->is_main_query() ) { self::$fl_builder_page_id = $query->queried_object_id; } } public static function render_menu_classes( $classes = array(), $menu_item = false ) { //Check if already have the class if ( ! in_array( 'current-menu-item', $classes ) ) { //Check if a menu is the current page if ( self::$fl_builder_page_id == $menu_item->object_id ) { $classes[] = 'current-menu-item'; if ($menu_item->object == 'page') { $classes[] = 'current_page_item'; } } } return $classes; } } /** * Register the module and its form settings. */ FLBuilder::register_module('FLMenuModule', array( 'general' => array( // Tab 'title' => __('General', 'fl-builder'), // Tab title 'sections' => array( // Tab Sections 'general' => array( // Section 'title' => '', // Section Title 'fields' => array( // Section Fields 'menu' => FLMenuModule::_get_menus(), 'menu_layout' => array( 'type' => 'select', 'label' => __( 'Layout', 'fl-builder' ), 'default' => 'horizontal', 'options' => array( 'horizontal' => __( 'Horizontal', 'fl-builder' ), 'vertical' => __( 'Vertical', 'fl-builder' ), 'accordion' => __( 'Accordion', 'fl-builder' ), 'expanded' => __( 'Expanded', 'fl-builder' ), ), 'toggle' => array( 'horizontal' => array( 'fields' => array( 'submenu_hover_toggle', 'menu_align' ), ), 'vertical' => array( 'fields' => array( 'submenu_hover_toggle' ), ), 'accordion' => array( 'fields' => array( 'submenu_click_toggle', 'collapse' ), ), ) ), 'submenu_hover_toggle' => array( 'type' => 'select', 'label' => __( 'Submenu Icon', 'fl-builder' ), 'default' => 'none', 'options' => array( 'arrows' => __( 'Arrows', 'fl-builder' ), 'plus' => __( 'Plus sign', 'fl-builder' ), 'none' => __( 'None', 'fl-builder' ), ) ), 'submenu_click_toggle' => array( 'type' => 'select', 'label' => __( 'Submenu Icon click', 'fl-builder' ), 'default' => 'arrows', 'options' => array( 'arrows' => __( 'Arrows', 'fl-builder' ), 'plus' => __( 'Plus sign', 'fl-builder' ), ) ), 'collapse' => array( 'type' => 'select', 'label' => __('Collapse Inactive', 'fl-builder'), 'default' => '1', 'options' => array( '1' => __('Yes', 'fl-builder'), '0' => __('No', 'fl-builder') ), 'help' => __('Choosing yes will keep only one item open at a time. Choosing no will allow multiple items to be open at the same time.', 'fl-builder'), 'preview' => array( 'type' => 'none' ) ), 'mobile_toggle' => array( 'type' => 'select', 'label' => __( 'Mobile Style', 'fl-builder' ), 'default' => 'expanded', 'options' => array( 'expanded' => __( 'Expanded', 'fl-builder' ), 'hamburger' => __( 'Hamburger Icon', 'fl-builder' ), 'hamburger-label' => __( 'Hamburger Icon + Label', 'fl-builder' ), 'text' => __( 'Menu Button', 'fl-builder' ), ), 'toggle' => array( 'hamburger' => array( 'fields' => array( 'mobile_full_width' ), ), 'hamburger-label' => array( 'fields' => array( 'mobile_full_width' ), ), ) ), 'mobile_full_width' => array( 'type' => 'select', 'label' => __( 'Mobile Width', 'fl-builder' ), 'help' => __( 'Choose Full Width if you want the menu to span the width of the screen on mobile devices.', 'fl-builder' ), 'default' => 'no', 'options' => array( 'no' => __( 'Default', 'fl-builder' ), 'yes' => __( 'Full Width', 'fl-builder' ), ), 'toggle' => array( 'yes' => array( 'fields' => array( 'mobile_menu_bg' ), ), ) ), ) ) ) ), 'style' => array( // Tab 'title' => __('Style', 'fl-builder'), // Tab title 'sections' => array( // Tab Sections 'general_style' => array( 'title' => '', 'fields' => array( 'menu_align' => array( 'type' => 'select', 'label' => __( 'Menu Alignment', 'fl-builder' ), 'default' => 'default', 'options' => array( 'default' => __( 'Default', 'fl-builder' ), 'left' => __( 'Left', 'fl-builder' ), 'center' => __( 'Center', 'fl-builder' ), 'right' => __( 'Right', 'fl-builder' ), ), ), 'drop_shadow' => array( 'type' => 'select', 'label' => __( 'Submenu Drop Shadow', 'fl-builder' ), 'default' => 'yes', 'options' => array( 'no' => __( 'No', 'fl-builder' ), 'yes' => __( 'Yes', 'fl-builder' ), ) ), ) ), 'text_style' => array( 'title' => __('Text', 'fl-builder'), 'fields' => array( 'link_color' => array( 'type' => 'color', 'label' => __('Link Color', 'fl-builder'), 'show_reset' => true, 'preview' => array( 'type' => 'css', 'rules' => array( array( 'selector' => '.fl-menu a, .menu > li > a, .menu > li > .fl-has-submenu-container > a, .sub-menu > li > a', 'property' => 'color' ), array( 'selector' => '.menu .fl-menu-toggle:before, .menu .fl-menu-toggle:after', 'property' => 'border-color' ), ) ) ), 'link_hover_color' => array( 'type' => 'color', 'label' => __('Link Hover Color', 'fl-builder'), 'show_reset' => true, 'preview' => array( 'type' => 'css', 'selector' => '.fl-menu a, .menu > li.current-menu-item > a, .menu > li.current-menu-item > .fl-has-submenu-container > a, .sub-menu > li.current-menu-item > a', 'property' => 'color' ) ), 'text_size' => array( 'type' => 'text', 'label' => __('Link Size', 'fl-builder'), 'default' => '13', 'maxlength' => '3', 'size' => '4', 'description' => 'px', 'preview' => array( 'type' => 'css', 'selector' => '.menu', 'property' => 'font-size', 'unit' => 'px' ) ), 'text_transform' => array( 'type' => 'select', 'label' => __( 'Link Format', 'fl-builder' ), 'default' => 'none', 'options' => array( 'none' => __( 'None', 'fl-builder' ), 'uppercase' => __( 'Uppercase', 'fl-builder' ), 'lowercase' => __( 'Lowercase', 'fl-builder' ), 'capitalize' => __( 'Capitalize', 'fl-builder' ), ), 'preview' => array( 'type' => 'css', 'selector' => '.menu', 'property' => 'text-transform', ) ), 'font_weight' => array( 'type' => 'select', 'label' => __( 'Link Weight', 'fl-builder' ), 'default' => 'normal', 'options' => array( 'normal' => __( 'Normal', 'fl-builder' ), 'bold' => __( 'Bold', 'fl-builder' ), 'light' => __( 'Light', 'fl-builder' ), ), 'preview' => array( 'type' => 'css', 'selector' => '.menu', 'property' => 'font-weight', ) ), 'horizontal_spacing' => array( 'type' => 'text', 'label' => __('Horizontal Spacing', 'fl-builder'), 'default' => '10', 'maxlength' => '3', 'size' => '4', 'description' => 'px', 'preview' => array( 'type' => 'css', 'rules' => array( array( 'selector' => '.menu a', 'property' => 'padding-left', 'unit' => 'px', ), array( 'selector' => '.menu a', 'property' => 'padding-right', 'unit' => 'px', ), ) ) ), 'vertical_spacing' => array( 'type' => 'text', 'label' => __('Vertical Spacing', 'fl-builder'), 'default' => '10', 'maxlength' => '3', 'size' => '4', 'description' => 'px', 'preview' => array( 'type' => 'css', 'rules' => array( array( 'selector' => '.menu a', 'property' => 'padding-top', 'unit' => 'px', ), array( 'selector' => '.menu a', 'property' => 'padding-bottom', 'unit' => 'px', ), ) ) ), ) ), 'menu_style' => array( 'title' => __('Backgrounds', 'fl-builder'), 'fields' => array( 'menu_bg_color' => array( 'type' => 'color', 'label' => __( 'Menu Background Color', 'fl-builder' ), 'show_reset' => true, 'preview' => array( 'type' => 'css', 'selector' => '.menu', 'property' => 'background-color' ) ), 'mobile_menu_bg' => array( 'type' => 'color', 'label' => __( 'Menu Background Color (Mobile)', 'fl-builder' ), 'show_reset' => true, ), 'menu_bg_opacity' => array( 'type' => 'text', 'label' => __('Menu Background Opacity', 'fl-builder'), 'default' => '100', 'maxlength' => '3', 'size' => '4', 'description' => '%' ), 'submenu_bg_color' => array( 'type' => 'color', 'label' => __( 'Submenu Background Color', 'fl-builder' ), 'show_reset' => true, 'default' => 'e3e3e3', 'preview' => array( 'type' => 'css', 'selector' => '.fl-menu .sub-menu', 'property' => 'background-color' ) ), 'submenu_bg_opacity' => array( 'type' => 'text', 'label' => __('Submenu Background Opacity', 'fl-builder'), 'default' => '100', 'maxlength' => '3', 'size' => '4', 'description' => '%' ), 'link_hover_bg_color' => array( 'type' => 'color', 'label' => __( 'Link Background Hover Color', 'fl-builder' ), 'show_reset' => true, 'preview' => array( 'type' => 'css', 'selector' => '.menu > li.current-menu-item > a, .menu > li.current-menu-item > .fl-has-submenu-container > a, .sub-menu > li.current-menu-item > a, .sub-menu > li.current-menu-item > .fl-has-submenu-container > a', 'property' => 'background-color' ) ), ) ), 'separator_style' => array( 'title' => __('Separator', 'fl-builder'), 'fields' => array( 'show_separator' => array( 'type' => 'select', 'label' => __( 'Show Separators', 'fl-builder' ), 'default' => 'no', 'options' => array( 'no' => __( 'No', 'fl-builder' ), 'yes' => __( 'Yes', 'fl-builder' ), ), 'toggle' => array( 'yes' => array( 'fields' => array( 'separator_color', 'separator_opacity' ), ) ), ), 'separator_color' => array( 'type' => 'color', 'label' => __('Separator Color', 'fl-builder'), 'show_reset' => true ), 'separator_opacity' => array( 'type' => 'text', 'label' => __('Separator Opacity', 'fl-builder'), 'default' => '100', 'maxlength' => '3', 'size' => '4', 'description' => '%' ), ) ) ) ), )); class FL_Menu_Module_Walker extends Walker_Nav_Menu { function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) { $indent = ( $depth ) ? str_repeat( "\t", $depth ) : ''; $class_names = $value = ''; $classes = empty( $item->classes ) ? array() : (array) $item->classes; $submenu = $args->has_children ? ' fl-has-submenu' : ''; $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args, $depth ) ); $class_names = ' class="' . esc_attr( $class_names ) . $submenu .'"'; $output .= $indent . '
'; $attributes = ! empty( $item->attr_title ) ? ' title="' . esc_attr( $item->attr_title ) .'"' : ''; $attributes .= ! empty( $item->target ) ? ' target="' . esc_attr( $item->target ) .'"' : ''; $attributes .= ! empty( $item->xfn ) ? ' rel="' . esc_attr( $item->xfn ) .'"' : ''; $attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $item->url ) .'"' : ''; $item_output = $args->has_children ? '
' : ''; $item_output .= $args->before; $item_output .= '
'; $item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after; $item_output .= !empty( $item->description ) ? '
' . $item->description . '
' : ''; $item_output .= '
'; if( $args->has_children ){ $item_output .= '
'; } $item_output .= $args->after; $item_output .= $args->has_children ? '
' : ''; $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args ); } function display_element( $element, &$children_elements, $max_depth, $depth=0, $args, &$output ){ $id_field = $this->db_fields['id']; if ( is_object( $args[0] ) ) { $args[0]->has_children = ! empty( $children_elements[$element->$id_field] ); } return parent::display_element( $element, $children_elements, $max_depth, $depth, $args, $output ); } }