Вывод кастомных полей ресурса в админке
Всем привет!
Хочу добавить пару полей в modResource, скажем, еще один заголовок и еще одно поле с контентом. Ну вот хочется мне :) Допустим, расширение стандартной модели я сделаю по заметке Василия. Но как быть с админкой? Я где-то видел хитрый плагин тут на сайте, который добавляет кастомный js к ресурсу, но уже два часа копаюсь и не могу найти. Может напомнит кто?
Хочу добавить пару полей в modResource, скажем, еще один заголовок и еще одно поле с контентом. Ну вот хочется мне :) Допустим, расширение стандартной модели я сделаю по заметке Василия. Но как быть с админкой? Я где-то видел хитрый плагин тут на сайте, который добавляет кастомный js к ресурсу, но уже два часа копаюсь и не могу найти. Может напомнит кто?
Поблагодарить автора
Отправить деньги
Комментарии: 1
Таки нашел сам. Столько времени потратил :)
Плагин вешается на события, указанные в коде.
Тут пример с использованием кастомного класса, но убрать его и заменить на что-то другое не проблема, я полагаю.
Плагин вешается на события, указанные в коде.
Тут пример с использованием кастомного класса, но убрать его и заменить на что-то другое не проблема, я полагаю.
<?php
$modx->addPackage('extendResource', $modx->getOption('core_path').'components/extendresource/model/');
switch ($modx->event->name) {
case 'OnDocFormPrerender':
$views = 0;
$keywords='';
$level = 0;
if (isset($scriptProperties['resource'])) {
$id = $scriptProperties['resource']->get('id');
$query = $modx->newQuery('extendResource');
$query->where(array(
'resource' => $id,
));
$extendResource = $modx->getObject('extendResource',$query);
if (is_object($extendResource)) {
$views = $extendResource->get('views');
$keywords = $extendResource->get('keywords');
$level = $extendResource->get('level');
}
}
$modx->controller->addHtml(<<<HTML
<script>
Ext.ComponentMgr.onAvailable('modx-resource-main-right', function(page) {
page.on('beforerender', function() {
page.insert(2,{
xtype: 'textfield'
,name: 'views'
,value: {$views}
,anchor: '100%'
,layout: 'anchor'
,fieldLabel: 'Просмотры'
});
page.insert(3,{
xtype: 'textfield'
,name: 'level'
,value: {$level}
,anchor: '100%'
,layout: 'anchor'
,fieldLabel: 'Уровень'
});
})
});
Ext.ComponentMgr.onAvailable('modx-resource-main-left', function(page) {
page.on('beforerender', function() {
page.insert(2,{
xtype: 'textfield'
,name: 'keywords'
,value: '{$keywords}'
,anchor: '100%'
,layout: 'anchor'
,fieldLabel: 'Ключевые слова'
});
})
});
</script>
HTML
);
break;
case 'OnDocFormSave':
// do processing logic here.
$id = $scriptProperties['resource']->get('id');
$query = $modx->newQuery('extendResource');
$query->where(array(
'resource' => $id,
));
$extendResource = $modx->getObject('extendResource',$query);
if (!is_object($extendResource)) {
$extendResource = $modx->newObject('extendResource');
$extendResource->set('resource', $id);
}
$extendResource->set('views', $_POST['views']);
$extendResource->set('keywords', $_POST['keywords']);
$extendResource->set('level', $_POST['level']);
$extendResource->save();
break;
}
return;
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.