Файл шаблона не наследуется от моего шаблона блока расширения основного блока Mage?


Я создал модуль, в котором я могу добавлять изображения в администраторе, а затем они будут отображаться в интерфейсе в виде слайдера баннера.

Все мои административные функции работают нормально, Они добавляют изображения и т. Д. и т. Д., Поэтому я создал блок (/app/code/local/Nublue/Slidemanager/Block/bannerslider.php), который состоит из следующего:

public function CreateSliderHtml()
{
    $html = '';
    $slideimage = Mage::getModel('nublue_slidemanager/slideimage');
    foreach ($slideimage as $slide) {
        $image = $slide->getImage();
        if ($slide->getUrl() != null || '') {
            $url = $slide->getUrl();
        }
    $html .= '<li><img src="'$image'" href="' if (isset($url)){'$url"'} 'width="600" height="400" alt=""></li>'
    }
    return $html;
}

}

И мой класс называется "nublue_slidemanager_block_bannerslider", и он расширяет 'Табличка Mage_Core_Block_Template'

В моем файле шаблона

(приложение/дизайн/интерфейс/база/по умолчанию/шаблон/nublue_slidemanager/bannerslider.phtml)

У меня есть это:

            <!-- Carousel -->
            <div class="jcarousel">
                <ul>
                    <?php echo $this->CreateSliderHtml(); ?>
                </ul>
            </div>

Но эхо $this->createsliderhtml();выдает ошибку

Недопустимый метод Mage_Core_Block_Template::createsliderhtml(Массив ( ) )

И я знаю, что файл шаблона вызывается, потому что, если я удалю php-код из шаблона и жестко закодирую некоторые изображения, они появятся.

Является есть XML-файл, который мне нужно где-то отредактировать? Я думал, что пока я определяю, где я получаю блоки, помощников и прочее, это будет работать. Поэтому, чтобы уточнить, у меня есть Nublue_Slidemanager.xml и config.xml в их правильных папках

Author: Fabian Schmengler, 2016-01-12

1 answers

  1. Имя класса должно быть Nublue_Slidemanager_Block_Bannerslider с заглавной буквы B (также измените имя файла)
  2. Ваш config.xml необходимо определить префикс псевдонима класса для ваших блоков, например:

    <global>
        <blocks>
            <slidemanager>
                <class>Nublue_Slidemanager</class>
            </slidemanager>
        </blocks>
    </global>
    
  3. Где бы вы ни интегрировали блок (CMS или XML макета), вам необходимо указать тип (т.е. псевдоним класса):

    • CMS:

      {{block type="slidemanager/bannerslider" template="Nublue_Slidemanager/bannerslider.phtml"}}
      
    • XML-формат макета:

      <block name="bannerslider" type="slidemanager/bannerslider" template="Nublue_Slidemanager/bannerslider.phtml" />
      
 2
Author: Fabian Schmengler, 2016-01-20 12:03:51