SHOW:
|
|
- or go back to the newest paste.
| 1 | <?php | |
| 2 | ||
| 3 | //canviar credits | |
| 4 | ||
| 5 | add_filter('tc_credits_display', 'my_custom_credits');
| |
| 6 | function my_custom_credits(){
| |
| 7 | $credits = 'All rights reserved'; | |
| 8 | $newline_credits = ''; | |
| 9 | return ' | |
| 10 | <div class="span4 credits"> | |
| 11 | <p> · © '.esc_attr( date( 'Y' ) ).' <a href="'.esc_url( home_url() ).'" title="'.esc_attr(get_bloginfo()).'" rel="bookmark">'.esc_attr(get_bloginfo()).'</a> · '.($credits ? $credits : 'Designed by <a href="http://www.themesandco.com/">Themes & Co</a>').' ·'.($newline_credits ? '<br />· '.$newline_credits.' ·' : '').'</p> </div>'; | |
| 12 | } | |
| 13 | ||
| 14 | ||
| 15 | ||
| 16 | //post -- slider | |
| 17 | ||
| 18 | /* Works with Customizr > 3.3.12 and Customizr-Pro > 1.0.17 */ | |
| 19 | add_filter('tc_core', 'use_custom_slider_class');
| |
| 20 | function use_custom_slider_class($classes){
| |
| 21 | //don't instantiate default class | |
| 22 | unset( $classes['content'][ | |
| 23 | array_search(array('inc/parts','slider'), $classes['content'])
| |
| 24 | ] | |
| 25 | ); | |
| 26 | //instantiate our class | |
| 27 | new TC_Slider_mod; | |
| 28 | return $classes; | |
| 29 | } | |
| 30 | add_filter('tc_slider_name_id', 'my_slider_of_posts');
| |
| 31 | function my_slider_of_posts( $slider_name_id ){
| |
| 32 | if ( $slider_name_id == 'front-slider' ) | |
| 33 | return array( | |
| 34 | 'slider' => 'front-slider', | |
| 35 | 'query' => array( | |
| 36 | 'tag' => "front-slider", | |
| 37 | 'posts_per_page' => 5, | |
| 38 | 'order' => 'desc' | |
| 39 | ), | |
| 40 | ); | |
| 41 | return $slider_name_id; | |
| 42 | } | |
| 43 | ||
| 44 | if ( ! defined('CUSTOMIZR') )
| |
| 45 | define('CUSTOMIZR', get_template_directory() );
| |
| 46 | ||
| 47 | require_once( CUSTOMIZR . '/inc/parts/class-content-slider.php'); | |
| 48 | class TC_Slider_mod extends TC_slider{
| |
| 49 | private $saved_slides; | |
| 50 | private $slider_name_id = false; | |
| 51 | private $layout_value; | |
| 52 | private $img_size; | |
| 53 | private $layout_class; | |
| 54 | ||
| 55 | //override tc_set_slider_hooks() | |
| 56 | function tc_set_slider_hooks() {
| |
| 57 | //gets the actual page id if we are displaying the posts page | |
| 58 | $queried_id = $this -> tc_get_real_id(); | |
| 59 | ||
| 60 | $slider_name_id = apply_filters('tc_slider_name_id', $this ->tc_get_current_slider($queried_id) );
| |
| 61 | ||
| 62 | if ( ! is_array( $slider_name_id ) ) | |
| 63 | return parent::tc_set_slider_hooks(); | |
| 64 | ||
| 65 | extract($slider_name_id); | |
| 66 | $all_sliders = TC_utils::$inst -> tc_opt( 'tc_sliders'); | |
| 67 | $saved_slides = ( isset($all_sliders[$slider]) ) ? $all_sliders[$slider] : false; | |
| 68 | ||
| 69 | //if the slider not longer exists or exists but is empty, return false | |
| 70 | if ( !isset($saved_slides) || ! is_array($saved_slides) || empty($saved_slides) ) | |
| 71 | return; | |
| 72 | ||
| 73 | ||
| 74 | add_action( '__after_header' , array( $this , 'tc_slider_display' ) ); | |
| 75 | add_action( '__after_carousel_inner' , array( $this , 'tc_slider_control_view' ) ); | |
| 76 | //adds the center-slides-enabled css class | |
| 77 | add_filter( 'tc_carousel_inner_classes', array( $this, 'tc_set_inner_class') ); | |
| 78 | ||
| 79 | $this -> tc_slider_mod_set_properties( $saved_slides, $slider_name_id, $queried_id ); | |
| 80 | } | |
| 81 | ||
| 82 | private function tc_get_current_slider($queried_id) {
| |
| 83 | //gets the current slider id | |
| 84 | $_home_slider = TC_utils::$inst->tc_opt( 'tc_front_slider' ); | |
| 85 | $slider_name_id = ( tc__f('__is_home') && $_home_slider ) ? $_home_slider : esc_attr( get_post_meta( $queried_id, $key = 'post_slider_key' , $single = true ) );
| |
| 86 | return apply_filters( 'tc_slider_name_id', $slider_name_id , $queried_id); | |
| 87 | } | |
| 88 | ||
| 89 | private function tc_get_real_id() {
| |
| 90 | ||
| 91 | global $wp_query; | |
| 92 | $queried_id = get_queried_object_id(); | |
| 93 | return ( ! tc__f('__is_home') && $wp_query -> is_posts_page && ! empty($queried_id) ) ? $queried_id : get_the_ID();
| |
| 94 | ||
| 95 | } | |
| 96 | ||
| 97 | function tc_slider_mod_set_properties( $saved_slides, $slider_name_id, $queried_id ){
| |
| 98 | ||
| 99 | $this -> saved_slides = $saved_slides; | |
| 100 | $this -> slider_name_id = $slider_name_id; | |
| 101 | //gets slider options if any | |
| 102 | $layout_value = tc__f('__is_home') ? TC_utils::$inst->tc_opt( 'tc_slider_width' ) : esc_attr(get_post_meta( $queried_id, $key = 'slider_layout_key' , $single = true ));
| |
| 103 | ||
| 104 | $this -> layout_value = apply_filters( 'tc_slider_layout', $layout_value, $queried_id ); | |
| 105 | ||
| 106 | //declares the layout vars | |
| 107 | $this -> layout_class = implode( " " , apply_filters( 'tc_slider_layout_class' , ( 0 == $layout_value ) ? array('container', 'carousel', 'slide') : array('carousel', 'slide') ) );
| |
| 108 | ||
| 109 | $this -> img_size = apply_filters( 'tc_slider_img_size' , ( 0 == $layout_value ) ? 'slider' : 'slider-full'); | |
| 110 | ||
| 111 | } | |
| 112 | ||
| 113 | //override tc_slider_display | |
| 114 | function tc_slider_display() {
| |
| 115 | if ( ! $this -> slider_name_id ) | |
| 116 | return parent::tc_slider_display(); | |
| 117 | ||
| 118 | $slider_name_id = $this -> slider_name_id; | |
| 119 | $img_size = $this -> img_size; | |
| 120 | $saved_slides = $this -> saved_slides; | |
| 121 | $layout_class = $this -> layout_class; | |
| 122 | ||
| 123 | $slides = $this -> tc_get_posts_slides( $slider_name_id, $img_size, $saved_slides ); | |
| 124 | //returns nothing if no slides to display | |
| 125 | if ( ! isset($slides) || ! $slides ) | |
| 126 | return; | |
| 127 | ||
| 128 | extract($slides); | |
| 129 | //define carousel inner classes | |
| 130 | $_inner_classes = implode( ' ' , apply_filters( 'tc_carousel_inner_classes' , array( 'carousel-inner' ) ) ); | |
| 131 | ob_start(); | |
| 132 | ?> | |
| 133 | <div id="customizr-slider" class="<?php echo $layout_class ?> "> | |
| 134 | <?php if ( 1 == esc_attr( TC_utils::$inst->tc_opt( 'tc_display_slide_loader') ) && apply_filters( 'tc_display_slider_loader' , true ) ): ?> | |
| 135 | <div class="tc-slider-loader-wrapper"> | |
| 136 | <div class="tc-img-gif-loader"> | |
| 137 | <img data-no-retina src="<?php echo apply_filters('tc_slider_loader_src' , sprintf( '%1$s/%2$s' , TC_BASE_URL , 'inc/assets/img/slider-loader.gif') ) ?>">
| |
| 138 | </div> | |
| 139 | </div> | |
| 140 | <?php endif; ?> | |
| 141 | <?php do_action( '__before_carousel_inner' , $slides ) ?> | |
| 142 | <div class="<?php echo $_inner_classes?>"> | |
| 143 | <?php | |
| 144 | foreach ($slides as $id => $data) | |
| 145 | $this -> tc_render_single_slide_view( $id, $data , $slider_name_id, $img_size ); | |
| 146 | ?> | |
| 147 | </div><!-- /.carousel-inner --> | |
| 148 | <?php do_action( '__after_carousel_inner' , $slides ) ?> | |
| 149 | </div><!-- /#customizr-slider --> | |
| 150 | <?php | |
| 151 | $html = ob_get_contents(); | |
| 152 | if ($html) ob_end_clean(); | |
| 153 | echo apply_filters( 'tc_slider_display', $html, $slider_name_id ); | |
| 154 | } | |
| 155 | ||
| 156 | function tc_get_posts_slides( $slider_name_id, $img_size, $saved_slides){
| |
| 157 | extract($slider_name_id); | |
| 158 | global $wp_query, $wp_the_query, $post; | |
| 159 | $wp_query = new WP_Query($query); | |
| 160 | ||
| 161 | // if you don't want to show the first attachment when featured image isn't set | |
| 162 | // remove the line below | |
| 163 | add_filter('tc_show_single_post_content', '__return_false');
| |
| 164 | ||
| 165 | // remove smart load if any | |
| 166 | $smart_load_enabled = method_exists('TC_utils', 'tc_parse_imgs') && method_exists('TC_utils', 'tc_opt') && esc_attr( TC_utils::$inst->tc_opt( 'tc_img_smart_load' ) );
| |
| 167 | if ( $smart_load_enabled ) | |
| 168 | remove_filter('tc_thumb_html', array(TC_utils::$instance, 'tc_parse_imgs'));
| |
| 169 | ||
| 170 | // build our array of slides | |
| 171 | ||
| 172 | //initialize the slides array | |
| 173 | $slides = array(); | |
| 174 | ||
| 175 | //init slide active state index | |
| 176 | $__loop_index = 0; | |
| 177 | while ( have_posts() ){
| |
| 178 | the_post(); | |
| 179 | ||
| 180 | //title | |
| 181 | $title = $post->post_title; | |
| 182 | $default_title_length = apply_filters( 'tc_slide_title_length', 80 ); | |
| 183 | $title = ( strlen($title) > $default_title_length ) ? substr( $title,0,strpos( $title, ' ' , $default_title_length) ). ' ...' : $title; | |
| 184 | //lead text | |
| 185 | $text = get_the_excerpt(); | |
| 186 | $default_text_length = apply_filters( 'tc_slide_text_length', 250 ); | |
| 187 | $text = ( strlen($text) > $default_text_length ) ? substr( $text,0,strpos( $text, ' ' ,$default_text_length) ). ' ...' : $text; | |
| 188 | ||
| 189 | //button text | |
| 190 | $button_text = __('Read more »', 'customizr');
| |
| 191 | $default_button_length = apply_filters( 'tc_slide_button_length', 80 ); | |
| 192 | $button_text = ( strlen($button_text) > $default_button_length ) ? substr( $button_text,0,strpos( $button_text, ' ' ,$default_button_length)). ' ...' : $button_text; | |
| 193 | ||
| 194 | //link post id | |
| 195 | $link_id = get_the_id(); | |
| 196 | ||
| 197 | $id = $link_id; | |
| 198 | //button link | |
| 199 | $link_url = $link_id ? get_permalink( $link_id ) : 'javascript:void(0)'; | |
| 200 | ||
| 201 | //sets the first slide active | |
| 202 | $active = ( 0 == $__loop_index ) ? 'active' : ''; | |
| 203 | ||
| 204 | $color_style = ''; | |
| 205 | ||
| 206 | //attachment image | |
| 207 | $alt = apply_filters( 'tc_slide_background_alt' , trim(strip_tags( get_the_title() ) ) ); | |
| 208 | $slide_background = $this -> tc_get_thumbnail_data($img_size, $alt); | |
| 209 | //adds all values to the slide array only if the content exists (=> handle the case when an attachment has been deleted for example). Otherwise apply a default slide | |
| 210 | if ( empty($slide_background) && isset($saved_slides[1]) ) | |
| 211 | $slide_background = wp_get_attachment_image( $saved_slides[1], $img_size, false, array( 'class' => 'slide' , 'alt' => $alt ) ); | |
| 212 | ||
| 213 | $slides[$id] = array( | |
| 214 | 'title' => $title, | |
| 215 | 'text' => $text, | |
| 216 | 'button_text' => $button_text, | |
| 217 | 'link_id' => $link_id, | |
| 218 | 'link_url' => $link_url, | |
| 219 | 'active' => $active, | |
| 220 | 'color_style' => $color_style, | |
| 221 | 'slide_background' => $slide_background, | |
| 222 | ); | |
| 223 | ||
| 224 | //increments active index | |
| 225 | $__loop_index++; | |
| 226 | }//end of slides loop | |
| 227 | ||
| 228 | $slides = apply_filters('tc_post_slides', ( !empty($slides) ) ? $slides : false, $img_size);
| |
| 229 | // if you chose to not show the first attachment when featured image isn't set | |
| 230 | // remove the line below | |
| 231 | remove_filter('tc_show_single_post_content', '__return_false');
| |
| 232 | ||
| 233 | // re-add smart load if removed | |
| 234 | if ( $smart_load_enabled ) | |
| 235 | add_filter('tc_thumb_html', array(TC_utils::$instance, 'tc_parse_imgs'));
| |
| 236 | ||
| 237 | $wp_query = $wp_the_query; | |
| 238 | ||
| 239 | //returns the slides or false if nothing | |
| 240 | return $slides; | |
| 241 | }// end pf tc_get_the_slides | |
| 242 | ||
| 243 | function tc_get_thumbnail_data($img_size, $alt){
| |
| 244 | $attachment_id = get_post_meta( get_the_ID(), 'slide_img'); | |
| 245 | if ( $attachment_id ) | |
| 246 | return wp_get_attachment_image( $attachment_id[0], $img_size, false, array('class' => 'slide' , 'alt' => $alt) );
| |
| 247 | $thumb = TC_post_thumbnails::$instance -> tc_get_thumbnail_model($img_size); | |
| 248 | $thumb = isset($thumb) && isset($thumb['tc_thumb']) ? $thumb['tc_thumb'] : null; | |
| 249 | return $thumb; | |
| 250 | } | |
| 251 | } | |
| 252 | ||
| 253 | // second slider snippet | |
| 254 | ||
| 255 | ||
| 256 | add_filter('tc_post_slides', 'add_custom_slides', 10, 2);
| |
| 257 | function add_custom_slides( $slides, $img_size){
| |
| 258 | /* | |
| 259 | * set this as an empty array if you don't want slides before this way: | |
| 260 | * $my_slides_before = array(); | |
| 261 | */ | |
| 262 | $my_slides_before = array( | |
| 263 | 'my_479_of_your_attachment' => array( // replace my_316 with my_ID_of_your_attachment | |
| 264 | 'title' => 'Te asesoramos sin coste', | |
| 265 | 'text' => 'Dreamglish te asesorará sin coste alguno. Desde la carta de aceptación de la escuela hasta el pago final.', | |
| 266 | 'button_text' => 'Lee más', | |
| 267 | 'link_id' => 'some link', | |
| 268 | 'link_url' => 'http://dreamglish.com/modelo-de-negocio/', | |
| 269 | 'active' => 'active', | |
| 270 | 'color_style' => '', | |
| 271 | 'slide_background' => wp_get_attachment_image( 479, $img_size, false, array( 'class' => 'slide', 'alt' => 'First Slide') ), /* Replace 316 with the id of your desired attachment and the alt 'First Slide' */ | |
| 272 | ||
| 273 | ) | |
| 274 | ); | |
| 275 | ||
| 276 | // same thing with slides after: | |
| 277 | ||
| 278 | /* | |
| 279 | * set this as an empty array if you don't want slides after this way: | |
| 280 | * $my_slides_after = array(); | |
| 281 | */ | |
| 282 | ||
| 283 | $my_slides_after = array(); | |
| 284 | ||
| 285 | /* reset the active post slide if we have to add slides before */ | |
| 286 | if ( ! empty( $my_slides_before ) && $slides ) {
| |
| 287 | $keys = array_keys($slides); | |
| 288 | $first_slide_key = $keys[0]; | |
| 289 | ||
| 290 | $slides[ $first_slide_key ]['active'] = false; //reset active | |
| 291 | } | |
| 292 | ||
| 293 | //$slides = $my_slides_before + $slides + $my_slides_after; | |
| 294 | return $slides; | |
| 295 | } | |
| 296 | ||
| 297 | ||
| 298 | ||
| 299 | ||
| 300 | /*llargada text slider*/ | |
| 301 | ||
| 302 | add_filter( 'tc_slide_title_length', 'my_slider_text_limits' ); | |
| 303 | add_filter( 'tc_slide_text_length', 'my_slider_text_limits' ); | |
| 304 | add_filter( 'tc_slide_button_length', 'my_slider_text_limits' ); | |
| 305 | function my_slider_text_limits() {
| |
| 306 | switch ( current_filter() ) {
| |
| 307 | case 'tc_slide_title_length': | |
| 308 | return 150; | |
| 309 | break; | |
| 310 | ||
| 311 | case 'tc_slide_text_length': | |
| 312 | return 100; | |
| 313 | break; | |
| 314 | ||
| 315 | case 'tc_slide_button_length': | |
| 316 | return 150; | |
| 317 | break; | |
| 318 | } | |
| 319 | } | |
| 320 | ||
| 321 | ||
| 322 | ||
| 323 | /* full width */ | |
| 324 | ||
| 325 | add_filter('tc_fp_widget_area', 'use_row_fluid');
| |
| 326 | add_filter('tc_footer_widget_area', 'use_row_fluid');
| |
| 327 | add_filter('tc_column_content_wrapper_classes', 'use_row_fluid');
| |
| 328 | ||
| 329 | function use_row_fluid($classes){
| |
| 330 | return str_replace('row', 'row-fluid', $classes);
| |
| 331 | } | |
| 332 | ||
| 333 | /* end full width */ |