{"items":[ [[Ditto? &startID=`162` &tpl=`cat` &tplLast=`catLast`]] ]}
{ "name":"[+pagetitle+]", "alias":"[+alias+]", "template":"[+template+]", "hidemenu":"[+hidemenu+]", "content":[ [!Ditto? &startID=`[+id+]` &tpl=`item` &tplLast=`itemLast`!] ] },
{ "name":"[+pagetitle+]", "alias":"[+alias+]", "template":"[+template+]", "hidemenu":"[+hidemenu+]", "content":"[+content:strip:noquotes+]" },
<?php // Remove r & n return str_replace('"','& quot ;',$output); // ! * ?>
<?php // JSON- // function addItem($ctx,$pagetitle,$template,$isfolder,$hidemenu,$parent,$alias,$content,$td){ global $modx; $newResource = $modx->newObject('modResource'); $newResource->fromArray(array( 'pagetitle'=>$pagetitle, 'longtitle'=>$pagetitle, 'content'=>$content, 'template'=>$template, 'isfolder'=>$isfolder, 'hidemenu'=>$hidemenu, 'parent'=>$parent, 'published'=>'1', 'alias'=>$alias, 'context_key'=>$ctx )); if ($newResource->save()) { $id = $newResource->get('id'); $modx->cacheManager->refresh(); $modx->reloadConfig(); if (is_array($td)) { foreach($td as $key=>$val) { $tvar = $modx->newObject('modTemplateVarResource'); $tvar->set('contentid',$id); $tvar->set('tmplvarid',$key); $tvar->set('value',$val); $tvar->save(); } } return $id; } else { return false; } } // , function handleItem($ctx,$item,$parent,$tpls,$tvs,$handleChildren=false){ $hidm = isset($item['hidemenu'])?$item['hidemenu']:'0'; $isf = is_array($item['content'])?'1':'0'; $content = is_array($item['content'])?'':$item['content']; $tpl = array_key_exists('tpl'.$item['template'],$tpls)?$tpls['tpl'.$item['template']]:'0'; $td = array(); foreach($tvs as $tvn=>$tvv) if (array_key_exists($tvn,$item)) $td[$tvv] = $item[$tvn]; $ret = ''; if ($id = addItem($ctx,$item['name'],$tpl,$isf,$hidm,$parent,$item['alias'],$content,$td)) { $ret = 'Resource «<b>'.$item['name'].'</b>» imported successfully! ' . 'New ID: <b>'.$id.'</b><br />'; if (is_array($item['content']) && $handleChildren) foreach ($item['content'] as $i) $ret.= handleItem($ctx,$i,$id,$tpls,$tvs,$handleChildren); return $ret; } else { return 'Resource «<b>'.$item['name'].'</b>» not imported!<br />'; } } // $cons = '<h1>Import item log</h1>'; // ( ) $item_count = isset($itemCount)?$itemCount:4; // , if (!isset($curContext)) $curContext = 'web'; // "" ( ) $next_items = isset($_GET['jsonimportnext'])?intval($_GET['jsonimportnext']):0; // $tpls = array(); if (isset($templates)) { $tmp = explode(',',$templates); foreach($tmp as $val) { $tpls_d = explode('=>',$val); $tpls['tpl'.$tpls_d[0]] = $tpls_d[1]; } } // TV- $tvs = array(); if (isset($tvParams)) { $tmp = explode(',',$tvParams); foreach($tmp as $val) { $tvs_d = explode('=>',$val); $tvs[$tvs_d[0]] = $tvs_d[1]; } } // if (isset($source) && isset($rootID)) { if ($import_content = @file_get_contents($source)) { $import_data = json_decode($import_content,true); $import_count = count($import_data['items']); if ($item_count != 0) { for($c = 0; $c < $item_count; $c++) { $n = $item_count*$next_items+$c; if (isset($import_data['items'][$n])) $cons.= handleItem($curContext,$import_data['items'][$n],$rootID,$tpls,$tvs); } $this_res = $modx->resource->get('alias'); $this_res.= '.html'; if (($item_count*$next_items+$item_count-1)<$import_count) { $cons.= '<br /><a href="'.$this_res.'?jsonimportnext=' . ($next_items+1).'">' . 'Import next items</a><br />'; } else { $cons.= '<br /><a href="'.$this_res.'">Start</a>'; } } else { foreach ($import_data['items'] as $item) $cons.= handleItem($curContext,$item,$rootID,$tpls,$tvs,true); } } else { $cons.= 'Cannot get source!<br />'; } } else { $cons.= 'Invalid execution parameters!<br />'; } return $cons;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru"><head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <base href="/" /> <title>[[*pagetitle]]</title> <style type="text/css"> body { font: 12px monospace; } </style> </head><body><div align="center"><div style="text-align: left; width: 800px;"> [[!importJSON? &source=`[[*sourceURL]]` &itemCount=`6` &templates=`[[*templatesReplace]]` &tvParams=`[[*tvsReplace]]` &curContext=`[[*currentContext]]` &rootID=`[[*importDestination]]`]] </div></div></body></html>
Source: https://habr.com/ru/post/157483/
All Articles