Gridview Based On Category

Home Forums Calendar Products Events Calendar PRO Gridview Based On Category

Viewing 15 posts - 1 through 15 (of 35 total)
  • Author
    Posts
  • #15960
    rudeetours
    Member

    We are looking to input a gridview calendar based on a specific category. Is there a snippet of code that I can input into the gridview.php that will limit the events to the specified category?

    #15990
    Rob
    Member

    Hey Matt. This should be doable, but let me get our dev Jonah to respond directly just to be sure. Stay tuned.

    #16081
    Jonah
    Participant

    Hi Matt,

    Are you looking to list out your different categories or do you just want to limit the main calendar to a category or categories?

    #16982
    Demitri
    Participant

    I’m looking for something similar – I need to restrict elements from showing up on the grid view. I have several seasonal events that span months and I need to hide them from showing up every day.

    #16993
    Jonah
    Participant

    Hi Demitri, you can exclude categories from your calendar like so. Paste this into your functions.php file: https://gist.github.com/2142161

    Note: Change ‘2012’ to whatever the slug is of the event category you want to exclude. If you want to exclude more than one category see this: http://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

    This should only affect your calendar page and nothing else but you may need to modify the conditionals to get it to work right for you.

    #17081
    Demitri
    Participant

    Hi Jonah – This worked – however rather than exclude, it included the category. (When I first added the code, it excluded everything, and when I added a “gridview” category to my events, it snagged them and put them on the calendar.)

    Thanks for the help!

    #17082
    Jonah
    Participant

    Hi Demitri, the default operator for tax_query is IN so you need to specify it like so:

    ‘operator’ => ‘NOT IN’

    Look at the tax_query doco for more on that.

    #17278
    Demitri
    Participant

    Hi –
    I need to reverse this so that I can exclude a category on the list view. I’ve tried to decipher the conditionals to no avail (all is see is !is_single) but I fail to see how I can access the list view. Any help would be greatly appreciated!

    #17339
    Jonah
    Participant

    Hi Demitri, I need to get some help from one of our other developers on this. Stay tuned!

    #17458
    Joey Kudish
    Member

    Hi Demitri,
    Throw this into a small plugin or into your functions.php file: https://gist.github.com/2269019 and make sure to replace the “not-in-this-category” on line 19 with the category slug you want to exclude.

    Cheers

    #17770
    rudeetours
    Member

    I’ve taken over the project from rudeetours above. I have four categories. Each category is supposed to display a calendar (grid view) on a different page. Each page uses a different template. So, can I add similar code (but to include one category only) to my template? This is what I’ve got for one of the page templates. (currently getting a fatal error here http://rudeetours.com/tours/winter-wildlife/)
    Can you guide me on where/how I can use code similar to what is here. https://gist.github.com/2269019

    ...

    <a href=''>

    <a href=''>

    <a class='tec-button-off' href=''>pluginDomain)?>
    <a class='tec-button-on' href=''>pluginDomain)?>

    get_event_taxonomy() ) ) {
    $cat = get_term_by( 'slug', get_query_var('term'), $sp_ecp->get_event_taxonomy() );
    $eventCat = (int) $cat->term_id;
    $eventPosts = sp_get_events( array( 'eventCat' => $eventCat, 'time_order' => 'ASC' ) );
    } // not in a cat
    else {
    $eventCat = 'Winter Wildlife';
    $eventPosts = sp_get_events(array( 'eventCat' => $eventCat, 'time_order' => 'ASC' ));
    }

    $eventCat = 'Dolphin Watching';
    $daysInMonth = isset($date) ? date("t", $date) : date("t");
    $startOfWeek = get_option( 'start_of_week', 0 );
    list( $year, $month ) = split( '-', $sp_ecp->date );
    $date = mktime(12, 0, 0, $month, 1, $year); // 1st day of month as unix stamp
    $rawOffset = date("w", $date) - $startOfWeek;
    $offset = ( $rawOffset date );

    ?>

    log($sp_ecp->daysOfWeekShort);
    for( $n = $startOfWeek; $n daysOfWeek) + $startOfWeek; $n++ ) {
    $dayOfWeek = ( $n >= 7 ) ? $n - 7 : $n;

    echo 'daysOfWeek[$dayOfWeek]) . '" abbr="' . $sp_ecp->daysOfWeek[$dayOfWeek] . '">' . $sp_ecp->daysOfWeekShort[$dayOfWeek] . '';
    }
    ?>

    <?php
    // skip last month
    for( $i = 1; $i <= $offset; $i++ ){
    echo "";
    }
    // output this month
    for( $day = 1; $day <= date("t", $date); $day++ ) {
    if( ($day + $offset - 1) % 7 == 0 && $day != 1) {
    echo "\n\t";
    $rows++;
    }

    // Var'ng up days, months and years
    $current_day = date_i18n( 'd' );
    $current_month = date_i18n( 'm' );
    $current_year = date_i18n( 'Y' );

    if ( $current_month == $month && $current_year == $year) {
    // Past, Present, Future class
    if ($current_day == $day ) {
    $ppf = ' tec-present';
    } elseif ($current_day > $day) {
    $ppf = ' tec-past';
    } elseif ($current_day $month && $current_year == $year || $current_year > $year ) {
    $ppf = ' tec-past';
    } elseif ( $current_month < $month && $current_year == $year || $current_year < $year ) {
    $ppf = ' tec-future';
    } else { $ppf = false; }

    echo "" . display_day_title( $day, $monthView ) . "\n";
    echo display_day( $day, $monthView );
    echo "";
    }
    // skip next month
    while( ($day + $offset) <= $rows * 7)
    {
    echo "";
    $day++;
    }
    ?>

    <?php

    function display_day_title( $day, $monthView ) {
    $return = "";

    $return .= $day;
    $return .= "";
    for( $i = 0; $i < count( $monthView[$day] ); $i++ ) {
    $post = $monthView[$day][$i];
    setup_postdata( $post );
    $return .= '' . get_the_title() . '';
    }
    $return .= '';
    $return .= '';

    $return .= "";
    return $return;
    }

    function display_day( $day, $monthView ) {
    global $post;
    $output = '';
    $posts_per_page = get_option( 'posts_per_page' );
    for ( $i = 0; $i ID.'-'.$day;
    $start = sp_get_start_date( $post->ID );
    $end = sp_get_end_date( $post->ID );
    $cost = sp_get_cost( $post->ID );
    $address = sp_get_address( $post->ID );
    $city = sp_get_city( $post->ID );
    $state = sp_get_state( $post->ID );
    $province = sp_get_province( $post->ID );
    $country = sp_get_country( $post->ID );
    ?>

    <div id='event_' >
    <a href="">
    <div id='tooltip_' class="tec-tooltip" style="display:none;">

    ID) || sp_is_multiday($post->ID) ) : ?>

    <?php if ( !empty( $end ) && $start !== $end ) echo " – " . $end . ''; ?>

    post_excerpt) : Events_Calendar_Pro::truncate(get_the_content(), 30); ?>

    <?php
    if( $i < count( $monthView[$day] ) - 1 ) {
    echo "";
    }
    }
    }
    ?>

    ...


    ...

    #17780
    Jonah
    Participant

    The plugin already does specific grid views based on category without you having to do anything else. You just go to http://your-url.com/events-slug/category/your-category-name/

    If that doesn’t work for you and you still want to use page templates, you can. Basically I would suggest just copying the content of or including /wp-content/plugins/the-events-calendar/views/gridview.php into your page templates and then using the Gist code above to conditionally exclude categories based on the page template you are on (add a condition for the page template).

    That should work.

    #17987
    nelson
    Member

    Have placed the function above >
    /**
    * Exclude a specific category from Events Grid View
    *
    * @author jkudish
    * @uses pre_get_posts filter
    * @param object $query the query object
    * @return object $query the filtered object
    */
    add_action( ‘pre_get_posts’, ‘exclude_events_category’ );
    function exclude_events_category( $query ) {

    if ( $query->query_vars[‘post_type’] == TribeEvents::POSTTYPE && $query->query_vars[‘eventDisplay’] == ‘month’ && !is_tax(TribeEvents::TAXONOMY) && empty( $query->query_vars[‘suppress_filters’] ) ) {
    $query->set( ‘tax_query’, array(
    array(
    ‘taxonomy’ => TribeEvents::TAXONOMY,
    ‘field’ => ‘slug’,
    ‘terms’ => array(‘membersevents’),
    ‘operator’ => ‘IN’
    )
    ) );
    }
    return $query;
    }

    into a page with the gridview code in it and it is working perfectly by showing only category X events…. Until selecting the next or prior month – then the calendar reverts back to ALL categories of events. Looking to figure how to carry the “show only this category” along with the change in month. Even choosing event list reverts back to show all events.

    #18042
    Jonah
    Participant

    Hey Nelson, this works fine for me in the regular calendar page but there might be something messing it up on a regular WP page. You may have to adjust the query to account for this but this is not something we can help you out with. Good luck!

    #18248
    rudeetours
    Member

    Jonah,
    In reference to your post on 4/10, can you give a little more instruction please. I’ve got four templates for four categories. I now need to eliminate three non-active categories for each template. I’m not sure what I should put in my template and where.
    I’m studying this and am obviously missing something.
    https://theeventscalendar.com/support/documentation/the-events-calendar-template-tags-general-functions/#functiontribe_meta_event_category_name

Viewing 15 posts - 1 through 15 (of 35 total)
  • The topic ‘Gridview Based On Category’ is closed to new replies.