ProcessWire - Page Object: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
Zeile 2: Zeile 2:
 
Das Page Objekt enthält alle Daten einer Seite. Normalerweise kann man bei der Arbeit mit Templates direkt  
 
Das Page Objekt enthält alle Daten einer Seite. Normalerweise kann man bei der Arbeit mit Templates direkt  
 
  $page
 
  $page
 +
Das $pages Objekt liefert Funktionen mit denen man Seiten durchsuchen kann.
 
schreiben um auf die aktuelle Seite zuzugreifen. Wenn man das Feld einer aktuellen Seite abrufen möchte kann man das dann z.B. so machen
 
schreiben um auf die aktuelle Seite zuzugreifen. Wenn man das Feld einer aktuellen Seite abrufen möchte kann man das dann z.B. so machen
 
echo $page->title
 
echo $page->title
 +
== Wichtige Funktionen ==
 +
=== find() ===
 +
https://processwire.com/api/ref/pages/find/
  
 +
Findet Seiten und gibt diese als PageArray zurück. Mit den Optionen kann man aber auch nur die Seitenids zurückgeben
 +
=== findOne ===
 +
https://processwire.com/api/ref/pages/find-one/
 +
 +
$blogPost = $pages->findOne("template=blog-post, sort=-created");
 +
Im Gegensatz zu $pages->find() liefert findeOne kein Array sondern direkt ein Seitenobjekt. Spart arbeit wenn man nur ein Ergebnis braucht.
 
== Seiten holen ==
 
== Seiten holen ==
 
Im einfachsten Fall kann man Seitenobjekte über Get abrufen
 
Im einfachsten Fall kann man Seitenobjekte über Get abrufen

Version vom 4. Februar 2019, 13:54 Uhr

Einführung

Das Page Objekt enthält alle Daten einer Seite. Normalerweise kann man bei der Arbeit mit Templates direkt

$page

Das $pages Objekt liefert Funktionen mit denen man Seiten durchsuchen kann. schreiben um auf die aktuelle Seite zuzugreifen. Wenn man das Feld einer aktuellen Seite abrufen möchte kann man das dann z.B. so machen echo $page->title

Wichtige Funktionen

find()

https://processwire.com/api/ref/pages/find/

Findet Seiten und gibt diese als PageArray zurück. Mit den Optionen kann man aber auch nur die Seitenids zurückgeben

findOne

https://processwire.com/api/ref/pages/find-one/

$blogPost = $pages->findOne("template=blog-post, sort=-created");

Im Gegensatz zu $pages->find() liefert findeOne kein Array sondern direkt ein Seitenobjekt. Spart arbeit wenn man nur ein Ergebnis braucht.

Seiten holen

Im einfachsten Fall kann man Seitenobjekte über Get abrufen

// Get a page by ID
$p = $pages->get(1234);

// Get a page by path
$p = $pages->get('/about/contact/');

// Get a random 'skyscraper' page by selector string
$p = $pages->get('template=skyscraper, sort=random');

Über einen Selektor, wie im letzten Beispiel, kann man schnell Seiten abfragen (siehe ProcessWire - Selectors)

Aktuelle Seite

Innerhalb der normalen Templates hat man über $page Zugriff auf die aktuelle Seite

$meineSeite = $page;

Wenn $page für die aktuelle Seite nicht zur Verfügung steht (z.B. in Modulen) kann man sich über das wire Objekt die aktuelle Seite eines Nutzers holen:

$page = wire("page");
$t = $page->title;

Seiten modifizieren oder erstellen

Wenn die Seite noch nicht vorhanden ist wird sie mit save() automatisch erstellt. Wenn Sie existiert upgedatet.

Man kann auch nur ein spezifisches Feld einer Seite speichern.

// 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); // Same as $p->save();
$page->save($fieldName); // save a specific Field

Neue Seiten erzeugen

$fields = array('title', 'vorname', 'plz', [...]);
$values = array("Mein Titel","Max","D72810");
// fill fieldnames i.e. from database query...
list($oe_id, $oe_nl_name, $oe_plz, [...]) = $row;

$p = new Page();
$p->template = "templatename";
$p->parent = $parentId;// Elternseite
$p->title = "Titel der Seite";
$p->of(false);
if(!$p->save()) echo "Seite konnte nicht gespeichert werden";

// populate fields
$p->vorname = "Max";
$p->[feldname] = "Inhalt des Feldes";
$p->save();