ProcessWire通过API创建页面
ProcessWire的API非常简单易用,下面这段代码演示了如何通过API创建一个页面?
$parentPage->get('/path/to/parent/'); //上级页面 $p = new Page(); //实例化 $p->template = "templateName"; //页面模板 $p->parent = $parentPage; //上级页面 $p->name = "pageName"; //页面名称,也就是URL路由 $p->title = "页面标题"; //为title字段赋值,页面标题 $p->body = "页面内容"; //为body字段赋值,页面内容 $p->of(false); $p->save(); //保存页面 $p->of(true);
封装成函数
/** * 创建页面的API * @param Page(),父页面 * @param Array(),用于构建表单的数组,需要注意的是,复合字段例如repeater/images须使用数组格式存储 * @return Page id OR Boole false */ function createPage(Page $parent, $form){ $p = new Page(); $p->parent = $parent; $p->name = wire("pages")->findOne("sort=-id, limit=1, include=all")->id+1; foreach($form as $field=>$value) { if(is_array($value)) continue; $p->$field = $value; } $p->of(false); $p->save(); $p->of(true); if($p->id){ //images foreach ($form as $field => $value) { if(!is_array($value)) continue; if(count($value)){ $p->of(false); foreach ($value as $item) { $p->$field->add($item); } $p->save($field); $p->of(true); } } return $p->id; } else { return false; } }