View difference between Paste ID: AF72KXJp and n1uvM3w8
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> &middot; &copy; '.esc_attr( date( 'Y' ) ).' <a href="'.esc_url( home_url() ).'" title="'.esc_attr(get_bloginfo()).'" rel="bookmark">'.esc_attr(get_bloginfo()).'</a> &middot; '.($credits ? $credits : 'Designed by <a href="http://www.themesandco.com/">Themes &amp; Co</a>').' &middot;'.($newline_credits ? '<br />&middot; '.$newline_credits.' &middot;' : '').'</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 &raquo;', '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 */