/** * @shortcode hw_widget_content shortcode to display any widget content * @param $prop * @param $content */ function _hw_awc_feature_widget_content_shortcode($prop, $content) { $args = array('widget' => '', 'sidebar' => '', 'params_config' => '', 'skin' => 'skin_default'); $d = shortcode_atts($args, $prop); extract($d); //valid if (empty($widget)) { return; } global $wp_registered_sidebars; global $wp_registered_widgets; //default sidebar params $sidebar_params = array('before_title' => '', 'after_title' => '', 'before_widget' => '', 'after_widget' => ''); if (!empty($sidebar) && !empty($skin) && isset($wp_registered_sidebars[$sidebar])) { $sidebar_params = HW_AWC::apply_sidebar_skin($sidebar, $skin, array('widget_id' => 'hw-shortcode-widget', 'classname' => strtolower($widget) . ' hw-awc-override')); } //get widget instance by saved widget config if (!empty($params_config) && is_numeric($params_config)) { $config = AWC_WidgetFeature_saveconfig::get_widget_setting($params_config); if ($config) { $widget_params = AWC_WidgetFeature_saveconfig::decode_config($config->setting); } } if (isset($widget) && class_exists($widget, false) && !empty($widget_params)) { //display widget content the_widget($widget, $widget_params, $sidebar_params); } }
/** * load widget template * @param array $instance: widget instance (optional) * @param array $data: array of data need to be extract to current context */ private function load_widget_template(&$instance = array(), $data = array()) { //extract data if (isset($this->shared) && is_array($this->shared)) { extract($this->shared); } else { if (is_array($data)) { extract($data); } } //extract variables from array $args that get from 'widget' method if (isset($args)) { extract($args); } if (!is_array($instance) || !count($instance)) { $instance = $this->hw_parse_data(); $instance = $instance['instance']; } else { $this->get_widget_instance($instance); } //by hoangweb.com if ($this->skin) { //load skin $file = $this->skin->get_skin_file(empty($instance['skin']) ? 'default' : $instance['skin']); if (file_exists($file)) { /** * pagination skin */ $paginav = $this->skin->get_skin_instance('pagination')->get_skin_file(empty($instance['pagination_skin']) ? 'default' : $instance['pagination_skin']); //skin settings /* $paginav_skin_setting = isset($instance['skin_setting'])? $instance['skin_setting'] : ''; $skin_setting_file = $this->skin->get_file_skin_setting(); //current skin setting $skin_options = $this->skin->get_file_skin_options(); //current skin options if(file_exists($skin_setting_file)) include ($skin_setting_file); if(file_exists($skin_options)) include ($skin_options); if(isset($theme) && isset($theme['options'])) $default_options = $theme['options']; if(isset($default_options) && isset($theme_options)) { $paginav_skin_setting = HW_SKIN::merge_skin_options_values($paginav_skin_setting, $default_options, $theme_options); } */ /** * scrollbar skin */ $scrollbar = $this->skin->get_skin_instance('scrollbar')->get_skin_file(empty($instance['scrollbar_skin']) ? 'default' : $instance['scrollbar_skin']); //widget feature: grid_posts $grid_posts = HW_AWC::get_widget_feature($this, 'grid_posts'); $awc_enable_grid_posts = false; //disable by default if ($grid_posts && HW_AWC::check_widget_feature($this, 'grid_posts')) { $awc_enable_grid_posts = $grid_posts->is_active($instance); if ($awc_enable_grid_posts) { $awc_grid_posts_cols = $grid_posts->get_field_value('awc_grid_posts_cols'); } } /** * init some variables */ $theme = array(); //declare stylesheets file //content wrapper ID $hwtpl_wrapper_id = $this->get_holder_id($instance['widget_id']); $hwtpl_scrollbar_wrapper_class = ''; //scrollbar content wrapper css class $hwtpl_pagination_class = ''; //for pagination /** * load pagination component */ if (file_exists($paginav)) { include $paginav; //valid if (!isset($theme['scripts'])) { $theme['scripts'] = array(); } if (!isset($theme['styles'])) { $theme['styles'] = array(); } //migrate skin from pagination module if ($instance['use_default_pagenav_skin'] && hw_is_active_module('pagination')) { $theme = HWPageNavi_Core::render_pagination_skin(); } elseif (count($theme['styles']) || count($theme['scripts'])) { $this->skin->get_skin_instance('pagination')->enqueue_files_from_skin($theme['styles'], $theme['scripts']); //enqueue stuff from skin /*HW_SKIN::enqueue_skin_assets(array( 'instance' => $this->skin, 'hash_skin' => $instance['skin'], 'skin_file' => $file, 'skin_settings' => $theme, 'skin_options' => $skin_setting ));*/ } //parse template tags $hwtpl_pagination_class = isset($theme['pagination_class']) ? $theme['pagination_class'] : ''; $this->share_data('pagination', $theme); } //_print($this->skin->get_active_skin()); //enqueue stuff from skin /** * load scrollbar component */ if (isset($instance['enable_scrollbar']) && $instance['enable_scrollbar'] && file_exists($scrollbar)) { //load skin resource $scrollbar_options_config = $this->skin->get_skin_instance('scrollbar')->get_file_skin_options(empty($instance['scrollbar_skin']) ? 'default' : $instance['scrollbar_skin']); //theme options configuration $scrollbar_theme_setting = $this->skin->get_skin_instance('scrollbar')->get_file_skin_setting(); //load theme-setting.php //theme options $scrollbar_theme_options = isset($instance['scrollbar_skin_setting']) ? $instance['scrollbar_skin_setting'] : array(); //scrollbar skin options //reset $theme['styles'] = array(); //declare stylesheets file $theme['scripts'] = array(); //declare js files $theme['options'] = array(); if (!empty($scrollbar_options_config) && file_exists($scrollbar_options_config)) { include $scrollbar_options_config; //include define scrollbar theme options } if (!empty($scrollbar_theme_setting) && file_exists($scrollbar_theme_setting)) { include $scrollbar_theme_setting; //scrollbar theme setting } if (isset($theme_options) && isset($theme)) { $default = isset($theme['options']) ? $theme['options'] : array(); $result = HW_SKIN::get_skin_options($scrollbar_theme_options, $default, $theme_options); $scrollbar_theme_options = array_merge($scrollbar_theme_options, $result); } /* //best way but use old way as above do $scrollbar_skin_setting = isset($instance['scrollbar_skin_setting'])? $instance['scrollbar_skin_setting'] : ''; $scrollbarskin_setting_file = $this->skin->get_skin_instance('scrollbar')->get_file_skin_setting(); //current skin setting $scrollbar_skin_options = $this->skin->get_skin_instance('scrollbar')->get_file_skin_options(); //current skin options if(file_exists($scrollbarskin_setting_file)) include ($scrollbarskin_setting_file); if(file_exists($scrollbar_skin_options)) include ($scrollbar_skin_options); if(isset($theme) && isset($theme['options'])) $scrollbar_default_options = $theme['options']; if(isset($scrollbar_default_options) && isset($theme_options)) { $scrollbar_skin_setting = HW_SKIN::merge_skin_options_values($scrollbar_skin_setting, $scrollbar_default_options, $theme_options); } */ //parse template tags $hwtpl_scrollbar_wrapper_class = isset($theme['scrollbar_css']) ? $theme['scrollbar_css'] : ''; include $scrollbar; //valid /*if(!isset($theme['scripts'])) $theme['scripts'] = array(); if(!isset($theme['styles'])) $theme['styles'] = array(); if(count($theme['styles']) || count($theme['scripts'])) { $this->skin->get_skin_instance('scrollbar')->enqueue_files_from_skin($theme['styles'], $theme['scripts']); }*/ //enqueue stuff from skin HW_SKIN::enqueue_skin_assets(array('instance' => $this->skin->get_skin_instance('scrollbar'), 'hash_skin' => $instance['scrollbar_skin'], 'skin_file' => $scrollbar, 'skin_settings' => $theme, 'skin_options' => $scrollbar_theme_options)); $this->init_scrollbar_options($scrollbar_theme_options, $theme); } /** * load main skin */ $options_config = $this->skin->get_file_skin_options(); $skin_setting = $this->skin->get_file_skin_setting(); if (file_exists($skin_setting)) { include $skin_setting; } //theme options $skin_options = isset($instance['skin_setting']) ? $instance['skin_setting'] : array(); $skin_options = HW_SKIN::merge_skin_options_values($skin_options, $skin_setting, $options_config); //params if (empty($instance['intermediate_image_sizes']) && !empty($instance['thumb_w']) && !empty($instance['thumb_h'])) { $image_size = array($instance['thumb_w'], $instance['thumb_h']); } elseif (!empty($instance['intermediate_image_sizes'])) { $image_size = $instance['intermediate_image_sizes']; } else { $image_size = 'thumbnail'; } //reset $theme['styles'] = array(); //declare stylesheets file $theme['scripts'] = array(); //declare js files $theme['options'] = array(); //refresh theme options //widget features $wfeatures = $this->init_widget_features(array('theme' => $theme, 'skin_options' => $skin_options, 'instance' => $instance)); //render skin template power by twig $data = array('hwtpl_scrollbar_wrapper_class', 'cat_posts', 'full_image_src', 'fancy_group', 'fancybox_g1', 'arrExlpodeFields', 'image_size', 'wfeatures', 'hwtpl_wrapper_id', 'args', 'instance', 'open_title_link', 'close_title_link'); $data = compact($data); $data['context'] = $this; //reference to this object $content = $this->skin->render_skin_template($data, false); if ($content !== false) { echo $content; } include $file; //valid /*if(!isset($theme['scripts'])) $theme['scripts'] = array(); if(!isset($theme['styles'])) $theme['styles'] = array(); if(count($theme['styles']) || count($theme['scripts'])) { $this->skin->enqueue_files_from_skin($theme['styles'], $theme['scripts']); //enqueue stuff from skin }*/ //enqueue stuff from skin HW_SKIN::enqueue_skin_assets(array('instance' => $this->skin, 'hash_skin' => $instance['skin'], 'skin_file' => $file, 'skin_settings' => $theme, 'skin_options' => $skin_options)); //init scrolling //add_action('wp_footer',array(&$this, 'init_content_options'),1000); //don't use wp hook to setup scroll $this->init_content_options(array('theme' => $theme, 'skin_options' => $skin_options, 'instance' => $instance)); } } else { echo __('not found class HW_SKIN.'); } }
/** * This is the Widget * @param $args * @param $instance */ public function widget($args, $instance) { global $post; extract($args); // Widget options $title = apply_filters('widget_title', $instance['title'], $instance, $this->id_base); // Title $this_taxonomy = $instance['taxonomy']; // Taxonomy to show $hierarchical = !empty($instance['hierarchical']) ? '1' : '0'; $showcount = !empty($instance['count']) ? '1' : '0'; $hide_empty = !empty($instance['hide_empty']) ? '1' : '0'; $depth = !empty($instance['depth']) ? $instance['depth'] : 0; //skin $use_skin = !empty($instance['use_skin']) ? 1 : 0; $use_skin_options = !empty($instance['extend_skin_options']) ? 1 : 0; $skin = isset($instance['skin']) ? $instance['skin'] : ''; //saved active hash skin //skin settings $skin_setting = isset($instance['skin_settings']) ? $instance['skin_settings'] : ''; if ($skin) { $skin_setting_file = $this->skin->get_file_skin_setting($skin); //current skin setting $skin_options = $this->skin->get_file_skin_options(); //current skin options if (file_exists($skin_setting_file)) { include $skin_setting_file; } if (file_exists($skin_options)) { include $skin_options; } if (isset($theme) && isset($theme['options'])) { $default_options = $theme['options']; } if (isset($default_options) && isset($theme_options)) { $skin_setting = HW_SKIN::merge_skin_options_values($skin_setting, $default_options, $theme_options); } } //widget feature field: grid_posts $grid_posts = HW_AWC::get_widget_feature($this, 'grid_posts'); $awc_enable_grid_posts = false; //disable by default if ($grid_posts && HW_AWC::check_widget_feature($this, 'grid_posts')) { $awc_enable_grid_posts = $grid_posts->is_active($instance); if ($awc_enable_grid_posts) { $awc_grid_posts_cols = $grid_posts->get_field_value('awc_grid_posts_cols'); } } $show_option_none = !empty($instance['show_option_none']) ? $instance['show_option_none'] : ''; if (array_key_exists('orderby', $instance)) { $orderby = $instance['orderby']; } else { $orderby = 'count'; } if (array_key_exists('ascdsc', $instance)) { $ascdsc = $instance['ascdsc']; } else { $ascdsc = 'desc'; } if (array_key_exists('exclude', $instance)) { $exclude = join(',', (array) $instance['exclude']); } else { $exclude = ''; } if (array_key_exists('dropdown', $instance)) { $dropdown = $instance['dropdown']; } else { $dropdown = false; } #child of arg if (array_key_exists('childof', $instance)) { $childof = $instance['childof']; } else { $childof = ''; } //get current category/taxonomy if (isset($instance['childof_current_term']) && $instance['childof_current_term'] && (is_category() || is_tax())) { $obj = get_queried_object(); //get current page data $childof = $obj->term_id; //get current term in template } $show_subcat_by_parent = isset($instance['show_subcat_by_parent']) ? (bool) $instance['show_subcat_by_parent'] : false; $categories_by_current_post = isset($instance['categories_by_current_post']) ? (bool) $instance['categories_by_current_post'] : false; $args['skin'] = $skin; $args['skin_setting'] = $skin_setting; $data = array('show_subcat_by_parent' => $show_subcat_by_parent, 'categories_by_current_post' => $categories_by_current_post, 'skin' => $skin, 'skin_setting' => $skin_setting); // Output $tax = $this_taxonomy; if ($dropdown) { $taxonomy_object = get_taxonomy($tax); $args = array('show_option_all' => false, 'show_option_none' => '', 'orderby' => $orderby, 'order' => $ascdsc, 'show_count' => $showcount, 'hide_empty' => $hide_empty, 'child_of' => $childof, 'exclude' => $exclude, 'echo' => 0, 'hierarchical' => $hierarchical, 'name' => $taxonomy_object->query_var, 'id' => 'hwlct-widget-' . $tax, 'depth' => $depth, 'taxonomy' => $tax, 'hide_if_empty' => (bool) $hide_empty, 'walker' => new hwlctwidget_Taxonomy_Dropdown_Walker(), 'mydata' => $data); } else { $args = array('show_option_all' => false, 'orderby' => $orderby, 'order' => $ascdsc, 'style' => 'list', 'show_count' => $showcount, 'hide_empty' => $hide_empty, 'use_desc_for_title' => 1, 'child_of' => $childof, 'exclude' => $exclude, 'hierarchical' => $hierarchical, 'title_li' => '', 'show_option_none' => apply_filters('hwlct_show_option_none', $show_option_none), 'number' => null, 'echo' => 0, 'depth' => $depth, 'taxonomy' => $tax, 'mydata' => $data); $args['walker'] = new hwlctwidget_Taxonomy_Walker($args); } $args = apply_filters('hwlct_wp_list_categories_args', $args, $instance); //filter args if ($use_skin && $this->skin) { //load skin $skin = $this->skin; //$file = $this->skin->get_skin_instance('x')->get_skin_link(empty($instance['skin1'])? 'default':$instance['skin1']); $file = $this->skin->get_skin_file(empty($instance['skin']) ? 'default' : $instance['skin']); if (file_exists($file)) { HW_POST::reset_item_counter(); $terms_data = get_categories($args); //get terms data foreach ($terms_data as $id => &$term) { //wrap with timber $term = new HW_TimberTerm($term->term_id, $term->taxonomy); //class $classes = array('item-box'); if ($awc_enable_grid_posts && isset($awc_grid_posts_cols) && class_exists('HW_POST')) { $classes = HW_POST::get_item_class($awc_grid_posts_cols, $classes); } if (class_exists('HW_POST')) { $term->add_class(HW_POST::item_class($classes, false)); } //term image custom field /*if(function_exists('get_field')) $image = get_field('image',$term); else $image = ''; if(!$image) $image = HW_SKIN::current()->get_skin_url('images/placeholder.png');*/ } //skin template $content = $this->skin->render_skin_template(compact('terms_data', 'tax'), false); if ($content !== false) { echo $content; } //init theme setting $theme['styles'] = array(); //declare stylesheets file $theme['scripts'] = array(); //declare js files if ($this->skin->allow_skin_file()) { include $file; } //enqueue stuff from skin HW_SKIN::enqueue_skin_assets(array('instance' => $this->skin, 'hash_skin' => $instance['skin'], 'skin_file' => $file, 'skin_settings' => $theme, 'skin_options' => $skin_setting)); } } else { echo $before_widget; if ($title) { echo $before_title . $title . $after_title; } if ($dropdown) { echo '<form action="' . get_bloginfo('url') . '" method="get">'; echo apply_filters('hwlct_wp_dropdown_categories', wp_dropdown_categories($args), $args, $instance); echo '<input type="submit" value="go »" /></form>'; } else { echo apply_filters('hwlct_wp_list_categories', wp_list_categories($args), $args, $instance); } echo $after_widget; } if ($use_skin && !class_exists('HW_SKIN')) { echo 'HW_SKIN class không tìm thấy.'; } //notice }
/** * render theme option field * @param $aField */ public function renderOptionField($field, $_name, $_id, $values = null, $wrapper = true, $repeat = true) { if (!isset($field['type'])) { $field['type'] = 'text'; } //default set checkbox option //valid field type if (!in_array($field['type'], self::allow_field_types())) { return; } if (!isset($field['name'])) { $field['name'] = ''; //valid field name //return ; //allow type='string' } /*if(!isset($field['id'])) { //set field id attr -> never use $field['id'] = $field['name']; }*/ //filter field setting before render field form $field = apply_filters('renderOptionField', $field); $tag = ''; $name = $_name . '[' . $field['name'] . ']'; //field name $id = $_id . '_' . $field['name']; //field id $title = isset($field['title']) ? $field['title'] : $field['name']; $desc = isset($field['description']) ? $field['description'] : ''; //field value if (!empty($values) && isset($values[$field['name']])) { $value = esc_attr($values[$field['name']]); } else { $value = isset($field['value']) ? esc_attr($field['value']) : ''; //default field value } $field_atts = array('id' => $id, 'name' => $name, 'value' => $value, 'title' => $title, 'desc' => $desc); if ($wrapper) { $tag .= '<p style="margin-bottom:14px;">'; } //check field avaiable it'belong to widget feature if (isset($field['awc_widget_feature']) && is_object($this->widget_ref) && !HW_AWC::check_widget_feature($this->widget_ref, $field['awc_widget_feature'])) { $tag .= '<span>Field (<em>' . $name . '</em>) yêu cầu kích hoạt feature "' . $field['awc_widget_feature'] . '" cho widget này.</span>'; } else { self::build_option_field($field, $field_atts, $tag, array(&$this, 'renderOptionField_callback')); } if ($wrapper) { $tag .= '</p>'; } //repeat the field if ($repeat == true && isset($field['repeat'])) { //repeat current field if (isset($field['repeat']) && is_numeric($field['repeat'])) { for ($i = 1; $i < $field['repeat']; $i++) { //- first repeat field $save_id = $field['name']; $field['name'] .= '_' . $i; $field['title'] = $field['name']; //sync for title $tag .= $this->renderOptionField($field, $_name, $_id, $values, false, false); $field['name'] = $save_id; } } } return $tag; }
/** * since yarpp v4.2.5 * @param $posts: related posts result * @param array $args: keys 'function','args','related_ID' */ public function _yarpp_results($posts, $args) { global $wp_query; $wp_query->posts = $posts; /*$cat_posts = $wp_query; $arrExlpodeFields = array('title');*/ /*if(isset($args['args']['compatible_vars']) && is_array($args['args']['compatible_vars'])){ $this->compatible_vars = array_merge($this->compatible_vars, $args['args']['compatible_vars']); } $this->compatible_vars = array_merge($this->compatible_vars, $args['args']['skin']->instance->get_migrate()); foreach($this->compatible_vars as $var => $val){ $$var = is_string($val) && isset($$val)? $$val : $val; } */ //default sidebar params $sidebar_params = array('before_widget' => '<div id="%1$s" class="hw-widget %2$s">', 'after_widget' => '</div>', 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>'); //valid posts if (!isset($args['args']['skin'])) { return $posts; } $hwrp = $skin = $args['args']['skin']; if (isset($args['args']['hwrp_current'])) { $hwrp = (object) $args['args']['hwrp_current']; //get current post type related data } //migrate vars $migrate_data = $skin->instance->get_migrate(); extract($migrate_data); //get sidebar wrapper if (isset($skin->box_skin)) { global $wp_registered_sidebars; $sidebar = $args['args']['skin']->box_skin; $sidebar_widget_skin = $args['args']['skin']->box_widget_skin; //override sidebar skin box with other $sidebar_params = array(); //extract($sidebar_params); //extract sidebar param if ($sidebar_widget_skin) { //get change default sidebar skin, here we create 4 holder: sidebar_default, skin1,skin2,skin3 $skin_data = HW_AWC_Sidebar_Settings::get_sidebar_setting($sidebar_widget_skin, $sidebar); HW_SKIN::apply_skin_data($skin_data, array($this, '_hw_skin_resume_skin_data'), array('sidebar' => $sidebar, 'sidebar_widget_skin' => $sidebar_widget_skin, 'sidebar_params' => &$sidebar_params)); $sidebar_params = HW_AWC::format_widget_sidebar_params(null, $sidebar, array('classname' => 'hw-related-posts hw-awc-override', 'sidebar_params' => $sidebar_params)); } } //check related content from widget config if (!empty($skin->widget_config)) { $widget_instance = AWC_WidgetFeature_saveconfig::get_widget_setting_instance($skin->widget_config, array('widget' => 'hw_taxonomy_post_list_widget', 'group' => 'main_loop')); //valid data if (!isset($widget_instance['query_data'])) { $widget_instance['query_data'] = 'current_context'; } //get global $wp_query //override sidebar params from awc feature assign to widget if (isset($sidebar_params) && isset($sidebar)) { $sidebar_params = HW_AWC::format_sidebar_params($sidebar, $sidebar_params, $widget_instance); } } /** * display related content */ if (!isset($widget_instance)) { extract($sidebar_params); } //extract sidebar param if not use HWTPL config if (isset($before_widget)) { echo $before_widget; } //widget title if (isset($before_title)) { echo $before_title; } echo apply_filters('hw_related_posts_title', $hwrp->title); if (isset($after_title)) { echo $after_title; } //do action before do_action('hoangweb_before_loop'); do_action('hw_yarpp_results_before', $hwrp); if (isset($widget_instance)) { /** * output widget, when using the_widget to show widget content, * note that you set up & enable sidebar skin at /admin.php?page=hw_sidebar_widgets_settings this mean sidebar apply to yarpp it work for that skin * And no related to active sidebar that using on website, which call by function 'dynamic_sidebar' /hw_dynamic_sidebar */ the_widget('HW_Taxonomy_Post_List_widget', $widget_instance, $sidebar_params); } else { if (isset($args['args']['template'])) { include $args['args']['template']; } } //do action after do_action('hw_yarpp_results_after', $hwrp); do_action('hoangweb_after_loop'); if (isset($after_widget)) { echo $after_widget; } return false; //disable behavior as default $yarpp->display_related do }
/** * main loop */ public static function hw_theme_get_main() { //init //hw_taxonomy_post_list_widget widget setting $setting = array(); //default sidebar params $sidebar_params = array('before_widget' => '<div id="%1$s" class="hw-widget %2$s *1" >', 'after_widget' => '</div>', 'before_title' => '<h3 class="widget-title %1$s {css_title}">', 'after_title' => '</h3>'); //override loop template base context $loop_temp = HW__Template::get_current_context_loop_template(); global $wp_registered_sidebars; global $wp_registered_widgets; if (!empty($loop_temp)) { //$widg = AWC_WidgetFeature_saveconfig::get_widget_setting($loop_temp['widget_config']); $setting = AWC_WidgetFeature_saveconfig::get_widget_setting_instance($loop_temp['widget_config'], array('widget' => 'hw_taxonomy_post_list_widget', 'group' => 'main_loop')); //valid data if (!isset($setting['query_data'])) { $setting['query_data'] = 'current_context'; } //get global $wp_query //$setting['widget_title'] = 'sdfgdg'; //set widget title by skin //get sidebar box if ($loop_temp['sidebar'] && isset($wp_registered_sidebars[$loop_temp['sidebar']])) { $sidebar = $loop_temp['sidebar']; //sidebar id $sidebar_params = $wp_registered_sidebars[$sidebar]; if (isset($loop_temp['sidebar_widget_skin'])) { $sidebar_widget_skin = $loop_temp['sidebar_widget_skin']; //get change default sidebar skin, here we create 4 holder: sidebar_default, skin1,skin2,skin3 $skin_data = HW_AWC_Sidebar_Settings::get_sidebar_setting($sidebar_widget_skin, $sidebar); HW_SKIN::apply_skin_data($skin_data, 'HW__Template::_hw_skin_resume_skin_data', array('sidebar' => $sidebar, 'sidebar_widget_skin' => $sidebar_widget_skin, 'sidebar_params' => &$sidebar_params)); } } list($widget_id, $t) = each($wp_registered_widgets); //get first widget as demo $sidebar_params = HW_AWC::format_widget_sidebar_params($widget_id, $sidebar_params, array('classname' => 'main-content hw-awc-override', 'widget_id' => 'hw-main-loop-content')); //override sidebar params from awc feature assign to widget if (isset($sidebar_params) && isset($sidebar)) { $sidebar_params = HW_AWC::format_sidebar_params($sidebar, $sidebar_params, $setting); } //important: since any sidebar skin use wrapper class 'hw-awc-override' //$sidebar_params['before_widget'] = sprintf($sidebar_params['before_widget'], /*$widget_id, $classname*/'hw-main-loop-content','main-content hw-awc-override'); do_action('hw_before_loop'); /** * output widget, when using the_widget to show widget content, * * note that you set up & enable sidebar skin at /admin.php?page=hw_sidebar_widgets_settings this mean sidebar apply to yarpp it work for that skin * And no related to active sidebar that using on website, which call by function 'dynamic_sidebar' /hw_dynamic_sidebar */ if (class_exists('HW_Taxonomy_Post_List_widget')) { the_widget('HW_Taxonomy_Post_List_widget', $setting, $sidebar_params); } do_action('hw_after_loop'); } elseif (APF_Page_Templates::get_instance()->hw_loop_template()) { //do nothing } else { $context = HW__Template::get_current_template_file(); //determine current template $current = self::get_current_template(); if ($current && method_exists($current, 'Main')) { $current->Main(); //display main content of current template } //filter default template do_action('hw_theme_get_main_default', $context); } }
/** * valid sidebar name */ public function _hw_awc_init() { HW_AWC::getInstance(); //initial HW_AWC object global $wp_registered_sidebars; //auto fix invalid sidebar name foreach ($wp_registered_sidebars as $name => $param) { $new_sidebar = $name; //save sidebar id /** * valid sidebar */ $wp_registered_sidebars[$name]['name'] .= '(ID:' . $param['id'] . ')'; if (!HW_AWC_Sidebar_Settings::check_valid_sidebar_name($name)) { $wp_registered_sidebars[$name]['old_id'] = $wp_registered_sidebars[$name]['id']; //save old sidebar id $wp_registered_sidebars[$name]['description'] = "Thông báo: Bạn không thể sử dùng Sidebar này do bị lỗi ID quy định bởi hoangweb. Tên sidebar không chứa ký tự đặc biệt và hơn một -, được thay bằng ký tự _"; } if (HW_AWC_Sidebar_Settings::get_sidebar_setting('autofix_sidebar_name', $name) && !HW_AWC_Sidebar_Settings::check_valid_sidebar_name($name)) { $new_sidebar = HW_AWC_Sidebar_Settings::valid_sidebar_name($name); //register new sidebar directly instead of using function register_sidebar $wp_registered_sidebars[$new_sidebar] = $param; //new sidebar name $wp_registered_sidebars[$new_sidebar]['id'] = $new_sidebar; //assign new sidebar id $wp_registered_sidebars[$new_sidebar]['old_id'] = $param['id']; //or $name $wp_registered_sidebars[$new_sidebar]['name'] .= '(đã sửa)'; $wp_registered_sidebars[$new_sidebar]['description'] .= PHP_EOL . "\n'id sidebar này tạo bởi hàm register_sidebar không hợp lệ, do vậy sidebar này có tên ID mới là: ({$new_sidebar})'"; //unset($wp_registered_sidebars[$name]); //don't remove invalid sidebar because wp theme will still use it } /** * apply skin for all widgets in the sidebar */ if (HW_AWC_Sidebar_Settings::get_sidebar_setting('enable_override_sidebar', $name)) { //because still save settings for old sidebar name $skin_data = HW_AWC_Sidebar_Settings::get_sidebar_setting('skin_default', $name); if (isset($skin_data['hash_skin'])) { $hash_skin = $skin_data['hash_skin']; } if (isset($skin_data['hwskin_config'])) { $skin_config = $skin_data['hwskin_config']; } if (isset($skin_config) && $skin_config && isset($hash_skin) && class_exists('HW_SKIN')) { $skin = HW_SKIN::resume_skin($skin_config); //resume HW_SKIN with given config if ($skin) { $file = $skin->get_skin_file($hash_skin); } if (isset($file) && file_exists($file)) { $theme = array(); //valid $css_str = ''; //get colors from parent $color_title = HW_AWC_Sidebar_Settings::get_sidebar_setting('bgcolor_title', $name); $color_box = HW_AWC_Sidebar_Settings::get_sidebar_setting('bgcolor_box', $name); $img_title = HW_AWC_Sidebar_Settings::get_sidebar_setting('bgimg_title', $name); $img_box = HW_AWC_Sidebar_Settings::get_sidebar_setting('bgimg_box', $name); $hwawc = HW_AWC::getInstance(); include_once $file; $wp_registered_sidebars[$new_sidebar]['skin'] = $skin; //reference skin object //override sidebar param if (isset($theme['params']) && is_array($theme['params'])) { $wp_registered_sidebars[$new_sidebar] = array_merge($wp_registered_sidebars[$new_sidebar], $theme['params']); } //enqueue css & js -> depricated /*if(!isset($theme['styles'])) $theme['styles'] = array(); if(!isset($theme['scripts'])) $theme['scripts'] = array(); if(count($theme['styles']) || count($theme['scripts'])) { $skin->enqueue_files_from_skin($theme['styles'], $theme['scripts']); }*/ //add inline content to footer if (isset($theme['css_title_selector'])) { if ($color_title) { $css_str .= $theme['css_title_selector'] . '{background-color:' . $color_title . ' !important;}'; } if ($img_title) { $css_str .= $theme['css_title_selector'] . '{background-image:url(' . $img_title . ') !important;}'; } } if (isset($theme['css_content_selector'])) { if ($color_box) { $css_str .= $theme['css_content_selector'] . '{background-color:' . $color_box . ' !important;}'; } if ($img_box) { $css_str .= $theme['css_content_selector'] . '{background-image:url(' . $img_box . ') !important;}'; } } $hwawc->add_inlineCSS($css_str, $hash_skin); } } } } }
/** * manage widgets setting */ //include_once ('includes/widget-features/autoload.php'); include_once 'includes/widget-features/widget-features.php'; /** * sidebar widgets settings */ include_once 'includes/hw-sidebar-widgets-settings.php'; /** * load sidebar params */ include_once 'includes/awc-sidebar-settings.php'; /** * dynamic sidebars */ include_once 'includes/awc-dynamic-sidebars.php'; /** * frontend */ include_once 'includes/hw-awc-frontend.php'; /*include_once('APF_Widget.php'); new APF_Widget( __( 'Admin Page Framework', 'admin-page-framework-demo' ) ); // the widget title */ /** * enable HTML in widget title: */ remove_filter('widget_title', 'esc_html'); //if(is_admin()) HW_AWC::getInstance();
/** * @hook hw_sidebars_widgets * @param $sidebars */ public static function _sidebars_widgets($sidebars) { if (is_admin()) { return $sidebars; } global $wp_registered_widgets; foreach ($sidebars as $s => $sidebar) { if ($s == 'wp_inactive_widgets' || strpos($s, 'orphaned_widgets') === 0 || empty($sidebar)) { continue; } foreach ($sidebar as $w => $widget) { // $widget is the id of the widget if (!isset($wp_registered_widgets[$widget])) { continue; } if (isset(self::$checked[$widget])) { $show = self::$checked[$widget]; } else { $widget_info = HW_AWC::get_widget_data($widget); $opts = $wp_registered_widgets[$widget]; $widget_obj = isset($widget_info['widget']) ? $widget_info['widget'] : null; $id_base = isset($widget_info['id_base']) ? $widget_info['id_base'] : ''; #$id_base = is_array( $opts['callback'] ) ? $opts['callback'][0]->id_base : $opts['callback']; if (!$id_base) { continue; } $feature = HW_AWC::get_widget_feature($widget, self::_static_option('feature_name')); # if (!$feature || HW_AWC_WidgetFeatures::check_widget_feature($widget, self::_static_option('feature_name') && !$feature->is_active())) { continue; } #$instance = get_option( 'widget_' . $id_base ); $instance = $widget_info['instance']; if (!$instance || !is_array($instance)) { continue; } //from 'display widgets' plugin if (isset($instance['_multiwidget']) && $instance['_multiwidget']) { $number = $opts['params'][0]['number']; if (!isset($instance[$number])) { continue; } $instance = $instance[$number]; unset($number); } unset($opts); $show = self::show_widget($feature, $instance); self::$checked[$widget] = $show ? true : false; } if (!$show) { unset($sidebars[$s][$w]); #$this->hide_list[] = "['$s'][$w]"; } unset($widget); } unset($sidebar); } return $sidebars; }