/** * @param array $args * @param array $instance */ function widget($args, $instance) { if (empty($instance['template'])) { return; } if (is_admin()) { return; } $template = $instance['template']; $query_args = $instance; unset($query_args['template']); unset($query_args['additional']); unset($query_args['sticky']); unset($query_args['title']); $query_args = wp_parse_args($instance['additional'], $query_args); global $wp_query; $query_args['paged'] = $wp_query->get('paged'); switch ($instance['sticky']) { case 'ignore': $query_args['ignore_sticky_posts'] = 1; break; case 'only': $query_args['post__in'] = get_option('sticky_posts'); break; case 'exclude': $query_args['post__not_in'] = get_option('sticky_posts'); break; } global $post; if (!empty($post) && !siteorigin_panels_lite_is_home()) { // Exclude the current post to prevent possible infinite loop if (!empty($query_args['post__not_in'])) { $query_args['post__not_in'][] = $post->ID; } else { $query_args['post__not_in'] = array($post->ID); } } // Create the query query_posts($query_args); echo $args['before_widget']; $instance['title'] = apply_filters('widget_title', $instance['title'], $instance, $this->id_base); if (!empty($instance['title'])) { echo $args['before_title'] . $instance['title'] . $args['after_title']; } if (strpos('/' . $instance['template'], '/content') !== false) { while (have_posts()) { the_post(); locate_template($instance['template'], true, false); } } else { locate_template($instance['template'], true, false); } echo $args['after_widget']; // Reset everything wp_reset_query(); wp_reset_postdata(); }
/** * Echo the CSS for the current panel * * @action wp_print_styles */ function siteorigin_panels_lite_css() { if (!siteorigin_panels_lite_is_home()) { return; } $layouts = apply_filters('siteorigin_panels_prebuilt_layouts', array()); if (empty($layouts[siteorigin_panels_lite_setting('home-page-default')])) { return; } $panels_data = $layouts[siteorigin_panels_lite_setting('home-page-default')]; $panels_data = apply_filters('siteorigin_panels_data', $panels_data, 'home'); // Exit if we don't have panels data if (empty($panels_data)) { return; } $settings = siteorigin_panels_lite_setting(); $panels_mobile_width = $settings['mobile-width']; $panels_margin_bottom = $settings['margin-bottom']; $css = array(); $css[1920] = array(); $css[$panels_mobile_width] = array(); // This is a mobile resolution // Add the grid sizing $ci = 0; foreach ($panels_data['grids'] as $gi => $grid) { $cell_count = intval($grid['cells']); for ($i = 0; $i < $cell_count; $i++) { $cell = $panels_data['grid_cells'][$ci++]; if ($cell_count > 1) { $css_new = 'width:' . round($cell['weight'] * 100, 3) . '%'; if (empty($css[1920][$css_new])) { $css[1920][$css_new] = array(); } $css[1920][$css_new][] = '#pgc-home-' . $gi . '-' . $i; } } // Add the bottom margin to any grids that aren't the last if ($gi != count($panels_data['grids']) - 1) { $css[1920]['margin-bottom: ' . $panels_margin_bottom . 'px'][] = '#pg-home-' . $gi; } if ($cell_count > 1) { if (empty($css[1920]['float:left'])) { $css[1920]['float:left'] = array(); } $css[1920]['float:left'][] = '#pg-home-' . $gi . ' .panel-grid-cell'; } if ($settings['responsive']) { // Mobile Responsive $mobile_css = array('float:none', 'width:auto'); foreach ($mobile_css as $c) { if (empty($css[$panels_mobile_width][$c])) { $css[$panels_mobile_width][$c] = array(); } $css[$panels_mobile_width][$c][] = '#pg-home-' . $gi . ' .panel-grid-cell'; } for ($i = 0; $i < $cell_count; $i++) { if ($i != $cell_count - 1) { $css_new = 'margin-bottom:' . $panels_margin_bottom . 'px'; if (empty($css[$panels_mobile_width][$css_new])) { $css[$panels_mobile_width][$css_new] = array(); } $css[$panels_mobile_width][$css_new][] = '#pgc-home-' . $gi . '-' . $i; } } } } if ($settings['responsive']) { // Add CSS to prevent overflow on mobile resolution. $panel_grid_css = 'margin-left: 0 !important; margin-right: 0 !important;'; $panel_grid_cell_css = 'padding: 0 !important;'; if (empty($css[$panels_mobile_width][$panel_grid_css])) { $css[$panels_mobile_width][$panel_grid_css] = array(); } if (empty($css[$panels_mobile_width][$panel_grid_cell_css])) { $css[$panels_mobile_width][$panel_grid_cell_css] = array(); } $css[$panels_mobile_width][$panel_grid_css][] = '.panel-grid'; $css[$panels_mobile_width][$panel_grid_cell_css][] = '.panel-grid-cell'; } // Add the bottom margin $bottom_margin = 'margin-bottom: ' . $panels_margin_bottom . 'px'; $bottom_margin_last = 'margin-bottom: 0 !important'; if (empty($css[1920][$bottom_margin])) { $css[1920][$bottom_margin] = array(); } if (empty($css[1920][$bottom_margin_last])) { $css[1920][$bottom_margin_last] = array(); } $css[1920][$bottom_margin][] = '.panel-grid-cell .panel'; $css[1920][$bottom_margin_last][] = '.panel-grid-cell .panel:last-child'; // This is for the side margins $magin_half = $settings['margin-sides'] / 2; $side_margins = "margin: 0 -{$magin_half}px 0 -{$magin_half}px"; $side_paddings = "padding: 0 {$magin_half}px 0 {$magin_half}px"; if (empty($css[1920][$side_margins])) { $css[1920][$side_margins] = array(); } if (empty($css[1920][$side_paddings])) { $css[1920][$side_paddings] = array(); } $css[1920][$side_margins][] = '.panel-grid'; $css[1920][$side_paddings][] = '.panel-grid-cell'; /** * Filter the unprocessed CSS array */ $css = apply_filters('siteorigin_panels_css', $css); // Build the CSS $css_text = ''; krsort($css); foreach ($css as $res => $def) { if (empty($def)) { continue; } if ($res < 1920) { $css_text .= '@media (max-width:' . $res . 'px)'; $css_text .= ' { '; } foreach ($def as $property => $selector) { $selector = array_unique($selector); $css_text .= implode(' , ', $selector) . ' { ' . $property . ' } '; } if ($res < 1920) { $css_text .= ' } '; } } echo '<style type="text/css">'; echo $css_text; echo '</style>'; }
/** * */ function siteorigin_panels_lite_css() { if (!siteorigin_panels_lite_is_home()) { return; } $layouts = apply_filters('siteorigin_panels_prebuilt_layouts', array()); if (empty($layouts[siteorigin_panels_lite_setting('home-page-default')])) { return; } $panels_data = $layouts[siteorigin_panels_lite_setting('home-page-default')]; $panels_data = apply_filters('siteorigin_panels_data', $panels_data, 'home'); ?> <style type="text/css"><?php echo siteorigin_panels_lite_generate_css('home', $panels_data); ?> </style><?php }