Расширение функционала CMS

Продолжение. Начало смотри в статье «Внедрение своего дизайна на сайт».

Теперь нам нужно не просто отобразить текст на главной под блоком hero unit, а сделать так, чтобы мы могли в админке редактировать как текст под блоком, так и в самом блоке hero unit.

Для этого нам придётся подправить функционал админки.

А именно, нам нужно выцепить из текстового поля, отображаемого на главной, заголовок и первый абзац и вывести их в блоке hero unit.

Внесём модификации в контроллер Ideal/Structure/Home/Site/Controller, отвечающий за отображение главной страницы. Для этого его класс нужно скопировать из папки Ideal в папку Ideal.c.

Копируем файл:
super/Ideal/Structure/Home/Site/Controller.php
в
super/Ideal.c/Structure/Home/Site/Controller.php

Обратите внимание, что копировать нужно файл без суффикса Abstract (в файле с этим суффиксом как раз и реализован функционал, который мы будем переопределять).

Содержимое файла предельно лаконично:

<?php
namespace Ideal/Structure/Home/Site;
class Controller extends ControllerAbstract
{
}

То есть, класс контроллера просто наследуется от абстрактного класса. Это позволяет нам не переписывать у себя код заменяемого файла Ideal/Structure/Home/Site/Controller.php, а переопределить только нужные методы.

В тело класса добавляем метод indexAction():

<?php
namespace Ideal/Structure/Home/Site;
class Controller extends ControllerAbstract
{
    public function indexAction()
    {
        $this->templateInit();

        $templatesVars = $this->model->getTemplatesVars();

        $content = $templatesVars['template']['content'];
        $pos = strpos($content, '</p>');

        $this->view->header = substr($content, 0, $pos);
        $this->view->content = substr($content, $pos + 4);
    }
}

Теперь заменим текст в шаблоне на переменные.

К списку сообщений

comments powered by Disqus