Автоматическое имя в pagetitle
Добрый день. Требуется реализовать автоматическую нумерацию в коллекциях (если так невозможно, то как-то иначе). Пример: есть пустая коллекция (Collections). Документы автоматически при создании должны получать инкрементное имя. К примеру: по шаблону Page 1, Page 2, Page 3. То есть, пользователь не должен вручную вводить pagetitle, а при создании документа автоматически подставлялось имя на единицу больше.
Спасибо.
Спасибо.
Комментарии: 7
Можно попробовать плагин на ondocformprerender. https://docs.modx.com/current/en/extending-modx/plugins/system-events/ondocformprerender
<?php
$eventName = $modx->event->name;
switch($eventName) {
case 'OnDocFormPrerender':
if($mode == 'new'){
if($count = $modx->getCount("modResource',['parent'=>$resource->parent])){
$count = $count +1;
}
$modx->regClientStartupHTMLBlock('
<script type="text/javascript">
Ext.onReady(function() {
var pagetitle = Ext.select("#modx-resource-pagetitle");
pagetitle.setValue("Page '.$count.');
});
</script>');
}
break;
}
Не тестировал. Но вруг сработает. Главное чтоб $resource->parent был определен.
Спасибо. В коллекциях не работает, а в папках считает.
Пробовал не через скрипт (подстановка в #modx-resource-pagetitle"), а через
Пробовал не через скрипт (подстановка в #modx-resource-pagetitle"), а через
$resource->set('pagetitle',$count);
Смысл тот же (подстановка в pagetitle), но не работает.
UPD. Прошу прощения — работает. Только почему-то только через Render — OnDocFormPrerender не хочет!
<?php
$eventName = $modx->event->name;
switch($eventName) {
case 'OnDocFormRender':
if($mode == 'new'){
if($count = $modx->getCount('modResource',['parent'=>$resource->parent])){
$count = $count +1;
}
$resource->set('pagetitle',"Page $count");
}
break;
}
Спасибо большое.
Рад что помог :-)
А ещё надоесть: как выполнить проверку на вложенность? То есть, данная функция должна быть доступна только для определённого ресурса (родителя). Чувствую, что надо использовать
$parentObj = $object->get('parent');
Но как осуществить проверку? К примеру, pagetitle должен подставляться только для потомков родителя с id=8.
Ну так и проверяйте на принадлежность к 8ке…
Спасибо. Окончательно:
<?php
$eventName = $modx->event->name;
switch($eventName) {
case 'OnDocFormRender':
if($mode == 'new'){
if($resource->get('parent') == 8){
if($count = $modx->getCount('modResource',['parent'=>$resource->parent])){
$count = $count +1;
}
$resource->set('pagetitle',"Page $count");}
}
break;
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.