2013-09-26 2 views
0

В настоящее время я использую следующий код для создания переменных тегов для использования в Magento CMS для печати из различных частей динамических данных для продукта:как получить название категории на основе категории ID Magento

<?php 

    $_product = Mage::getModel('catalog/product')->loadByAttribute('sku', $this->getData('sku')); 

    $_categories = Mage::getModel('catalog/category')->loadByAtribute('id', $this->getData('id')); 

    switch($this->getData('valuetype')){  
     case "retail": 
      echo number_format($_product->getPrice(), 2, '.', ','); 
      break; 
     default: 
     case "final": 
      echo number_format($_product->getFinalPrice(), 2, '.', ','); 
      break; 
     case "diffDollar": 
      $difference = $_product->getPrice() - $_product->getFinalPrice(); 
      echo number_format($difference, 2, '.', ','); 
      break; 
     case "diffPercent": 
      $difference = (1 - ($_product->getFinalPrice()/$_product->getPrice())) * 100; 
      echo number_format($difference, 0, '.', ','); 
      break; 
     case "prodName": 
      echo ($_product->getName()); 
      break; 
     case "urlPath": 
      $prodName = ($_product->getName()); 
      $prodName = strtolower($prodName); 
      $path = explode(" ", $prodName); 
      $path = implode("-", $path); 
      echo $path; 
      break; 
     case "catName": 
      $catName = ($_categories->getName()); 
      echo $catName; 
      break; 
    } 
?> 

Внутри CMS я хотел бы использовать следующие принести в данных за $ _categories:

{{block type="catalog/category" id="176" template="catalog/product/cmsprice.phtml" valuetype="catName"}} 

за $ _product Я хотел бы использовать:

{{block type="catalog/products" sku="1000145" template="catalog/product/cmsprice.phtml" valuetype="retail"}} 

Использование $ _product отлично работает, но когда я пытаюсь использовать $ _categories для печати названия категории, страница из CMS не отображается на главной странице, а остальная часть страницы появляется, и на ней не отображаются ошибки.

Я чувствую, что я близок к этому, но не вижу, что мне не хватает. Любая помощь будет принята с благодарностью

ответ

1

Ваша модель выборки на старте выглядит немного выключения:

$_product = Mage::getModel('catalog/product')->loadByAttribute('sku', $this->getData('sku')); 

$_categories = Mage::getModel('catalog/category')->loadByAtribute('id', $this->getData('id')); 

Это выглядит, как вы пытаетесь загрузить модель категории с помощью идентификатора продукта? Вам нужен идентификатор категории, чтобы загрузить экземпляр категории.

Кроме того, неуверенный, если вы беспокоитесь об этом, но как вы справляетесь с продуктами в нескольких категориях?

Если у вас уже есть экземпляр продукта, для которого вы хотите, чтобы найти все имена категорий, это в, это то, что я столкнулся с:

$categories = $_product->getCategoryCollection() 
         ->addAttributeToSelect('name') 
         ->addAttributeToFilter('is_active', array('eq' => 1)); 
$value = array(); 
foreach($categories as $category) { 
    $value[] = $category->getName(); 
} 
+0

первой ошибки, я понял, что я неправильно атрибут. Во-вторых, вы правы, я думаю, что я должен использовать category_id. После исправления этих проблем возникает следующая ошибка: Fatal error: вызов функции-члена getBackend() для не-объекта в C: \ xampp \ htdocs \ tbm \ app \ code \ core \ Mage \ Eav \ Model \ Entity \ Abstract.php в строке 816. В этой строке он имеет публичную функцию isAttributeStatic и выдает бомбы. Есть идеи? – max7

+1

другое: я не могу использовать экземпляр продукта модели для этого. Мне нужно как-то перейти в конкретную категорию_ид, чтобы получить название категории. – max7

Смежные вопросы