transport.tv.php - или как транспортировать tv
Расковыривая github.com/bezumkin/modExtra до крови, да бы упаковать свой mSocial я столкнулся с грустной проблемой он не умеет создавать tv. Ну или может быть умеет, но я не нашел как, в связи с этим решил немного его расширить добавив новый транспортер. Итак, что же нужно делать?
Добавляем новую глобальную переменную в _build/build.config.php
Добавляем новый блок в _build/build.transport.php
Создаем новый файл transport.tv.php в папочке _build/data
pss: запихал все это дело в офф репозиторий.
psss: есть проблема с удалением tv после удаления приложения, делаю это через ресольверы, пока другого варианта не нашел (хотя такой вариант не очень нравится).
Добавляем новую глобальную переменную в _build/build.config.php
define('BUILD_TV_UPDATE', true);Добавляем новый блок в _build/build.transport.php
/* add tv */
if (defined('BUILD_TV_UPDATE')) {
$attr[xPDOTransport::RELATED_OBJECT_ATTRIBUTES]['Tv'] = array(
xPDOTransport::PRESERVE_KEYS => false,
xPDOTransport::UPDATE_OBJECT => BUILD_TV_UPDATE,
xPDOTransport::UNIQUE_KEY => 'name',
);
$tvs = include $sources['data'] . 'transport.tv.php';
if (!is_array($tvs)) {
$modx->log(modX::LOG_LEVEL_ERROR, 'Could not package in tvs.');
}
else {
$category->addMany($tvs);
$modx->log(modX::LOG_LEVEL_INFO, 'Packaged in ' . count($tvs) . ' tvs.');
}
}Создаем новый файл transport.tv.php в папочке _build/data
$tvs = array();
$tmp = array(
'mSocialPost' => array(
'caption' => 'Постим в twitter?',
'type' => 'listbox',
'elements' => 'Да==1'
),
);
foreach ($tmp as $k => $v) {
$tv = $modx->newObject('modTemplateVar');
$tv->fromArray(array(
'name' => $k,
'caption' => @$v['caption'],
'type' => @$v['type'] ? @$v['type'] : 'text',
'elements' => @$v['elements'] ? @$v['elements'] : '',
'default_text' => @$v['default_text'] ? @$v['default_text'] : '',
));
$tvs[] = $tv;
}
unset($tmp);
return $tvs;ps:: ясен фиг что гиганты сочтут это как совершенно понятно и просто, но думаю может кому пригодится, вот мне бы пригодилось, так сказать «решения для идиота». Которые я так люблю. А если Василий вдруг решит добавить эту глупость в свой репозиторий, я буду плакать как маленькая девочка.pss: запихал все это дело в офф репозиторий.
psss: есть проблема с удалением tv после удаления приложения, делаю это через ресольверы, пока другого варианта не нашел (хотя такой вариант не очень нравится).
Техническая поддержка MODX
Сайт лежит, тормозит или остался без разработчика?
Переезд с MODX 2 на 3, PHP 7 на 8, скорость и безопасность. Поддержка со сроками и ответственностью, а не совет в чате.
Подробнее
Реклама
Комментарии: 19
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
— Павел что ты мне тут за какашку прислал?
Абсолютно всё, что нужно для лексиконов, хранится в этих файлах.
yadi.sk/i/HEk-lWuunwdQF
Эти поля как я понимаю хранятся именно в lexicon_entries. И именно их я и хочу закидывать, можно без лексиконов, но это как то грустно. Опять же во всех твоих компонентах сделанно именно так. Пытаюсь равняться на них.
ps: вполне возможно, да скорей всего есть другой вариант, но я его пока не нашел.
Этот файл подключается в default.inc.php, если что. А вот подробности.
С момента создания этой темы структура modExtra изменилась, и я что-то не могу найти в каком месте добавляется TV.