2015-10-30 3 views
2

На моей начальной странице я хочу добавить новый блок. Поэтому я добавил его в CMS, какmagento - изготовленный на заказ блок не признан

<div>{{block type="productview/productview" name="productview_productview" template="productview/productview.phtml"}}</div> 

Должно быть сообщение об ошибке в определенном блочном коде. потому что если я изменю тип от productview/productview до core/template. шаблон будет вызван.

Это мой конфигурационный файл плагина (в [magento]/app/code/local/AAA/Productview/etc/config.xml)

<?xml version="1.0"?> 
<config> 
    <modules> 
    <AAA_Productview> 
     <version>1.0</version> 
    </AAA_Productview> 
    </modules> 
    <global> 
    <blocks> 
     <productview> 
     <class>AAA_Productview_Block</class> 
     </productview> 
    </blocks> 
    </global> 
</config> 

Это блок (в [magento]/app/code/local/AAA/Productview/Block/Productview.php)

<?php 
class AAA_Productview_Block_Productview extends Mage_Core_Block_Template { 
    public function getRecentProducts() { 
    Mage::log('test'); 
    $arr_products = array(); 
    $products = Mage::getModel("catalog/product") 
       -­>getCollection() 
       ­->addAttributeToSelect('*') 
       ­->setOrder('entity_id', 'DESC') 
       ­->setPageSize(5); 

    foreach ($products as $product) { 
     $arr_products[] = array(
     'id' => $product-­>getId(), 
     'name' => $product­->getName(), 
     'url' => $product­->getProductUrl(), 
    ); 
    } 

    return $arr_products; 
    } 
} 

EDIT1:

вот мой файл шаблона:

<?php 
$products = $this­->getRecentProducts(); 
?> 

<div id="product_list"> 
    <h1>Recent Products</h1> 
    <?php if (is_array($products) && count($products)) { ?> 
    <?php foreach($products as $product) { ?> 
     <div> 
     <a href="<?php echo $product['url'] ?>"><?php echo $product['name'] ?></a> 
     </div> 
    <?php } ?> 
    <?php } ?> 
</div> 

Любая идея, что я делаю неправильно?

ответ

0

ваш config.xml штраф. Вы должны сделать ниже код в блоке файла - /app/code/local/AAA/Productview/Block/Productview.php

public function getRecentProducts() { 
      $products = Mage::getModel("catalog/product") 
        -­>getCollection() 
        ­->addAttributeToSelect('*') 
        ­->setOrder('entity_id', 'DESC') 
        ­->setPageSize(5); 
      return $products; 

      } 

, чем вызов функции блока $ this-> getRecentProducts(); в productview/productview.phtml

и удалите файл модели. Thanks

+0

Я удалил файл модели и добавил его в файл блока. но функция никогда не вызывается. – Safari

+0

вы должны добавить код ниже в блоке файла: getCollection() -> addAttributeToSelect ('*') -> SetOrder ('ENTITY_ID', 'DESC') -> setPageSize (5); return $ products; } } Надеюсь, этот код вам поможет. Спасибо –

+0

Я добавил этот код, но я получаю 'Undefined variable: this' в файле шаблона – Safari

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