• Hi everybody,

    I need the help of a js expert. I am trying to add one (and maybe more) toggle buttons and menus on a Twentyfourteen-child theme. As the behaviour of search toggle is defined in twentyfourteen/js/functions.js I copied and adapted the related js function as per following (see left-toggle just after the native search-toggle)

    /**
     * Theme functions file
     *
     * Contains handlers for navigation, accessibility, header sizing
     * footer widgets and Featured Content slider
     *
     */
    
    ( function( $ ) {
    	var body    = $( 'body' ),
    		_window = $( window );
    
    	// Enable menu toggle for small screens.
    	( function() {
    		var nav = $( '#primary-navigation' ), button, menu;
    		if ( ! nav ) {
    			return;
    		}
    
    		button = nav.find( '.menu-toggle' );
    		if ( ! button ) {
    			return;
    		}
    
    		// Hide button if menu is missing or empty.
    		menu = nav.find( '.nav-menu' );
    		if ( ! menu || ! menu.children().length ) {
    			button.hide();
    			return;
    		}
    
    		$( '.menu-toggle' ).on( 'click.twentyfourteen', function() {
    			nav.toggleClass( 'toggled-on' );
    		} );
    	} )();
    
    	/*
    	 * Makes "skip to content" link work correctly in IE9 and Chrome for better
    	 * accessibility.
    	 *
    	 * @link http://www.nczonline.net/blog/2013/01/15/fixing-skip-to-content-links/
    	 */
    	_window.on( 'hashchange.twentyfourteen', function() {
    		var element = document.getElementById( location.hash.substring( 1 ) );
    
    		if ( element ) {
    			if ( ! /^(?:a|select|input|button|textarea)$/i.test( element.tagName ) ) {
    				element.tabIndex = -1;
    			}
    
    			element.focus();
    
    			// Repositions the window on jump-to-anchor to account for header height.
    			window.scrollBy( 0, -80 );
    		}
    	} );
    
    	$( function() {
    		// Search toggle.
    		$( '.search-toggle' ).on( 'click.twentyfourteen', function( event ) {
    			var that    = $( this ),
    				wrapper = $( '.search-box-wrapper' );
    
    			that.toggleClass( 'active' );
    			wrapper.toggleClass( 'hide' );
    
    			if ( that.is( '.active' ) || $( '.search-toggle .screen-reader-text' )[0] === event.target ) {
    				wrapper.find( '.search-field' ).focus();
    			}
    		} );
    	$( function() {
    		// left toggle.
    		$( '.left-toggle' ).on( 'click.twentyfourteen', function( event ) {
    			var that    = $( this ),
    				wrapper = $( '.left-box-wrapper' );
    
    			that.toggleClass( 'active' );
    			wrapper.toggleClass( 'hide' );
    
    			if ( that.is( '.active' ) || $( '.left-toggle .screen-reader-left' )[0] === event.target ) {
    				wrapper.find( '.left-field' ).focus();
    			}
    		} );
    
    		/*
    		 * Fixed header for large screen.
    		 * If the header becomes more than 48px tall, unfix the header.
    		 *
    		 * The callback on the scroll event is only added if there is a header
    		 * image and we are not on mobile.
    		 */
    		if ( _window.width() > 781 ) {
    			var mastheadHeight = $( '#masthead' ).height(),
    				toolbarOffset, mastheadOffset;
    
    			if ( mastheadHeight > 48 ) {
    				body.removeClass( 'masthead-fixed' );
    			}
    
    			if ( body.is( '.header-image' ) ) {
    				toolbarOffset  = body.is( '.admin-bar' ) ? $( '#wpadminbar' ).height() : 0;
    				mastheadOffset = $( '#masthead' ).offset().top - toolbarOffset;
    
    				_window.on( 'scroll.twentyfourteen', function() {
    					if ( ( window.scrollY > mastheadOffset ) && ( mastheadHeight < 49 ) ) {
    						body.addClass( 'masthead-fixed' );
    					} else {
    						body.removeClass( 'masthead-fixed' );
    					}
    				} );
    			}
    		}
    
    		// Focus styles for menus.
    		$( '.primary-navigation, .secondary-navigation' ).find( 'a' ).on( 'focus.twentyfourteen blur.twentyfourteen', function() {
    			$( this ).parents().toggleClass( 'focus' );
    		} );
    	} );
    
    	_window.load( function() {
    		// Arrange footer widgets vertically.
    		if ( $.isFunction( $.fn.masonry ) ) {
    			$( '#footer-sidebar' ).masonry( {
    				itemSelector: '.widget',
    				columnWidth: function( containerWidth ) {
    					return containerWidth / 4;
    				},
    				gutterWidth: 0,
    				isResizable: true,
    				isRTL: $( 'body' ).is( '.rtl' )
    			} );
    		}
    
    		// Initialize Featured Content slider.
    		if ( body.is( '.slider' ) ) {
    			$( '.featured-content' ).featuredslider( {
    				selector: '.featured-content-inner > article',
    				controlsContainer: '.featured-content'
    			} );
    		}
    	} );
    } )( jQuery );
    
    		// Scroll le sommaire.
    jQuery(document).ready(function($){
        $(document).on('click','.sommaire-article a',function(){
            var h = $(this).attr('href');
    
            $('body,html').animate({
                scrollTop:$(h).offset().top
            }, 500);
            return false;
        });
    });

    I then set the new functions.js in my childtheme/js and enqueued-dequeued the original functions.js with this code (added in functions.php)

    function twentyfourteen_child_scripts() {
    
      wp_enqueue_script( 'twentyfourteen-script', get_stylesheet_directory_uri() . '/js/functions.js', array( 'jquery' ), null, true );
    
    }
    
    add_action( 'wp_enqueue_scripts', 'twentyfourteen_child_scripts' );

    But both toggles dont work anymore (see here). I have checked the code and there is apparently a problem with { or } I am not used to js and I guess an expert would find it right away.

    I am then asking your help.

    Many thanks in advance!!!

    Yours Sincerely,

    Tche

Viewing 15 replies - 1 through 15 (of 34 total)
  • Andrew Nevins

    (@anevins)

    WCLDN 2018 Contributor | Volunteer support

    You should dequeue the original functions.js file from the parent theme first
    https://codex.wordpress.org/Function_Reference/wp_dequeue_script

    Thread Starter Tche111

    (@tche111)

    Hi, thanks a lot for the quick answer Andrew!
    I have adapted functions.php as per following:
    (but I got a big white screen now)

    <?php 
    
    ///Lire le functions.js du child
    function enqueue_child_functions_js() {
        wp_dequeue_script( 'twentyfourteen-script' );
    	//dequeue the parent script
    	wp_enqueue_script( my-child-script', get_stylesheet_directory_uri() . '/js/functions.js', array( 'jquery' ), '20140717', true );
    	//enqueue new modified script}
    	add_action( 'wp_enqueue_scripts', 'enqueue_child_functions_js', 999 );
    
    ///ajouter des moyens de contact aux utilisateurs
    function my_new_contactmethods( $contactmethods ) {
    $contactmethods['twitter'] = 'Twitter';
    $contactmethods['facebook'] = 'Facebook';
    $contactmethods['linkedin'] = 'LinkedIn';
    $contactmethods['myspace'] = 'MySpace';
    $contactmethods['msn'] = 'Msn';
    $contactmethods['skype'] = 'Skype';
    $contactmethods['icq'] = 'ICQ';
    return $contactmethods;
    }
    add_filter('user_contactmethods','my_new_contactmethods',10,1);
    
    ///Ajouter un fil d'Ariane Yoast
    add_theme_support( 'yoast-seo-breadcrumbs' );
    
    ///Ajouter une capacité aux contributeurs
        if ( current_user_can('contributor') && !current_user_can('edit_published_posts') )
        add_action('admin_init', 'allow_edit_contributors');
    
        function allow_edit_contributors() {
        $contributor = get_role('contributor');
        $contributor->add_cap('edit_published_posts');
        $contributor->add_cap('moderate_comments');
        }
    
    ///Masquer la version wordpress
    remove_action("wp_head", "wp_generator");
    
    //Masquer la version dans le feed
    function wpt_remove_version() {
    return ''; }
    add_filter('the_generator', 'wpt_remove_version');
    
    ///Désactiver admin bar
    add_filter('show_admin_bar', '__return_false');
    
    /// Déplacer les javascript vers le footer
    remove_action('wp_head', 'wp_print_scripts');
    remove_action('wp_head', 'wp_print_head_scripts', 9);
    remove_action('wp_head', 'wp_enqueue_scripts', 1);
    add_action('wp_footer', 'wp_print_scripts', 5);
    add_action('wp_footer', 'wp_enqueue_scripts', 5);
    add_action('wp_footer', 'wp_print_head_scripts', 5);
    
    ///Désactiver le js et le css de Contact Form 7
    add_filter( 'wpcf7_load_js', '__return_false' );
    add_filter( 'wpcf7_load_css', '__return_false' );
    
    ///Désactiver le js et le css de supersocializer
    function my_custom_scripts(){
    	if ( is_single() ) {
    		wp_dequeue_script('the_champ_ss_general_scripts');
    	        // more scripts to dequeue
            }
    }
    add_action('wp_enqueue_scripts', 'my_custom_scripts', 100);
    
    ///Désactiver le css de recent_viewed_posts
    add_action( 'wp_enqueue_style', 'my_deregister_styles', 100 );
    
    function my_deregister_styles() {
    	wp_deregister_style( 'ft_viewed_stylesheet' );
           // deregister as many stylesheets as you need...
    }
    
    ///Remove Query String from Static Resources***/
    function remove_cssjs_ver( $src ) {
     if( strpos( $src, '?ver=' ) )
     $src = remove_query_arg( 'ver', $src );
     return $src;
    }
    add_filter( 'style_loader_src', 'remove_cssjs_ver', 10, 2 );
    add_filter( 'script_loader_src', 'remove_cssjs_ver', 10, 2 );
    
    /// Créer l'appel d'articles par catégorie
    function aww_post_by_category($atts, $content = null) {
        extract(shortcode_atts(array(
            "nb" => '10',
            "orderby" => 'post_date',
            "order" => 'DESC',
            "category" => '1'
        ), $atts));
        global $post;
        $tmp_post = $post;
        $myposts = get_posts('showposts='.$nb.'&orderby='.$orderby.'&category='.$category);
        $out = '<ul>';
        foreach($myposts as $post){
            setup_postdata( $post );
            $out .= '<li><a href="'.get_permalink().'">'.the_title("","",false).'</a></li>';
        }
        $out .= '</ul>';
        wp_reset_postdata();
        $post = $tmp_post;
        return $out;
    }
    add_shortcode("post-by-category", "aww_post_by_category");
    
    ///Créer 4 zones widgets dans le footer
    if ( function_exists('register_sidebar') ) {
     register_sidebar( array(
      'name' => __( 'First Footer Widget Area', 'twentyfourteen' ),
      'id' => 'sidebar-4',
      'description' => __( 'First footer widget area', 'twentyfourteen' ),
      'before_widget' => '<div class="textwidget">',
      'after_widget' => '</div>',
      'before_title' => '<h4 class="widget-title">',
      'after_title' => '</h4>',
     ) );
     // Area 6, located in the footer. Empty by default.
     register_sidebar( array(
      'name' => __( 'Second Footer Widget Area', 'twentyfourteen' ),
      'id' => 'sidebar-5',
      'description' => __( 'Second footer widget area', 'twentyfourteen' ),
      'before_widget' => '<div class="textwidget">',
      'after_widget' => '</div>',
      'before_title' => '<h4 class="widget-title">',
      'after_title' => '</h4>',
     ) );
     // Area 7, located in the footer. Empty by default.
     register_sidebar( array(
      'name' => __( 'Third Footer Widget Area', 'twentyfourteen' ),
      'id' => 'sidebar-6',
      'description' => __( 'The third footer widget area',  'twentyfourteen' ),
      'before_widget' => '<div class="textwidget">',
      'after_widget' => '</div>',
      'before_title' => '<h4 class="widget-title">',
      'after_title' => '</h4>',
     ) );
     // Area 8, located in the footer. Empty by default.
     register_sidebar( array(
      'name' => __( 'Fourth Footer Widget Area', 'twentyfourteen' ),
      'id' => 'sidebar-7',
      'description' => __( 'The fourth footer widget area', 'twentyfourteen' ),
      'before_widget' => '<div class="textwidget">',
      'after_widget' => '</div>',
      'before_title' => '<h4 class="widget-title">',
      'after_title' => '</h4>',
     ) );
    }
    ///Ajouter un menu top
    register_nav_menus( array(
            'MainLight' => 'Menu light pour pages',
    	'MainMob' => 'Menu pour mobiles',
        ) );
    
    ///Modifier les résumés
    // Retirer get_the_excerpt filter
    function aww_remove_excerpt_filter() {
       remove_filter( 'get_the_excerpt', 'twentyfourteen_custom_excerpt_more' );
    }
    add_action( 'after_setup_theme', 'aww_remove_excerpt_filter' );
    
    // Ajouter un joli lien "READ MORE"
    function aww_custom_excerpt_more( $output ) {
    	if ( has_excerpt() && ! is_attachment() ) {
    		$output .= aww_continue_reading_link();
    	}
    	return $output;
    }
    add_filter( 'get_the_excerpt', 'aww_custom_excerpt_more' );
    
    // Retirer the excerpt_more filter
    function aww_remove_auto_excerpt_filter() {
       remove_filter( 'excerpt_more', 'twentyfourteen_excerpt_more' );
    }
    add_action( 'after_setup_theme', 'aww_remove_auto_excerpt_filter' );
    
    // Ajouter un joli lien "READ MORE"
    function aww_auto_excerpt_more( $more ) {
    	return '… ' . aww_continue_reading_link();
    }
    add_filter( 'excerpt_more', 'aww_auto_excerpt_more' );
    
    // Retourner "READ MORE" avec un lien
    function aww_continue_reading_link() {
    	return ' <a href="'. esc_url( get_permalink() ) . '">' . __( '[+++]', 'twentyfourteen' ) . '</a>';
    }
    
    ///Retirer Hentry class des pages
    function themeslug_remove_hentry( $classes ) {
        if ( is_page() ) {
            $classes = array_diff( $classes, array( 'hentry' ) );
        }
        return $classes;
    }
    add_filter( 'post_class','themeslug_remove_hentry' );
    
    //Changer le texte commentaire
    add_filter('comment_form_defaults','comment_reform');
    
    function comment_reform ($arg) {
    	$arg['title_reply'] = __('* Je peux apporter mes solutions');
    	return $arg;
    }
    /// Ajouter un titre et une catégorie au formulaire COMMENTAIRES
    //Ajouter les champs titre et catégorie au formulaire pour les users loggés et non loggés
    add_action( 'comment_form_logged_in_after', 'additional_fields' );
    add_action( 'comment_form_after_fields', 'additional_fields' );
    
    function additional_fields () {
      echo '<p class="comment-form-title">'.
      '<label for="title">' . __( 'Titre (Je peux...)' ) . '</label>'.
      '<input id="title" name="title" type="text" size="30"  tabindex="5" /></p>';
    
      echo '<strong><label for="category">Cette solution est particulièrement utile...</label></strong>
    	<select id="category" name="category">
    		<option value=""></option>
    		<option value="Tous">Dans tous les cas</option>
    		<option value="Argent">Sans argent</option>
    		<option value="Temps">Sans le temps</option>
    		<option value="Santé">Sans la santé</option>
    	</select>';
    }
    
    // Enregistrer le titre et la catégorie avec le commentaire
    
    add_action( 'comment_post', 'save_comment_meta_data' );
    
    function save_comment_meta_data( $comment_id ) {
      if ( ( isset( $_POST['title'] ) ) && ( $_POST['title'] != '') )
      $title = wp_filter_nohtml_kses($_POST['title']);
      add_comment_meta( $comment_id, 'title', $title );
    
      if ( ( isset( $_POST['category'] ) ) && ( $_POST['category'] != '') )
      $category = wp_filter_nohtml_kses($_POST['category']);
      add_comment_meta( $comment_id, 'category', $category );
    }
    
    //Retirer le template Comment popularity
    if ( class_exists( 'CommentPopularity\HMN_Comment_Popularity' ) ) {
        $cp = CommentPopularity\HMN_Comment_Popularity::get_instance();
        remove_filter( 'comments_template', array( $cp, 'custom_comments_template' ) );
    }
    
    //Permettre aux anonymes de voter pour les solutions (Comment popularity)
    add_filter( 'hmn_cp_allow_guest_voting', '__return_true' );
    
    /// Compter les vues des articles
    add_filter('manage_posts_columns', 'pview_column_register');
    add_action('manage_posts_custom_column', 'pview_column_display',10,2);
    add_filter( 'manage_edit-post_sortable_columns', 'pview_column_register_sortable' );
    add_filter( 'request', 'pview_column_orderby' );
    
    function getpview($postID){
        $count_key = 'pview_count';
        $count = get_post_meta($postID, $count_key, true);
        if($count==''){
            return "0 fois";
        }
        return $count.' fois';
    }
    
    function setpview($postID) {
        $count_key = 'pview_count';
        $count = get_post_meta($postID, $count_key, true);
        if($count==''){
            delete_post_meta($postID, $count_key);
            add_post_meta($postID, $count_key, '1');
        }else{
            $count++;
            update_post_meta($postID, $count_key, $count);
        }
    }
    
    function pview_column_register($newcolumn){
        $newcolumn['pview'] = __('Vues');
        return $newcolumn;
    }
    
    function pview_column_display($column_name, $id){
        switch ($column_name) {
        case 'pview' :
            $count_key = 'pview_count';
            $count = get_post_meta($id, $count_key, true);
            if ($count != '') {
            echo $count;
            }else{
            echo '0';
            }
        break;
        }
    }
    
    function pview_column_register_sortable($columns) {
        $columns['pview'] = 'pview';
        return $columns;
    }
    
    function pview_column_orderby( $vars ) {
        if ( isset( $vars['orderby'] ) && 'pview' == $vars['orderby'] ) {
            $vars = array_merge( $vars, array(
                'meta_key' => 'pview_count',
                'orderby' => 'meta_value_num'
            ) );
        }
        return $vars;
    }
    
    ///Appeler les commentaires de l'utilisateur
    add_shortcode ( 'show_recent_comments', 'show_recent_comments_handler' );
    
    function show_recent_comments_handler( $atts, $content = null )
    {
        extract( shortcode_atts( array(
            "count" => 10,
            "pretty_permalink" => 0
            ), $atts ));
    
        $output = ''; // this holds the output
    
        if ( is_user_logged_in() )
        {
            global $current_user;
            get_currentuserinfo();
    
            $args = array(
                'user_id' => $current_user->ID,
                'number' => $count, // how many comments to retrieve
                'status' => 'approve'
                );
    
            $comments = get_comments( $args );
            if ( $comments )
            {
                $output.= '<ul class="solutionlist">';
                foreach ( $comments as $c )
                {
                $output.= '<li>';
                if ( $pretty_permalink ) // uses a lot more queries (not recommended)
                    $output.= '<a href="'.get_comment_link( $c->comment_ID ).'"><h3>';
                else
                    $output.= '<h3><a href="'.get_option('siteurl').'/?p='.$c->comment_post_ID.'#comment-'.$c->comment_ID.'">';
    		$output.= get_the_title( $c->comment_post_ID);
                $output.= '</h3></a></p><p>';
                $output.= $c->comment_content;
    
                $output.= '</br>Posté le ';
    		$output.= get_the_date( $c->comment_date);
                $output.= '</p></li>';
                }
                $output.= '</ul>';
            }
        }
        else
        {
            $output.= '<h2>Vous devez être connecté pour voir vos solutions.</h2>';
            $output.= '<h2><a href="'.get_settings('siteurl').'/wp-login.php?redirect_to='.get_permalink().'">Connectez-vous maintenant</a></h2>';
        }
        return $output;
    }
    
    ///Formater le box auteur
    function author_box() {
    
        // On récupère les url des champs du profil de l'auteur et on les place dans un tableau (array).
        $social_names = array( 'user_url', 'twitter', 'facebook', 'gplus', 'linkedin', 'dribbble', 'pinterest', 'instagram' );
        $social_urls  = array();
    
        /* Pour chaque champ (foreach) :
         * Si l'auteur n'a pas renseigné le champ, on ne le récupère pas.
         * Sinon, on récupère le champ et on ajoute 'http' devant si l'auteur l'a oublié.
        */
        foreach( $social_names as $social_name ) {
            $link = get_the_author_meta( $social_name );
            if( !empty( $link ) ) {
                if( strpos( $link, "http" ) === 0) {
                    $new_url = 'http://' . $link;
                }
                $social_urls[$social_name] = $link;
            }
        } ?>
    
        <div id="author-meta">
                <h2>A propos de l&apos;auteur du voeu:  <?php the_author_posts_link(); ?></h2>
    			<?php echo get_avatar( get_the_author_meta( 'ID' ), 60 ); // 60 is the avatar size ?>
                <p class="bio"><?php the_author_meta( 'user_description' ); ?></p>
    			<p class="biometa"><?php the_author_posts_link(); ?> a posté <?php the_author_posts(); ?> voeux sur <a href="http://www.allwewish.org/">AllWeWish.org</a>.</p><p class="biometa">Il ou elle peut être contacté par les moyens suivants:
    			<?php if ( !empty( $social_urls ) ) { ?>
                    <div class="author-social">
                        <?php echo '<ul class="sociallist">'; ?>
                        <?php
                            foreach ( $social_urls as $social_name => $social_url ) {
                                echo '<li class="sociallist"><a href="'.$social_url.'">'.$social_name.'  | </a></li>';
                            }
    
                         ?>
                         <?php echo '</ul>'; ?>
                    </div>
    				</p>
                <?php } ?>
        </div>
    <?php } ?>

    Any further advise? Maybe on the functions.js code?

    Andrew Nevins

    (@anevins)

    WCLDN 2018 Contributor | Volunteer support

    Wait, I may have misunderstood what you’re trying to do.

    Can you go into more detail about that, before you show us code?

    Thread Starter Tche111

    (@tche111)

    Yes, of course actually I’d like to add a fixed button on the top-left corner to trigger the opening of a panel on the left side of the window. In that panel I would then set one sidebar.

    Then, I could also change the layout and the use of the native search-toggle and insert the other sidebar in its related panel.

    I have tried and I am trying other solutions:
    – pure css but I am stuck with #link behaviour,
    – bourbon but I do not manage to install the library,
    – other js…
    …but I think the best way would be to stick to twentyfourteen as it is working on all platforms and devices…

    I m pretty sure I forget something while copy-pasting the search-toggle and transforming it to a left-toggle function. But I dont know what. :/

    Andrew Nevins

    (@anevins)

    WCLDN 2018 Contributor | Volunteer support

    Ignore the advice I gave for dequeuing.

    Let’s start your Child Theme JavaScript file from scratch.
    Do enqueue this:

    wp_enqueue_script( 'twentyfourteen-script', get_stylesheet_directory_uri() . '/js/functions.js', array( 'jquery' ), null, true );

    But then delete all of the code inside of that Child Theme functions.js file.

    The first steps would be to get the sidebar (that you want to trigger) on the page without JavaScript. Have you done this?

    Thread Starter Tche111

    (@tche111)

    Ok,
    I have
    – pasted your enqueue code in functions.php (no need to add action?),
    – erased the content of functions.js in the child-theme and
    – inserted the call to the sidebar in the category.php…
    You can see it here
    (with sliding panels, I would simplify it ;))

    Andrew Nevins

    (@anevins)

    WCLDN 2018 Contributor | Volunteer support

    – pasted your enqueue code in functions.php (no need to add action?),

    Yes, sorry I meant do as you did before.

    Andrew Nevins

    (@anevins)

    WCLDN 2018 Contributor | Volunteer support

    Is this element the one you’re referring to as the sidebar:

    <div id="secondary">

    Thread Starter Tche111

    (@tche111)

    Yes, sorry I meant do as you did before.

    You couldnt expect such a …’newbie’ 😉 (Code changed)

    Is this element the one you’re referring to as the sidebar:
    <div id=”secondary”>

    Yes!

    Andrew Nevins

    (@anevins)

    WCLDN 2018 Contributor | Volunteer support

    Then add this to your Child Theme functions.js file:

    var $ = jQuery,
        sidebar = $('#secondary'),
        target = $('body'),
        trigger = $('<button class="trigger_button">Foo</button>');
    
    sidebar.hide();
    
    target.prepend(trigger);
    
    target.click(function() {
        sidebar.toggle();
    });

    Thread Starter Tche111

    (@tche111)

    Done!
    Two foos buttons appeared

    Thread Starter Tche111

    (@tche111)

    Done!

    Andrew Nevins

    (@anevins)

    WCLDN 2018 Contributor | Volunteer support

    Are you making this change elsewhere? I can’t see the Foo buttons on your website

    Thread Starter Tche111

    (@tche111)

    … but they don’t trigger anything and the search-toggle doesnt work neither.

    (and I have a small issue while refreshing the page here on the forum)

    Thread Starter Tche111

    (@tche111)

Viewing 15 replies - 1 through 15 (of 34 total)

The topic ‘Adding toggles buttons and menus through functions.js’ is closed to new replies.