Как добавить страницу с TV параметрами в MODX Evolution [программно]

Данная статья содержит пример программного кода, который можно вставить в сниппет, ориентированный на MODX Evolution (проверял на версии 1.0.10), и он будет генерировать новые документы а-ля страницы с заданным или заданными TV параметрами, заблаговременно подготовленными посредством админки CMS.

<?php
include_once "manager/processors/cache_sync.class.processor.php";
global $modx;

// Установка свойств нового ресурса:
$new_document = array(
  'pagetitle' => 'Авто-статья',
  'content' => 'Данная страница сгенерирована автоматически.';
  'longtitle' => '',
  'description' => '',
  'alias' => '',
  'published' => 1,
  'parent' => 0,
  'introtext' => '',
  'template' => 4, // - идентификатор существующего шаблона
  'searchable' => 1,
  'cacheable' => 1,
  'createdby' => 1,
  'createdon ' => time(),
  'editedby' => 1,
  'editedon ' => time(),
);

// Вставка новой страницы в базу данных:
$newDocId = $modx->db->insert( $new_document, $modx->getFullTableName('site_content') );

$new_tv = array(
  'contentid' => $newDocId,
  'tmplvarid' => '4', // - идентификатор TV
  'value' => 'Привет человекам!!!', // - значение TV
);

$newTvId = $modx->db->insert( $new_tv, $modx->getFullTableName('site_tmplvar_contentvalues') );

// Очистка кэша: 
$sync = new synccache();
$sync->setCachepath("assets/cache/");
$sync->setReport(false);
$sync->emptyCache();

return 
  '<pre>' . print_r(
    array(
      'интификатор документа' => $newDocId, 
      'интификатор TV параметра' => $newTvId, 
    ), true) . '</pre>';
?>

Как этим всем пользоваться:

  1. Открываем приложение под названием phpMyAdmin и смотрим табличку modx_site_tmplvars. По имени вашего TV параметра, который вы добавляете и прикрепляете к шаблону через Менеджер стандартным путем заранее, находите интересующую строчку. Запоминаете значение поля ID, — идентификатор переменной темплейта.
  2. В массиве $new_tv меняете целое число в 'tmplvarid' => '4' на ваш айдишник.
  3. Ну и третий момент. Т.к. это демонстрационный набросок не забываем поменять значение возвращаемое сниппетом, — сейчас это массив с print_r().
Опубликовано 29-08-2013 в 11:20


Комментариев к записи: 1

  1. krasnov8953:

    Не работает как мне кажется строчка
    $newTvId = $modx->db->insert( $new_tv, $modx->getFullTableName(‘site_tmplvar_contentvalues’) );
    не возвращает id вставленного документа, а просто вставляет документ в базу

Добавить комментарий для krasnov8953 Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>











Свежие комментарии

  • krasnov8953: к записи Не работает как мне кажется строчка $newTvId = $ »
  • Dimanski: к записи ничего не понимаю. Ставлю ModX на хостинг r01.ru »
  • Дмитрий: к записи Спасибо! Очень выручили. С битриксом беда, а прав »
  • леонид: к записи как сделать что были в ряд? у меня получается по о »
  • Администратор: к записи Статический IP. »
  • Steel: к записи Администратор, вы данную проблему решили подключен »
  • Дмитрий: к записи Хотел узнать как прикрутить данное окно (http://re »

Последние твиты