web/wp-content/themes/twentyeleven/showcase.php
changeset 194 32102edaa81b
child 204 09a1c134465b
equal deleted inserted replaced
193:2f6f6f7551ca 194:32102edaa81b
       
     1 <?php
       
     2 /**
       
     3  * Template Name: Showcase Template
       
     4  * Description: A Page Template that showcases Sticky Posts, Asides, and Blog Posts
       
     5  *
       
     6  * The showcase template in Twenty Eleven consists of a featured posts section using sticky posts,
       
     7  * another recent posts area (with the latest post shown in full and the rest as a list)
       
     8  * and a left sidebar holding aside posts.
       
     9  *
       
    10  * We are creating two queries to fetch the proper posts and a custom widget for the sidebar.
       
    11  *
       
    12  * @package WordPress
       
    13  * @subpackage Twenty_Eleven
       
    14  * @since Twenty Eleven 1.0
       
    15  */
       
    16 
       
    17 // Enqueue showcase script for the slider
       
    18 wp_enqueue_script( 'twentyeleven-showcase', get_template_directory_uri() . '/js/showcase.js', array( 'jquery' ), '2011-04-28' );
       
    19 
       
    20 get_header(); ?>
       
    21 
       
    22 		<div id="primary" class="showcase">
       
    23 			<div id="content" role="main">
       
    24 
       
    25 				<?php while ( have_posts() ) : the_post(); ?>
       
    26 
       
    27 				<?php
       
    28 					/**
       
    29 					 * We are using a heading by rendering the_content
       
    30 					 * If we have content for this page, let's display it.
       
    31 					 */
       
    32 					if ( '' != get_the_content() )
       
    33 						get_template_part( 'content', 'intro' );
       
    34 				?>
       
    35 
       
    36 				<?php endwhile; ?>
       
    37 
       
    38 				<?php
       
    39 					/**
       
    40 					 * Begin the featured posts section.
       
    41 					 *
       
    42 					 * See if we have any sticky posts and use them to create our featured posts.
       
    43 					 * We limit the featured posts at ten.
       
    44 					 */
       
    45 					$sticky = get_option( 'sticky_posts' );
       
    46 
       
    47 					// Proceed only if sticky posts exist.
       
    48 					if ( ! empty( $sticky ) ) :
       
    49 
       
    50 					$featured_args = array(
       
    51 						'post__in' => $sticky,
       
    52 						'post_status' => 'publish',
       
    53 						'posts_per_page' => 10,
       
    54 						'no_found_rows' => true,
       
    55 					);
       
    56 
       
    57 					// The Featured Posts query.
       
    58 					$featured = new WP_Query( $featured_args );
       
    59 
       
    60 					// Proceed only if published posts exist
       
    61 					if ( $featured->have_posts() ) :
       
    62 
       
    63 					/**
       
    64 					 * We will need to count featured posts starting from zero
       
    65 					 * to create the slider navigation.
       
    66 					 */
       
    67 					$counter_slider = 0;
       
    68 
       
    69 					// Compatibility with versions of WordPress prior to 3.4.
       
    70 					if ( function_exists( 'get_custom_header' ) )
       
    71 						$header_image_width = get_theme_support( 'custom-header', 'width' );
       
    72 					else
       
    73 						$header_image_width = HEADER_IMAGE_WIDTH;
       
    74 				?>
       
    75 
       
    76 				<div class="featured-posts">
       
    77 					<h1 class="showcase-heading"><?php _e( 'Featured Post', 'twentyeleven' ); ?></h1>
       
    78 
       
    79 				<?php
       
    80 					// Let's roll.
       
    81 					while ( $featured->have_posts() ) : $featured->the_post();
       
    82 
       
    83 					// Increase the counter.
       
    84 					$counter_slider++;
       
    85 
       
    86 					/**
       
    87 					 * We're going to add a class to our featured post for featured images
       
    88 					 * by default it'll have the feature-text class.
       
    89 					 */
       
    90 					$feature_class = 'feature-text';
       
    91 
       
    92 					if ( has_post_thumbnail() ) {
       
    93 						// ... but if it has a featured image let's add some class
       
    94 						$feature_class = 'feature-image small';
       
    95 
       
    96 						// Hang on. Let's check this here image out.
       
    97 						$image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), array( $header_image_width, $header_image_width ) );
       
    98 
       
    99 						// Is it bigger than or equal to our header?
       
   100 						if ( $image[1] >= $header_image_width ) {
       
   101 							// If bigger, let's add a BIGGER class. It's EXTRA classy now.
       
   102 							$feature_class = 'feature-image large';
       
   103 						}
       
   104 					}
       
   105 					?>
       
   106 
       
   107 					<section class="featured-post <?php echo $feature_class; ?>" id="featured-post-<?php echo $counter_slider; ?>">
       
   108 
       
   109 						<?php
       
   110 							/**
       
   111 							 * If the thumbnail is as big as the header image
       
   112 							 * make it a large featured post, otherwise render it small
       
   113 							 */
       
   114 							if ( has_post_thumbnail() ) {
       
   115 								if ( $image[1] >= $header_image_width )
       
   116 									$thumbnail_size = 'large-feature';
       
   117 								else
       
   118 									$thumbnail_size = 'small-feature';
       
   119 								?>
       
   120 								<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>
       
   121 								<?php
       
   122 							}
       
   123 						?>
       
   124 						<?php get_template_part( 'content', 'featured' ); ?>
       
   125 					</section>
       
   126 				<?php endwhile;	?>
       
   127 
       
   128 				<?php
       
   129 					// Show slider only if we have more than one featured post.
       
   130 					if ( $featured->post_count > 1 ) :
       
   131 				?>
       
   132 				<nav class="feature-slider">
       
   133 					<ul>
       
   134 					<?php
       
   135 
       
   136 						// Reset the counter so that we end up with matching elements
       
   137 				    	$counter_slider = 0;
       
   138 
       
   139 						// Begin from zero
       
   140 				    	rewind_posts();
       
   141 
       
   142 						// Let's roll again.
       
   143 				    	while ( $featured->have_posts() ) : $featured->the_post();
       
   144 				    		$counter_slider++;
       
   145 							if ( 1 == $counter_slider )
       
   146 								$class = 'class="active"';
       
   147 							else
       
   148 								$class = '';
       
   149 				    	?>
       
   150 						<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>
       
   151 					<?php endwhile;	?>
       
   152 					</ul>
       
   153 				</nav>
       
   154 				<?php endif; // End check for more than one sticky post. ?>
       
   155 				</div><!-- .featured-posts -->
       
   156 				<?php endif; // End check for published posts. ?>
       
   157 				<?php endif; // End check for sticky posts. ?>
       
   158 
       
   159 				<section class="recent-posts">
       
   160 					<h1 class="showcase-heading"><?php _e( 'Recent Posts', 'twentyeleven' ); ?></h1>
       
   161 
       
   162 					<?php
       
   163 
       
   164 					// Display our recent posts, showing full content for the very latest, ignoring Aside posts.
       
   165 					$recent_args = array(
       
   166 						'order' => 'DESC',
       
   167 						'post__not_in' => get_option( 'sticky_posts' ),
       
   168 						'tax_query' => array(
       
   169 							array(
       
   170 								'taxonomy' => 'post_format',
       
   171 								'terms' => array( 'post-format-aside', 'post-format-link', 'post-format-quote', 'post-format-status' ),
       
   172 								'field' => 'slug',
       
   173 								'operator' => 'NOT IN',
       
   174 							),
       
   175 						),
       
   176 						'no_found_rows' => true,
       
   177 					);
       
   178 
       
   179 					// Our new query for the Recent Posts section.
       
   180 					$recent = new WP_Query( $recent_args );
       
   181 
       
   182 					// The first Recent post is displayed normally
       
   183 					if ( $recent->have_posts() ) : $recent->the_post();
       
   184 
       
   185 						// Set $more to 0 in order to only get the first part of the post.
       
   186 						global $more;
       
   187 						$more = 0;
       
   188 
       
   189 						get_template_part( 'content', get_post_format() );
       
   190 
       
   191 						echo '<ol class="other-recent-posts">';
       
   192 
       
   193 					endif;
       
   194 
       
   195 					// For all other recent posts, just display the title and comment status.
       
   196 					while ( $recent->have_posts() ) : $recent->the_post(); ?>
       
   197 
       
   198 						<li class="entry-title">
       
   199 							<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>
       
   200 							<span class="comments-link">
       
   201 								<?php comments_popup_link( '<span class="leave-reply">' . __( 'Leave a reply', 'twentyeleven' ) . '</span>', __( '<b>1</b> Reply', 'twentyeleven' ), __( '<b>%</b> Replies', 'twentyeleven' ) ); ?>
       
   202 							</span>
       
   203 						</li>
       
   204 
       
   205 					<?php
       
   206 					endwhile;
       
   207 
       
   208 					// If we had some posts, close the <ol>
       
   209 					if ( $recent->post_count > 0 )
       
   210 						echo '</ol>';
       
   211 					?>
       
   212 				</section><!-- .recent-posts -->
       
   213 
       
   214 				<div class="widget-area" role="complementary">
       
   215 					<?php if ( ! dynamic_sidebar( 'sidebar-2' ) ) : ?>
       
   216 
       
   217 						<?php
       
   218 						the_widget( 'Twenty_Eleven_Ephemera_Widget', '', array( 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>' ) );
       
   219 						?>
       
   220 
       
   221 					<?php endif; // end sidebar widget area ?>
       
   222 				</div><!-- .widget-area -->
       
   223 
       
   224 			</div><!-- #content -->
       
   225 		</div><!-- #primary -->
       
   226 
       
   227 <?php get_footer(); ?>