]> scripts.mit.edu Git - autoinstalls/wordpress.git/blobdiff - wp-content/themes/twentyeleven/showcase.php
Wordpress 3.2
[autoinstalls/wordpress.git] / wp-content / themes / twentyeleven / showcase.php
diff --git a/wp-content/themes/twentyeleven/showcase.php b/wp-content/themes/twentyeleven/showcase.php
new file mode 100644 (file)
index 0000000..58e85e2
--- /dev/null
@@ -0,0 +1,220 @@
+<?php
+/**
+ * Template Name: Showcase Template
+ * Description: A Page Template that showcases Sticky Posts, Asides, and Blog Posts
+ *
+ * The showcase template in Twenty Eleven consists of a featured posts section using sticky posts,
+ * another recent posts area (with the latest post shown in full and the rest as a list)
+ * and a left sidebar holding aside posts.
+ *
+ * We are creating two queries to fetch the proper posts and a custom widget for the sidebar.
+ *
+ * @package WordPress
+ * @subpackage Twenty_Eleven
+ * @since Twenty Eleven 1.0
+ */
+
+// Enqueue showcase script for the slider
+wp_enqueue_script( 'twentyeleven-showcase', get_template_directory_uri() . '/js/showcase.js', array( 'jquery' ), '2011-04-28' );
+
+get_header(); ?>
+
+               <div id="primary" class="showcase">
+                       <div id="content" role="main">
+
+                               <?php the_post(); ?>
+
+                               <?php
+                                       /**
+                                        * We are using a heading by rendering the_content
+                                        * If we have content for this page, let's display it.
+                                        */
+                                       if ( '' != get_the_content() )
+                                               get_template_part( 'content', 'intro' );
+                               ?>
+
+                               <?php
+                                       /**
+                                        * Begin the featured posts section.
+                                        *
+                                        * See if we have any sticky posts and use them to create our featured posts.
+                                        * We limit the featured posts at ten.
+                                        */
+                                       $sticky = get_option( 'sticky_posts' );
+
+                                       // Proceed only if sticky posts exist.
+                                       if ( ! empty( $sticky ) ) :
+
+                                       $featured_args = array(
+                                               'post__in' => $sticky,
+                                               'post_status' => 'publish',
+                                               'posts_per_page' => 10,
+                                               'no_found_rows' => true,
+                                       );
+
+                                       // The Featured Posts query.
+                                       $featured = new WP_Query( $featured_args );
+
+                                       // Proceed only if published posts exist
+                                       if ( $featured->have_posts() ) :
+
+                                       /**
+                                        * We will need to count featured posts starting from zero
+                                        * to create the slider navigation.
+                                        */
+                                       $counter_slider = 0;
+
+                                       ?>
+
+                               <div class="featured-posts">
+                                       <h1 class="showcase-heading"><?php _e( 'Featured Post', 'twentyeleven' ); ?></h1>
+
+                               <?php
+                                       // Let's roll.
+                                       while ( $featured->have_posts() ) : $featured->the_post();
+
+                                       // Increase the counter.
+                                       $counter_slider++;
+
+                                       /**
+                                        * We're going to add a class to our featured post for featured images
+                                        * by default it'll have the feature-text class.
+                                        */
+                                       $feature_class = 'feature-text';
+
+                                       if ( has_post_thumbnail() ) {
+                                               // ... but if it has a featured image let's add some class
+                                               $feature_class = 'feature-image small';
+
+                                               // Hang on. Let's check this here image out.
+                                               $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), array( HEADER_IMAGE_WIDTH, HEADER_IMAGE_WIDTH ) );
+
+                                               // Is it bigger than or equal to our header?
+                                               if ( $image[1] >= HEADER_IMAGE_WIDTH ) {
+                                                       // If bigger, let's add a BIGGER class. It's EXTRA classy now.
+                                                       $feature_class = 'feature-image large';
+                                               }
+                                       }
+                                       ?>
+
+                                       <section class="featured-post <?php echo $feature_class; ?>" id="featured-post-<?php echo $counter_slider; ?>">
+
+                                               <?php
+                                                       /**
+                                                        * If the thumbnail is as big as the header image
+                                                        * make it a large featured post, otherwise render it small
+                                                        */
+                                                       if ( has_post_thumbnail() ) {
+                                                               if ( $image[1] >= HEADER_IMAGE_WIDTH )
+                                                                       $thumbnail_size = 'large-feature';
+                                                               else
+                                                                       $thumbnail_size = 'small-feature';
+                                                               ?>
+                                                               <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_post_thumbnail( $thumbnail_size ); ?></a>
+                                                               <?php
+                                                       }
+                                               ?>
+                                               <?php get_template_part( 'content', 'featured' ); ?>
+                                       </section>
+                               <?php endwhile; ?>
+
+                               <?php
+                                       // Show slider only if we have more than one featured post.
+                                       if ( $featured->post_count > 1 ) :
+                               ?>
+                               <nav class="feature-slider">
+                                       <ul>
+                                       <?php
+
+                                               // Reset the counter so that we end up with matching elements
+                                       $counter_slider = 0;
+
+                                               // Begin from zero
+                                       rewind_posts();
+
+                                               // Let's roll again.
+                                       while ( $featured->have_posts() ) : $featured->the_post();
+                                               $counter_slider++;
+                                                       if ( 1 == $counter_slider )
+                                                               $class = 'class="active"';
+                                                       else
+                                                               $class = '';
+                                       ?>
+                                               <li><a href="#featured-post-<?php echo $counter_slider; ?>" title="<?php printf( esc_attr__( 'Featuring: %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ); ?>" <?php echo $class; ?>></a></li>
+                                       <?php endwhile; ?>
+                                       </ul>
+                               </nav>
+                               <?php endif; // End check for more than one sticky post. ?>
+                               </div><!-- .featured-posts -->
+                               <?php endif; // End check for published posts. ?>
+                               <?php endif; // End check for sticky posts. ?>
+
+                               <section class="recent-posts">
+                                       <h1 class="showcase-heading"><?php _e( 'Recent Posts', 'twentyeleven' ); ?></h1>
+
+                                       <?php
+
+                                       // Display our recent posts, showing full content for the very latest, ignoring Aside posts.
+                                       $recent_args = array(
+                                               'order' => 'DESC',
+                                               'post__not_in' => get_option( 'sticky_posts' ),
+                                               'tax_query' => array(
+                                                       array(
+                                                               'taxonomy' => 'post_format',
+                                                               'terms' => array( 'post-format-aside', 'post-format-link', 'post-format-quote', 'post-format-status' ),
+                                                               'field' => 'slug',
+                                                               'operator' => 'NOT IN',
+                                                       ),
+                                               ),
+                                               'no_found_rows' => true,
+                                       );
+
+                                       // Our new query for the Recent Posts section.
+                                       $recent = new WP_Query( $recent_args );
+
+                                       // The first Recent post is displayed normally
+                                       if ( $recent->have_posts() ) : $recent->the_post();
+
+                                               // Set $more to 0 in order to only get the first part of the post.
+                                               global $more;
+                                               $more = 0;
+
+                                               get_template_part( 'content', get_post_format() );
+
+                                               echo '<ol class="other-recent-posts">';
+
+                                       endif;
+
+                                       // For all other recent posts, just display the title and comment status.
+                                       while ( $recent->have_posts() ) : $recent->the_post(); ?>
+
+                                               <li class="entry-title">
+                                                       <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a>
+                                                       <span class="comments-link">
+                                                               <?php comments_popup_link( '<span class="leave-reply">' . __( 'Leave a reply', 'twentyeleven' ) . '</span>', __( '<b>1</b> Reply', 'twentyeleven' ), __( '<b>%</b> Replies', 'twentyeleven' ) ); ?>
+                                                       </span>
+                                               </li>
+
+                                       <?php
+                                       endwhile;
+
+                                       // If we had some posts, close the <ol>
+                                       if ( $recent->post_count > 0 )
+                                               echo '</ol>';
+                                       ?>
+                               </section><!-- .recent-posts -->
+
+                               <div class="widget-area" role="complementary">
+                                       <?php if ( ! dynamic_sidebar( 'sidebar-2' ) ) : ?>
+
+                                               <?php
+                                               the_widget( 'Twenty_Eleven_Ephemera_Widget', '', array( 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>' ) );
+                                               ?>
+
+                                       <?php endif; // end sidebar widget area ?>
+                               </div><!-- .widget-area -->
+
+                       </div><!-- #content -->
+               </div><!-- #primary -->
+
+<?php get_footer(); ?>
\ No newline at end of file