Tutorial

Superfish: sf-Touchscreen, Accordion, How to open parent link on second tap

A small bug in Superfish Drupal module causes it to open the submenus on mobile devices but in the same time open the parent link. Which is kind of annoying. Since I do not know how to fix the module itself, I came up with different solution involving theme's JS file.

This tutorial is based on the following Issue thread, there were no other solutions from 2014 so I needed to come with my own solution.

Pridal/a lubo dňa Ut, 07/28/2020 - 20:05
Identify your ID of Superfish Block

It should be something like:

#block-superfish-1
Append this script to your Scripts.js file in theme folder.
// helper function
function checkValue(value,arr){
	var status = 'Not exist';
	 
	for(var i=0; i<arr.length; i++){
		var name = arr[i];
		if(name == value){
		  status = 'Exist';
		  break;
		}
	}

	return status;
}

// make an array
var menu_links_arr = [];

$('#block-superfish-1 li a.menuparent').click(function(){
										 
	if (checkValue($(this).attr("id"), menu_links_arr) == 'Exist') {
		console.log("second click");
		// redirects automatically
	}
	else {
		// first click, do not redirect
		menu_links_arr.push($(this).attr("id"));
		return false;
	}
						
});

Now just replace #block-superfish-1 with your Superfish block ID.

Fixed!

Easy as that. What it essentially does is that it makes an array of IDs of menu items, and if you click on any parent menu item, it pushes the ID of so called menu item to array. Now on second tap, if the ID is already in array, just do nothing and let Superfish module redirect to subpage as it does normally.

Might interest you

Tutorial
Sometimes you unintentionally delete some relationship from Views, that your draft gets irreversibly corrupted. Not matter what you do, you…
Tutorial
In this case we have two options, either we use hook_user_presave() or we can create new submit handler and use that. 

Recommended

Article
32 views
For the past few days I am trying to comprehend why / how this blockchain even gained it'…
Tutorial
98 views
This sketch is quite easy, I used Arduino Nano with OLED 0.96″ display 128×64 resolution…
Tutorial
160 views
While working on a fairly complex website with very complex views setup, including tens…
Tutorial
14 views
In this case we have two options, either we use hook_user_presave() or we can create new…
Tutorial
15 views
When using Swiftmailer under Drupal 8 / 9 it automatically sets the headers for sender to…
Tutorial
7 views
Yes, IOS / Safari is the new internet explorer. Amount of time I spend on debugging…
Tutorial
43 views
There is a very handy function in Drupal 8 / 9, allowing developers refresh view when…
Tutorial
22 views
Often, when doing SEO checkups, SEO specialist come up with adding Schema.org…
Tutorial
175 views
I needed to test my contracts against USDC contract, specifically I needed ERC-721 mint…
Tutorial
85 views
If you are a newbie like I am and struggling with setting the proper MYSQL my.cnf config…
Tutorial
25 views
I had trouble to set this up properly, because documentation is quite misleading or often…
Article
72 views
As the title says, DO NOT in any circumstances install ANY bitcoin price extension to ANY…
Tutorial
280 views
This is (or should be) a working example of sending some Ether between two addresses.…
Module
45 views
This list was fetched from Zapper, with their /v1/token-list endpoint. Which you can…
Tutorial
143 views
In the last months I am being pretty much bombarded by my clients with asking what…