|
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(); ?> |