public function testGetUrl() { $this->assertStringEndsWith('catalog/category/view/', $this->_model->getUrl()); $this->_model->setUrl('test_url'); $this->assertEquals('test_url', $this->_model->getUrl()); $this->_model->setUrl(null); $this->_model->setRequestPath('test_path'); $this->assertStringEndsWith('test_path', $this->_model->getUrl()); $this->_model->setUrl(null); $this->_model->setRequestPath(null); $this->_model->setId(1000); $this->assertStringEndsWith('catalog/category/view/id/1000/', $this->_model->getUrl()); }
/** * Retrieve category url * * @param ModelCategory $category * @return string */ public function getCategoryUrl($category) { if ($category instanceof ModelCategory) { return $category->getUrl(); } return $this->_categoryFactory->create()->setData($category->getData())->getUrl(); }
public function getObject(Category $category) { /** @var $productCollection Mage_Catalog_Model_Resource_Product_Collection */ $productCollection = $category->getProductCollection(); $productCollection = $productCollection->addMinimalPrice(); $category->setProductCount($productCollection->getSize()); $transport = new DataObject(); $this->eventManager->dispatch('algolia_category_index_before', ['category' => $category, 'custom_data' => $transport]); $customData = $transport->getData(); $storeId = $category->getStoreId(); $category->getUrlInstance()->setStore($storeId); $path = ''; foreach ($category->getPathIds() as $categoryId) { if ($path != '') { $path .= ' / '; } $path .= $this->getCategoryName($categoryId, $storeId); } $image_url = null; try { $image_url = $category->getImageUrl(); } catch (\Exception $e) { /* no image, no default: not fatal */ } $data = ['objectID' => $category->getId(), 'name' => $category->getName(), 'path' => $path, 'level' => $category->getLevel(), 'url' => $category->getUrl(), 'include_in_menu' => $category->getIncludeInMenu(), '_tags' => ['category'], 'popularity' => 1, 'product_count' => $category->getProductCount()]; if (!empty($image_url)) { $data['image_url'] = $image_url; } foreach ($this->config->getCategoryAdditionalAttributes($storeId) as $attribute) { $value = $category->getData($attribute['attribute']); $attribute_resource = $category->getResource()->getAttribute($attribute['attribute']); if ($attribute_resource) { $value = $attribute_resource->getFrontend()->getValue($category); } if (isset($data[$attribute['attribute']])) { $value = $data[$attribute['attribute']]; } if ($value) { $data[$attribute['attribute']] = $value; } } $data = array_merge($data, $customData); foreach ($data as &$data0) { $data0 = $this->try_cast($data0); } return $data; }
/** * Retrieve category Url from the document source. * Done from the document source to prevent having to use addUrlRewrite to result on category collection. * * @param \Magento\Catalog\Model\Category $category The category. * * @return string */ private function getCategoryUrl($category) { $documentSource = $category->getDocumentSource(); if ($documentSource && isset($documentSource['url_path'])) { $urlPath = is_array($documentSource['url_path']) ? current($documentSource['url_path']) : $documentSource['url_path']; $url = trim($this->urlBuilder->getUrl($urlPath), '/') . $this->categoryUrlSuffix; return $url; } return $category->getUrl(); }
/** * Get url for category data * * @param Category $category * @return string */ public function getCategoryUrl($category) { if ($category instanceof Category) { $url = $category->getUrl(); } else { $url = $this->_categoryInstance->setData($category->getData())->getUrl(); } return $url; }
/** * {@inheritdoc} */ public function getUrl() { $pluginInfo = $this->pluginList->getNext($this->subjectType, 'getUrl'); if (!$pluginInfo) { return parent::getUrl(); } else { return $this->___callPlugins('getUrl', func_get_args(), $pluginInfo); } }