Пример #1
0
 /**
  * Output by specific ids for load more custom grid
  */
 public function output_by_specific_ids()
 {
     $base = new Essential_Grid_Base();
     $item_skin = new Essential_Grid_Item_Skin();
     $item_skin->grid_id = $this->grid_id;
     $item_skin->set_grid_type($base->getVar($this->grid_params, 'layout', 'even'));
     $item_skin->set_default_image_by_id($base->getVar($this->grid_postparams, 'default-image', 0, 'i'));
     $m = new Essential_Grid_Meta();
     $filters = array();
     $order_by = explode(',', $base->getVar($this->grid_params, 'sorting-order-by', 'date'));
     if (!is_array($order_by)) {
         $order_by = array($order_by);
     }
     $item_skin->init_by_id($base->getVar($this->grid_params, 'entry-skin', 0, 'i'));
     $lazy_load = $base->getVar($this->grid_params, 'lazy-loading', 'off');
     if ($lazy_load == 'on') {
         $item_skin->set_lazy_load(true);
     }
     $default_media_source_order = $base->getVar($this->grid_postparams, 'media-source-order', '');
     $item_skin->set_default_media_source_order($default_media_source_order);
     $default_lightbox_source_order = $base->getVar($this->grid_params, 'lb-source-order', '');
     $item_skin->set_default_lightbox_source_order($default_lightbox_source_order);
     $default_aj_source_order = $base->getVar($this->grid_params, 'aj-source-order', '');
     $item_skin->set_default_ajax_source_order($default_aj_source_order);
     $post_media_source_type = $base->getVar($this->grid_postparams, 'image-source-type', 'full');
     $default_video_poster_order = $base->getVar($this->grid_params, 'poster-source-order', '');
     $item_skin->set_default_video_poster_order($default_video_poster_order);
     $layout = $base->getVar($this->grid_params, 'layout', 'even');
     $layout_sizing = $base->getVar($this->grid_params, 'layout-sizing', 'boxed');
     if ($layout_sizing !== 'fullwidth' && $layout == 'masonry') {
         $item_skin->set_poster_cropping(true);
     }
     $skins_html = '';
     $found_filter = array();
     if (!empty($this->grid_layers) && count($this->grid_layers) > 0) {
         foreach ($this->grid_layers as $key => $entry) {
             if (!in_array($key, $this->filter_by_ids)) {
                 continue;
             }
             $post_media_source_data = $base->get_custom_media_source_data($entry, $post_media_source_type);
             $post_video_ratios = $m->get_custom_video_ratios($entry);
             $filters = array();
             if (is_array($order_by) && !empty($order_by)) {
                 //$sort = $this->prepare_sorting_array_by_post($post, $order_by);
                 //$item_skin->set_sorting($sort);
             }
             if (!empty($entry['custom-filter'])) {
                 $cats = explode(',', $entry['custom-filter']);
                 if (!is_array($cats)) {
                     $cats = (array) $cats;
                 }
                 foreach ($cats as $category) {
                     $filters[sanitize_key($category)] = array('name' => $category, 'slug' => sanitize_key($category));
                 }
             }
             $found_filter = $found_filter + $filters;
             //these are the found filters, only show filter that the posts have
             $item_skin->set_filter($filters);
             $item_skin->set_media_sources($post_media_source_data);
             $item_skin->set_media_sources_type($post_media_source_type);
             $item_skin->set_video_ratios($post_video_ratios);
             $item_skin->set_layer_values($entry);
             $item_skin->set_load_more();
             //switch to different skin
             $use_item_skin_id = $base->getVar($entry, 'use-skin', '-1');
             if (intval($use_item_skin_id) === 0) {
                 $use_item_skin_id = -1;
             }
             $item_skin->switch_item_skin($use_item_skin_id);
             $item_skin->register_layer_css();
             $item_skin->register_skin_css();
             ob_start();
             $item_skin->output_item_skin();
             $skins_html .= ob_get_contents();
             ob_clean();
             ob_end_clean();
         }
     } else {
         return false;
     }
     return $skins_html;
 }