Пример загрузки статьи с сайта в админ панель Modx Revo. После загрузки пользователь будет перенаправлен на страницу с id "251". При этом статья появится в структуре дерева документов админ анели Modx Revo.
| 1. | <?php |
| 2. | error_reporting(E_ALL | E_STRICT); |
| 3. | ini_set('display_errors', 1); |
| 4. | |
| 5. | if($_POST['model']){ |
| 6. | |
| 7. | $modx->initialize('mgr'); |
| 8. | $holder = $modx->getObject('modResource',array('pagetitle' =>$_POST['model'])); |
| 9. | $id = $holder->get('id'); |
| 10. | $name = $_POST['name'].' "'.$_POST['model'].'" '.'('.date('h-i-s').')'; |
| 11. | $resource = $modx->newObject('modDocument', |
| 12. | array('pagetitle'=>$name, |
| 13. | 'introtext'=>$_POST['text'], |
| 14. | 'content'=>$_POST['text'], |
| 15. | 'template'=>9, |
| 16. | 'parent'=>$id, |
| 17. | 'published'=>1, |
| 18. | 'publishedon'=>date("Y-m-d H:i:s"), |
| 19. | 'alias'=>$_POST['name'].date("h:i:s"), |
| 20. | |
| 21. | |
| 22. | )); |
| 23. | |
| 24. | $resource->save(); |
| 25. | |
| 26. | $holder = $modx->getObject('modResource',array('pagetitle' =>$name)); |
| 27. | $id = $holder->get('id'); |
| 28. | |
| 29. | $tv = $modx->getObject('modTemplateVar',array('name'=>'otzivc')); |
| 30. | $tv->setValue($id,'otziv'); |
| 31. | $tv->save(); |
| 32. | if(!empty($_POST['name'])) { |
| 33. | $tv = $modx->getObject('modTemplateVar',array('name'=>'avtor')); |
| 34. | $tv->setValue($id,$_POST['name']); |
| 35. | $tv->save(); |
| 36. | } |
| 37. | $modx->cacheManager->clearCache(); |
| 38. | |
| 39. | $url = $modx->makeUrl(251); |
| 40. | $modx->sendRedirect($url); |
| 41. | |
| 42. | } |
| 43. |
Обратите внимание на следующий отрезок кода, он позволяет загружать статью в папку дерева админ панели, которая является родительской для вновь создаваемого документа:
| 16. | 'parent'=>$id |
Код с 26 строки по 37 строку предназначен для добавления поля TV.
| 26. | $holder = $modx->getObject('modResource',array('pagetitle' =>$name)); |
| 27. | $id = $holder->get('id'); |
| 28. | |
| 29. | $tv = $modx->getObject('modTemplateVar',array('name'=>'otzivc')); |
| 30. | $tv->setValue($id,'otziv'); |
| 31. | $tv->save(); |
| 32. | if(!empty($_POST['name'])) { |
| 33. | $tv = $modx->getObject('modTemplateVar',array('name'=>'avtor')); |
| 34. | $tv->setValue($id,$_POST['name']); |
| 35. | $tv->save(); |
| 36. | } |
| 37. | $modx->cacheManager->clearCache(); |
| 38. |
1.1
Александр
Код необходимо вставлять в сниппет, который будет получать данные из полей формы. Например, на странице есть форма, в которой поля с именем name, model и т.д. При отправке формы данные этих полей передаются в глобальном массиве $_POST указанному сниппету, на основе которых создаётся новая статья и появляется в админ панели:$resource = $modx->newObject('modDocument'....