PHPShopCore

Материал из PHPShop CMS

Перейти к: навигация, поиск

PHPShopCore - это основное ядро системы, включающая в себя все функции по обработке информации из БД, генерацию времени изменения страницы, титлы, хлебные крошки, парсинг шаблонов и другие функции.

В принципе, для работы сайта кроме ядра и дополнительных вспомогательных библиотек ничего не требуется. Ядро содержит ряд готовых методом, наследуя и изменяя которые, можно добиться реализации всех задач системы управления сайта.

Класс ядра предварительно загружен в индекс. Файлы, использующие логику ядра и отвечающие за ЧПУ лежат в папке /phpshop/core/адрес.core.php (например файл новостей news.core.php).


Содержание

Создание нового файла ядра

Если вы хотите создать новый раздел site.ru/coretest/, то необходимо создать файл /phpshop/core/coretest.core.php и обязательно в нем создать класс PHPShopСoretest. Для нового файла используется форма-заготовка:

class PHPShopCoretest extends PHPShopCore {
 
// Конструктор
function PHPShopCoretest() {
        $this->action=array("nav"=>"index");
        parent::PHPShopCore();
    }
 
function index() {
 
 // Мета
 $this->title="Подключение PHP логики через API - ".$this->PHPShopSystem->getValue("name");
 $this->description='Подключение PHP логики';
 $this->keywords='php';
 
 // Определяем переменные
 $this->set('pageContent','PHPShop Core работет!');
 $this->set('pageTitle','Подключение PHP логики через API');
 
  // Подключаем шаблон
  $this->parseTemplate($this->getValue('templates.page_page_list'));
    }
}

В конструкции используются title, description, keywords, set, parseTemplate

Для создания файла ядра нужно создать класс по правилам:

  • Имя класса должно быть формата PHPShopИмяРаздела extends PHPShopCore
  • Наличие функции конструктора PHPShopИмяРаздела()
  • Наличие функции index(), отвечающую за вывод информации по умолчанию
  • Файл разместить по адресу phpshop/core/ИмяРаздела.core.php

В поставку PHPShop CMS Free включен такой файл (/phpshop/core/coretest.core.php), его работу можно увидеть, перейдя по ссылке http://localhost/coretest/

Управление экшенами и условиями

Хорошо, если у нас файл просто выводит определенную информации без примера, как в приведенном выше примере, а если нужно выполнять разные функции по условиям получения различных переменных окружения (POST и GET запросы). Для учета и обработки условий используется запись в конструкторе класса:

// Список экшенов
$this->action=array("nav"=>"ID","post"=>"news_plus");

Эта запись задает выполнение метода ID() при наличии переменной навигации ID (например ссылка /news/ID_12.html), выполнение метода news_plus() при наличии переменной $_POST[news_plus]. Если переменных несколько, то приоритет выполнения назначается по порядку следования в массиве.

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

// Список экшенов
$this->action=array("nav"=>"ID","post"=>array("news_plus","news_add"));


Перехват функций (Hook)

Библиотека поддерживает внедрение хуков (hook) в основную логику API для перехвата с последующими изменениями результата выполнения методом классов PHPShopCore, PHPShopElements и всех наследуемых от них классов. Для внедрения хука требуется создать модуль.

Отладка

Отладка происходит через отладочную панель, реализуемую через PHPShopDebug, выполняющей роль вывода системной информации, полезной для разработчика и используемой при отладке скрипта. Отладочная панель включается в конфигурационном файле в опции [my].

Урок