/** * @param Category $category * @return Metadata */ public function createDataFromModel(Category $category) { $builder = $this->builder->populateWithArray($category->getData())->setCategoryId($category->getId())->setActive($category->getIsActive())->setChildren($category->getAllChildren(true)); return $builder->create(); }
/** * {@inheritdoc} */ public function getIsActive() { $pluginInfo = $this->pluginList->getNext($this->subjectType, 'getIsActive'); if (!$pluginInfo) { return parent::getIsActive(); } else { return $this->___callPlugins('getIsActive', func_get_args(), $pluginInfo); } }
/** * Enter description here... * * @param Category $category * @return string */ public function drawOpenCategoryItem($category) { $html = ''; if (!$category->getIsActive()) { return $html; } $html .= '<li'; if ($this->isCategoryActive($category)) { $html .= ' class="active"'; } $html .= '>' . "\n"; $html .= '<a href="' . $this->getCategoryUrl($category) . '">' . '<span>' . $this->escapeHtml($category->getName()) . '</span></a>' . "\n"; if (in_array($category->getId(), $this->getCurrentCategoryPath())) { $children = $category->getChildren(); $hasChildren = $children && $children->count(); if ($hasChildren) { $htmlChildren = ''; foreach ($children as $child) { $htmlChildren .= $this->drawOpenCategoryItem($child); } if (!empty($htmlChildren)) { $html .= '<ul>' . "\n" . $htmlChildren . '</ul>'; } } } $html .= '</li>' . "\n"; return $html; }
/** * Validate category for be using as filter * * @param \Magento\Catalog\Model\Category $category * @return mixed */ protected function _isValidCategory($category) { if ($category->getId()) { while ($category->getLevel() != 0) { if (!$category->getIsActive()) { return false; } $category = $category->getParentCategory(); } return true; } return false; }