Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public function handle_link_classes( $atts, $item, $args, $depth ) {
- $classes = $depth ? 'elementor-sub-item' : 'elementor-item';
- $is_anchor = false !== strpos( $atts['href'], '#' );
- if ( ! $is_anchor && in_array( 'current-menu-item', $item->classes ) ) {
- $classes .= ' elementor-item-active';
- }
- if ( $is_anchor ) {
- $classes .= ' elementor-item-anchor';
- }
- if ( empty( $atts['class'] ) ) {
- $atts['class'] = $classes;
- } else {
- $atts['class'] .= ' ' . $classes;
- }
- return $atts;
- }
- public function handle_sub_menu_classes( $classes ) {
- $classes[] = 'cmsmasters_nav_menu--dropdown';
- return $classes;
- }
- protected $nav_menu_index = 1;
- protected function get_nav_menu_index() {
- return $this->nav_menu_index++;
- }
- protected function render() {
- $available_menus = $this->get_available_menus();
- if ( ! $available_menus ) {
- return;
- }
- $settings = $this->get_active_settings();
- $args = [
- 'echo' => false,
- 'menu' => $settings['nav_menu'],
- 'menu_class' => 'cmsmasters_nav_menu',
- 'menu_id' => 'menu-' . $this->get_nav_menu_index() . '-' . $this->get_id(),
- 'fallback_cb' => '__return_empty_string',
- 'container' => '',
- ];
- if ( 'vertical' === $settings['layout'] ) {
- $args['menu_class'] .= ' sm-vertical';
- }
- // Add custom filter to handle Nav Menu HTML output.
- add_filter( 'nav_menu_link_attributes', [ $this, 'handle_link_classes' ], 10, 4 );
- add_filter( 'nav_menu_submenu_css_class', [ $this, 'handle_sub_menu_classes' ] );
- add_filter( 'nav_menu_item_id', '__return_empty_string' );
- // General Menu.
- $menu_html = wp_nav_menu( $args );
- // Dropdown Menu.
- $args['menu_id'] = 'menu-' . $this->get_nav_menu_index() . '-' . $this->get_id();
- $dropdown_menu_html = wp_nav_menu( $args );
- // Remove all our custom filters.
- remove_filter( 'nav_menu_link_attributes', [ $this, 'handle_link_classes' ] );
- remove_filter( 'nav_menu_submenu_css_class', [ $this, 'handle_sub_menu_classes' ] );
- remove_filter( 'nav_menu_item_id', '__return_empty_string' );
- if ( empty( $menu_html ) ) {
- return;
- }
- $this->add_render_attribute( 'menu-toggle', 'class', [
- 'elementor-menu-toggle',
- ] );
- // if ( Plugin::elementor()->editor->is_edit_mode() ) {
- // $this->add_render_attribute( 'menu-toggle', [
- // 'class' => 'elementor-clickable',
- // ] );
- // }
- if ( 'dropdown' !== $settings['layout'] ) :
- $this->add_render_attribute( 'main-menu', 'class', [
- 'cmsmasters_nav_menu--main',
- 'cmsmasters_nav_menu__container',
- 'cmsmasters_nav_menu--layout-' . $settings['layout'],
- ] );
- if ( $settings['pointer'] ) :
- $this->add_render_attribute( 'main-menu', 'class', 'e--pointer-' . $settings['pointer'] );
- foreach ( $settings as $key => $value ) :
- if ( 0 === strpos( $key, 'animation' ) && $value ) :
- $this->add_render_attribute( 'main-menu', 'class', 'e--animation-' . $value );
- break;
- endif;
- endforeach;
- endif; ?>
- <nav <?php echo $this->get_render_attribute_string( 'main-menu' ); ?>><?php echo $menu_html; ?></nav>
- <?php
- endif;
- ?>
- <div <?php echo $this->get_render_attribute_string( 'menu-toggle' ); ?>>
- <i class="eicon" aria-hidden="true"></i>
- <span class="elementor-screen-only"><?php _e( 'Menu', 'elementor-pro' ); ?></span>
- </div>
- <nav class="cmsmasters_nav_menu--dropdown cmsmasters_nav_menu__container"><?php echo $dropdown_menu_html; ?></nav>
- <?php
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement