Support » Plugin: Events Manager » Hide map if there are no events

  • Resolved Plastikschnitzer

    (@plastikschnitzer)


    Hi,
    is there a way to hide the map, if there are no events available? At the moment it shows as a grey box, it would be nice to hide it in these cases.

    Best regards,
    Plastikschnitzer

Viewing 11 replies - 1 through 11 (of 11 total)
  • Hi Plastikschnitzer,

    It could be possible with CSS or custom development. Can you share the page URL where there are no events and the grey box is showing so I could take a look?

    Thanks,
    Imran

    Hi Imran,

    here is the link: Testing page no events

    Best regards,
    Plastikschnitzer

    Plastikschnitzer,

    You can try adding this JavaScript code in your website:

    jQuery(document).ready(function($) {
    
      $('.em-locations-map').each(function(i, el) {
        var $mapEm = $(el).find('em');
    
        if ( $mapEm.length ) {
          if ( $mapEm.text() == 'No locations found' ) {
            $(el).closest('.em-location-map-container').hide();
          }
        }
      });
    
    });

    If you’re not sure how to add the JS code in your site, perhaps this would help: https://www.ostraining.com/blog/wordpress/custom-js/

    Thanks,
    Imran

    Plugin Support caimin_nwl

    (@caimin_nwl)

    NetWebLogic Support

    @plastikschnitzer Just to check something… Are the maps working on other pages?

    @caimin_nwl Yes sure, maps are working on other pages 😉

    @emranemranx Thank you very much for the code, I inserted it into the page linked above, but unfortunately its not working.

    Another question: There a text statement from Events Manager which shows up if there are no locations, but it does not show up if you use the shortcode for [locations_map] shortcode, right?!

    Best regards,
    Plastikschnitzer

    Plastikschnitzer,

    Please try out this JavaScript code:

    jQuery(document).ready(function($) {
    
      // if ( $('body').hasClass('page-id-295') ) {
        runAfterAjaxComplete();
        $(document).ajaxComplete(runAfterAjaxComplete);
        $(window).load(runAfterAjaxComplete);
      // }
    
      function runAfterAjaxComplete() {
        $('.em-locations-map').each(function(i, el) {
          var $mapEm = $(el).find('em');
    
          if ( $mapEm.length ) {
            if ( $mapEm.text() == 'No locations found' ) {
              $(el).closest('.em-location-map-container').hide();
            }
          }
        });
      }
    
    });

    Regarding your another question, yes, the text statement doesn’t show up when you use the shortcode.

    Thanks,
    Imran

    Plugin Support caimin_nwl

    (@caimin_nwl)

    NetWebLogic Support

    An easier way to do this would be to use one of the conditional location placeholders. Like this_

    {has_location} map stuff here {/has_location}

    http://wp-events-plugin.com/documentation/conditional-placeholders/

    Thank you @emranemranx the updated code is working. Bad side is the code is only executed after DOM is loaded which means the box shows up first and then disappears.

    Also thank you @caimin_nwl – I totally forgot about this simple solution which is already built in and already in use in many other places …

    Question: How can I use conditional placeholders in posts or pages? I mean I could create a custom page template which includes the map with conditional placeholders before or after the content – but is there another simple way?

    Plugin Support caimin_nwl

    (@caimin_nwl)

    NetWebLogic Support

    You mean you want to use them directly in the PHP template?

    No, in pages, posts or widgets.

    Plugin Support caimin_nwl

    (@caimin_nwl)

    NetWebLogic Support

    Try this:

    {has_location} #_LOCATIONMAP {/has_location}

Viewing 11 replies - 1 through 11 (of 11 total)
  • The topic ‘Hide map if there are no events’ is closed to new replies.