ProcessWire API - Page Manipulation
Aus Wikizone
Version vom 23. November 2019, 11:52 Uhr von 37.49.72.8 (Diskussion) (Die Seite wurde neu angelegt: „== ProcessWire - Seiten löschen == https://processwire.com/api/ref/page/delete/g/ <syntaxhighlight lang="php"> // Delete pages named "delete-me" that don't ha…“)
ProcessWire - Seiten löschen[Bearbeiten]
https://processwire.com/api/ref/page/delete/g/
// Delete pages named "delete-me" that don't have children
$items = $pages->find("name=delete-me, numChildren=0");
foreach($items as $item) {
$item->delete();
}
Seiten via API modifizieren[Bearbeiten]
// Modify a page and save it
$p = $pages->get('/festivals/decatur/beer/');
$p->of(false); // turn off output formatting, if it's on
$p->title = "Decatur Beer Festival";
$p->summary = "Come and enjoy fine beer and good company at the Decatur Beer Festival.";
$pages->save($p);
Seiten via API erstellen[Bearbeiten]
https://processwire.com/api/ref/pages/save/ https://processwire.com/talk/topic/352-creating-pages-via-api/
Allgemein[Bearbeiten]
$p = new Page();
$p->template = "basic-page";
$p->parent = 1;
$p->title = "Page Title";
//$p->id = 4254; Only if you want to set this manually
$p->of(false);
$p->save();
In Modulen[Bearbeiten]
include(./index.php) // bootstrap PW (not needed when creating pages and your already in bootstraped mode (i.e. on a page template)
$p = new Page(); // create new page object
$p->template = 'page'; // set template
$p->parent = wire('pages')->get('/about/'); // set the parent
$p->name = 'mynewpage_url'; // give it a name used in the url for the page
$p->title = 'My New Page'; // set page title (not neccessary but recommended)
// added by Ryan: save page in preparation for adding files (#1)
$p->save();
// populate fields
$p->image = 'path/to/image.jpg'; // populate a single image field (#2)
$p->images->add('path/to/image1.jpg'); // add multiple to images field
$p->save();
// testing
echo 'id: '.$p->id.'<br/>';
echo 'path: '.$p->path;
Tipps[Bearbeiten]
- save a page before adding files to it
- To add a single image', you'd need to do $p->image = 'path/to/image.jpg; rather than $p->image('path/to/image.jpg'). This is because there is no Page::image() function
- may need to add a $page->setOutputFormatting(false)
- if your module creates new objects, like $page = new Page();, you'll want to wire those new objects to the current ProcessWire instance, which makes it a "wired" object. You do it like this: $page = $this->wire(new Page());