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());
 }
Example #2
0
 /**
  * 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;
 }
Example #4
0
 /**
  * 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);
     }
 }