We're using a Profile to create a members directory that is only accessible when members are logged in. The profile search is working fine, and we've restricted access so users only see what we want them to see.

However, in the search results listing, the leftmost column contains a little person icon, and when you hover over it, it shows that person's contact details.

If I'm logged in as an Administrator, I see everything, but if I'm logged in as a user I see nothing except when hovering over my own entry.

I should specify that we're not using a shortcode in a WordPress page, we're linking to the "Listing Mode" of the profile directly.

Is there a way to disable this icon so that it doesn't appear in the listing results?

Also, you'd need to repeat the CSS selector to Organization-icon and others types of contacts if that's your case. Mind that one can make the icon show up in the browser changing the CSS on the fly and so, would access the overlay information if it is still there. So, this method is not good to secure the data, you should first be sure that data is correctly protected, not showing up publicly in the overlay box.

The second method is much more gentile, but requires you to change the Listing template code. It's referenced by Dave Greenberg in this thread and the code stills work nice, I just tested it.

If you have never customized templates, I would say you should first read this page, as I'd be too long to explain every step to do this here.

Once you are good to go, copy the file civicrm/templates/CRM/Profile/Page/Listings.tpl to your custom templates directory, keeping the folders structure. Edit the file from line 59 to look like this:

Also, in an that old Forum thread there were a word from Dave Greenberg saying that setting all Summary Overlay profile fields visibility to 'User and User Admin' would disable the overlay, but in the actual CiviCRM version, this profile is reserved, so you can't change the visibility of the field. Hence, the above methods looks necessary to me.