Advertisement
arie_cristianD

override Abstract Category Pagination

Nov 19th, 2023
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 10.66 KB | None | 0 0
  1. <?php
  2. /**
  3.  * @author : Jegtheme
  4.  */
  5. namespace JNews\Category;
  6.  
  7. use JNews\Archive\ArchiveAbstract;
  8. use JNews\Module\ModuleManager;
  9. use JNews\Module\Hero;
  10.  
  11. /**
  12.  * Abstract Class TermAbstract
  13.  */
  14. abstract class CategoryAbstract extends ArchiveAbstract {
  15.  
  16.     /**
  17.      * @var \WP_Term
  18.      */
  19.     protected $term;
  20.  
  21.     public function __construct( $term = null ) {
  22.         if ( $term === null ) {
  23.             $term = get_queried_object();
  24.         }
  25.         $this->term = $term;
  26.         $this->set_hero_class();
  27.     }
  28.  
  29.     public function render_hero() {
  30.         if ( $this->show_hero() ) {
  31.             ModuleManager::getInstance()->set_width( array( 12 ) );
  32.  
  33.             $attr = array(
  34.                 'hero_style'         => $this->get_hero_style(),
  35.                 'hero_margin'        => $this->get_hero_margin(),
  36.                 'date_format'        => $this->get_hero_date(),
  37.                 'date_format_custom' => $this->get_hero_date_custom(),
  38.                 'paged'              => 1,
  39.                 'number_post'        => $this->hero_instance->get_number_post(),
  40.                 'include_category'   => $this->term->term_id,
  41.                 'sort_by'            => 'latest',
  42.                 'push_archive'       => true,
  43.             );
  44.  
  45.             /** @var Hero\HeroViewAbstract */
  46.             $this->hero_instance->set_attribute( $attr );
  47.             $this->offset = $this->hero_instance->get_number_post();
  48.  
  49.             /** Render Item */
  50.             return $this->hero_instance->build_module( $attr );
  51.         }
  52.         return null;
  53.     }
  54.  
  55.  
  56.     public function render_content() {
  57.         $content_width = array( $this->get_content_width() );
  58.         ModuleManager::getInstance()->set_width( $content_width );
  59.  
  60.         $post_per_page = get_option( 'posts_per_page' );
  61.  
  62.         $attr = array(
  63.             'date_format'             => $this->get_content_date(),
  64.             'date_format_custom'      => $this->get_content_date_custom(),
  65.             'excerpt_length'          => $this->get_content_excerpt(),
  66.             'pagination_number_post'  => 9,
  67.             'number_post'             => $post_per_page,
  68.             'post_offset'             => $this->offset,
  69.             'include_category'        => $this->term->term_id,
  70.             'sort_by'                 => 'latest',
  71.             'pagination_mode'         => $this->get_content_pagination(),
  72.             'pagination_scroll_limit' => $this->get_content_pagination_limit(),
  73.             'paged'                   => jnews_get_post_current_page(),
  74.             'pagination_align'        => $this->get_content_pagination_align(),
  75.             'pagination_navtext'      => $this->get_content_pagination_navtext(),
  76.             'pagination_pageinfo'     => $this->get_content_pagination_pageinfo(),
  77.             'boxed'                   => $this->get_boxed(),
  78.             'boxed_shadow'            => $this->get_boxed_shadow(),
  79.             'box_shadow'              => $this->get_box_shadow(),
  80.             'push_archive'            => true,
  81.         );
  82.  
  83.         if ( get_theme_mod( 'jnews_ads_inline_module_enable', false ) ) {
  84.             $ads_option = array(
  85.                 'ads_type'            => get_theme_mod( 'jnews_ads_inline_module_type', 'googleads' ),
  86.                 'ads_position'        => get_theme_mod( 'jnews_ads_inline_module_paragraph', 2 ),
  87.                 'ads_random'          => get_theme_mod( 'jnews_ads_inline_module_paragraph_random', false ),
  88.                 'ads_image'           => get_theme_mod( 'jnews_ads_inline_module_image', '' ),
  89.                 'ads_image_tablet'    => get_theme_mod( 'jnews_ads_inline_module_image_tablet', '' ),
  90.                 'ads_image_phone'     => get_theme_mod( 'jnews_ads_inline_module_image_phone', '' ),
  91.                 'ads_image_link'      => get_theme_mod( 'jnews_ads_inline_module_link', '' ),
  92.                 'ads_image_alt'       => get_theme_mod( 'jnews_ads_inline_module_text', '' ),
  93.                 'ads_image_new_tab'   => get_theme_mod( 'jnews_ads_inline_module_open_tab', true ),
  94.                 'google_publisher_id' => get_theme_mod( 'jnews_ads_inline_module_google_publisher', '' ),
  95.                 'google_slot_id'      => get_theme_mod( 'jnews_ads_inline_module_google_id', '' ),
  96.                 'google_desktop'      => get_theme_mod( 'jnews_ads_inline_module_google_desktop', 'auto' ),
  97.                 'google_tab'          => get_theme_mod( 'jnews_ads_inline_module_google_tab', 'auto' ),
  98.                 'google_phone'        => get_theme_mod( 'jnews_ads_inline_module_google_phone', 'auto' ),
  99.                 'code'                => get_theme_mod( 'jnews_ads_inline_module_code', '' ),
  100.                 'ads_class'           => 'inline_module',
  101.             );
  102.  
  103.             if ( 'shortcode' === $ads_option['ads_type'] ) {
  104.                 $ads_option['shortcode'] = get_theme_mod( 'jnews_ads_inline_module_shortcode', null );
  105.             }
  106.  
  107.             $attr = array_merge( $attr, $ads_option );
  108.         }
  109.  
  110.         $attr                   = apply_filters( 'jnews_get_content_attr', $attr, 'jnews_category_', '_' . $this->term->term_id );
  111.         $name                   = apply_filters( 'jnews_get_content_layout', 'JNews_Block_' . $this->get_content_type(), 'jnews_category_' );
  112.         $name                   = jnews_get_view_class_from_shortcode( $name );
  113.         $this->content_instance = jnews_get_module_instance( $name );
  114.         return null !== $this->content_instance ? $this->content_instance->build_module( $attr ) : '';
  115.     }
  116.  
  117.     public function header_style() {
  118.         $image      = $this->get_header_image();
  119.         $background = $this->get_header_background();
  120.         $style      = '';
  121.  
  122.         if ( ! empty( $image ) ) {
  123.             $style .= "background-image: url('{$image}');";
  124.         }
  125.  
  126.         if ( ! empty( $background ) ) {
  127.             $style .= "background-color: {$background};";
  128.         }
  129.  
  130.         return $style;
  131.     }
  132.  
  133.     public function archive_header_1() {
  134.         $subtitle   = ! empty( $this->term->description ) ? '<h2 class="jeg_cat_subtitle">' . do_shortcode( $this->term->description ) . '</h2>' : '';
  135.         $breadcrumb = ( jnews_can_render_breadcrumb() && jnews_show_breadcrumb() ) ? "<div class=\"jeg_breadcrumbs jeg_breadcrumb_category jeg_breadcrumb_container\">{$this->render_breadcrumb()}</div>" : '';
  136.         $subscribe  = apply_filters( 'jnews_push_notification_single_category', '', $this->term );
  137.  
  138.         $output =
  139.             "<div class=\"jeg_cat_header jeg_cat_header_1\">
  140.                {$breadcrumb}
  141.                <h1 class=\"jeg_cat_title\">{$this->term->name}</h1>
  142.                {$subtitle}
  143.                {$subscribe}
  144.            </div>";
  145.  
  146.         return $output;
  147.     }
  148.  
  149.     public function archive_header_2() {
  150.         $subtitle   = ! empty( $this->term->description ) ? '<h2 class="jeg_cat_subtitle">' . do_shortcode( $this->term->description ) . '</h2>' : '';
  151.         $breadcrumb = ( jnews_can_render_breadcrumb() && jnews_show_breadcrumb() ) ? "<div class=\"jeg_breadcrumbs jeg_breadcrumb_category jeg_breadcrumb_container\">{$this->render_breadcrumb()}</div>" : '';
  152.         $subscribe  = apply_filters( 'jnews_push_notification_single_category', '', $this->term );
  153.  
  154.         if ( ! empty( $subscribe ) ) {
  155.             $subscribe = "<div class=\"container\">
  156.                            {$subscribe}
  157.                        </div>";
  158.         }
  159.  
  160.         $output =
  161.             "<div class=\"jeg_cat_header jeg_cat_header_2\">
  162.                <div class=\"container\">
  163.                    {$breadcrumb}
  164.                    <h1 class=\"jeg_cat_title\">{$this->term->name}</h1>
  165.                    {$subtitle}
  166.                </div>
  167.            </div>
  168.            {$subscribe}";
  169.  
  170.         return $output;
  171.     }
  172.  
  173.     public function archive_header_3() {
  174.         $style      = $this->get_header_style();
  175.         $subtitle   = ! empty( $this->term->description ) ? '<h2 class="jeg_cat_subtitle">' . do_shortcode( $this->term->description ) . '</h2>' : '';
  176.         $breadcrumb = jnews_can_render_breadcrumb() ? "<div class=\"jeg_breadcrumbs jeg_breadcrumb_category jeg_breadcrumb_container\"> {$this->render_breadcrumb()} </div>" : '';
  177.         $subscribe  = apply_filters( 'jnews_push_notification_single_category', '', $this->term );
  178.  
  179.         if ( ! empty( $subscribe ) ) {
  180.             $subscribe = "<div class=\"container\">
  181.                            {$subscribe}
  182.                        </div>";
  183.         }
  184.  
  185.         $output =
  186.             "<div class=\"jeg_cat_header jeg_cat_header_3\">
  187.                <div class=\"jeg_cat_overlay {$style}\">
  188.                    <div class=\"jeg_cat_bg\" style=\"{$this->header_style()}\"></div>
  189.  
  190.                    <div class=\"container\">
  191.                        {$breadcrumb}
  192.                        <div class=\"jeg_title_wrap\">
  193.                            <h1 class=\"jeg_cat_title\">{$this->term->name}</h1>
  194.                            {$subtitle}
  195.                        </div>
  196.                    </div>
  197.                </div>
  198.            </div>
  199.            {$subscribe}";
  200.  
  201.         return $output;
  202.     }
  203.  
  204.     public function archive_header_4() {
  205.         $style      = $this->get_header_style();
  206.         $subtitle   = ! empty( $this->term->description ) ? '<h2 class="jeg_cat_subtitle">' . do_shortcode( $this->term->description ) . '</h2>' : '';
  207.         $breadcrumb = jnews_can_render_breadcrumb() ?
  208.             "<div class=\"jeg_breadcrumbs\">
  209.                <div class=\"container jeg_breadcrumb_category jeg_breadcrumb_container\">
  210.                    {$this->render_breadcrumb()}
  211.                </div>
  212.            </div>" : '';
  213.  
  214.         $subscribe = apply_filters( 'jnews_push_notification_single_category', '', $this->term );
  215.  
  216.         if ( ! empty( $subscribe ) ) {
  217.             $subscribe = "<div class=\"container\">
  218.                            {$subscribe}
  219.                        </div>";
  220.         }
  221.  
  222.         $output =
  223.             "<div class=\"jeg_cat_header jeg_cat_header_4\">
  224.                <div class=\"jeg_cat_overlay {$style}\">
  225.                    <div class=\"jeg_cat_bg jeg_parallax_bg\" style=\"{$this->header_style()}\"></div>
  226.  
  227.                    <div class=\"container\">
  228.                        <div class=\"jeg_title_wrap\">
  229.                            <h1 class=\"jeg_cat_title\">{$this->term->name}</h1>
  230.                            {$subtitle}
  231.                        </div>
  232.                    </div>
  233.                </div>
  234.                {$breadcrumb}
  235.            </div>
  236.            {$subscribe}";
  237.  
  238.         return $output;
  239.     }
  240.  
  241.     public function render_header( $position ) {
  242.         $header_type = $this->get_header_type();
  243.  
  244.         if ( $position === 'top' && ( $header_type === '2' || $header_type === '3' || $header_type === '4' ) ) {
  245.             switch ( $header_type ) {
  246.                 case '2':
  247.                     return $this->archive_header_2();
  248.                 case '3':
  249.                     return $this->archive_header_3();
  250.                 case '4':
  251.                     return $this->archive_header_4();
  252.             }
  253.         } elseif ( $position === 'bottom' && $header_type === '1' ) {
  254.             return $this->archive_header_1();
  255.         }
  256.  
  257.         return null;
  258.     }
  259.  
  260.     public function set_hero_class() {
  261.         $name                = jnews_get_view_class_from_shortcode( 'JNews_Hero_' . $this->get_hero_type() );
  262.         $this->hero_instance = jnews_get_module_instance( $name );
  263.     }
  264.  
  265.  
  266.  
  267.     // header
  268.     abstract public function get_header_type();
  269.     abstract public function get_header_background();
  270.     abstract public function get_header_image();
  271.     abstract public function get_header_style();
  272.  
  273.     // hero
  274.     abstract public function show_hero();
  275.     abstract public function get_hero_type();
  276.     abstract public function get_hero_style();
  277.     abstract public function get_hero_margin();
  278.     abstract public function get_hero_date();
  279.     abstract public function get_hero_date_custom();
  280. }
  281.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement