Создание собственных полей в базе данных [MODX]

15 Февраля 2019
php

Допустим нам необходимо создать поле, например view, чтобы туда записывать количество просмотров наших ресурсов.

  1. Идем в phpmyadmin, в таблицу site_content добавляем поле называем view.

    Например так:

    ALTER TABLE `modx_site_content` ADD `view` INT NOT NULL AFTER `hidden`;
    
  2. Создаем плагин с любым названием, например expansionTable. Во вкладке "Системные события" отмечаем OnMODXInit.

    switch ($modx->event->name) {
        case 'OnMODXInit':       
            // подлючаем класс modResource
            $modx->loadClass('modResource');    
            
            // устанавливаем тип переменной, значение по умолчанию и тд.
            $modx->map['modResource']['fields']['view'] = 0;
            $modx->map['modResource']['fieldMeta']['view'] = array(
                'dbtype' => 'int',            
                'precision' => '10',            
                'phptype' => 'integer',            
                'null' => false,            
                'default' => 0,
            );        
        break;
    }
    

Теперь наше новое поле modx воспринимает так же как и [[*pagetitle]], можно выводить ([[*view]]), фильтровать по нему и так далее.