/** * Displays the widget in the sidebar. * * @param array $args Sidebar arguments. * @param array $instance The instance. * * @return bool|void */ public function widget($args, $instance) { if (!Pages::isProductList()) { return; } // Set the widget title $title = apply_filters('widget_title', $instance['title'] ? $instance['title'] : __('Filter by Price', 'jigoshop'), $instance, $this->id_base); $fields = apply_filters('jigoshop\\get_fields', array()); Render::output('widget/price_filter/widget', array_merge($args, array('title' => $title, 'max' => $this->max, 'fields' => $fields))); }
public function getPage(Container $container) { if (!Pages::isJigoshop() && !Pages::isAjax()) { return $container->get('jigoshop.page.dummy'); } $this->wp->doAction('jigoshop\\page_resolver\\before'); if (Pages::isCheckoutThankYou()) { return $container->get('jigoshop.page.checkout.thank_you'); } if (Pages::isCheckoutPay()) { return $container->get('jigoshop.page.checkout.pay'); } if (Pages::isCheckout()) { return $container->get('jigoshop.page.checkout'); } if (Pages::isCart()) { return $container->get('jigoshop.page.cart'); } if (Pages::isProductCategory()) { return $container->get('jigoshop.page.product_category_list'); } if (Pages::isProductTag()) { return $container->get('jigoshop.page.product_tag_list'); } if (Pages::isProductList()) { return $container->get('jigoshop.page.product_list'); } if (Pages::isProduct()) { return $container->get('jigoshop.page.product'); } if (Pages::isAccountOrders()) { return $container->get('jigoshop.page.account.orders'); } if (Pages::isAccountEditAddress()) { return $container->get('jigoshop.page.account.edit_address'); } if (Pages::isAccountChangePassword()) { return $container->get('jigoshop.page.account.change_password'); } if (Pages::isAccount()) { return $container->get('jigoshop.page.account'); } }
/** * Displays the widget in the sidebar. * * @param array $args Sidebar arguments. * @param array $instance The instance. */ public function widget($args, $instance) { // Hide widget if not product related if (!Pages::isProductList()) { return; } // Set the widget title $title = apply_filters('widget_title', $instance['title'] ? $instance['title'] : __('Filter by Attributes', 'jigoshop'), $instance, $this->id_base); $attribute = self::$productService->getAttribute($instance['attribute']); if ($attribute && $attribute->hasOptions()) { $selected = self::$parameters[$attribute->getId()]; $productsPerOption = array(); $products = array_filter($this->products, function ($product) use($attribute, $selected, &$productsPerOption) { /** @var $product Product */ if (!$product->hasAttribute($attribute->getId())) { return false; } $value = $product->getAttribute($attribute->getId())->getValue(); if (is_array($value)) { foreach ($value as $subValue) { if (!isset($productsPerOption[$subValue])) { $productsPerOption[$subValue] = 0; } $productsPerOption[$subValue]++; } return (bool) array_intersect($value, $selected); } else { if (!isset($productsPerOption[$value])) { $productsPerOption[$value] = 0; } $productsPerOption[$value]++; return in_array($value, $selected); } }); if (empty($selected) || !empty($products)) { $fields = apply_filters('jigoshop_get_hidden_fields', array()); Render::output('widget/layered_nav/widget', array('title' => $title, 'attribute' => $attribute, 'selected' => $selected, 'productsPerOption' => $productsPerOption, 'baseUrl' => remove_query_arg('filter_' . $attribute->getSlug()), 'fields' => $fields)); } } }