Wordpress 3.5
[autoinstalls/wordpress.git] / wp-content / themes / twentyeleven / showcase.php
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 echo esc_attr( sprintf( __( '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 echo esc_attr( sprintf( __( '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 echo esc_attr( sprintf( __( '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(); ?>