9.2 C
Srinagar,IN
Thursday, April 22, 2021
abstract class td_category_top_posts_style { // we keep the buffer and posts count for private use here: private $rendered_block_buffer = ''; private $rendered_posts_count = 0; /** * force all the td_category_top_posts_style s to have this method. * each top posts style, uses this method: * - it calls @see render_posts_to_buffer() * - and if @see get_rendered_post_count() != 0 * - it will show @see get_buffer() and the wrappers */ abstract function show_top_posts(); /** * we have to render the block first in the buffer, to avoid two queries. * - IF there are posts, we already have the buffer with the block's content and we don't have to make another query * - IF there are no posts, we ignore the buffer and we can also remove the wraps in the child classes of this class */ protected function render_posts_to_buffer() { // get the global category top posts grid style setting $td_grid_style = td_util::get_option('tds_category_td_grid_style'); $limit = td_api_category_top_posts_style::_helper_get_posts_shown_in_the_loop(); $block_name = td_api_category_top_posts_style::get_key(get_class($this), 'td_block_name'); // overwrite the $td_grid_style if the setting for this category was changed $td_grid_style_per_category_setting = td_util::get_category_option(td_global::$current_category_obj->cat_ID, 'tdc_category_td_grid_style'); if ($td_grid_style_per_category_setting != '') { $td_grid_style = $td_grid_style_per_category_setting; } // we have to have a default grid, there seems to be a problem with the grid styles if (empty($td_grid_style)) { $td_grid_style = 'td-grid-style-1'; } //parameters to filter to for big grid $atts_for_big_grid = array( 'limit' => $limit, 'category_id' => td_global::$current_category_obj->cat_ID, 'sort' => get_query_var('filter_by'), 'td_grid_style' => $td_grid_style ); //show the big grid $block_instance = td_global_blocks::get_instance($block_name); $this->rendered_block_buffer = $block_instance->render($atts_for_big_grid); $this->rendered_posts_count = $block_instance->td_query->post_count; if ($this->rendered_posts_count > 0) { td_global::$custom_no_posts_message = false; } // use class_name($this) to get the id :) } /** * gets the buffer, should be called after @see render_posts_to_buffer(); * @return string */ protected function get_buffer() { return $this->rendered_block_buffer; } /** * gets the number of posts @via td_global_blocks::get_instance($block_name)->td_query->post_count; * @see render_posts_to_buffer(); * @return string */ protected function get_rendered_post_count() { return $this->rendered_posts_count; } }