ProcessWire - Page Reference (Field): Unterschied zwischen den Versionen
| Zeile 15: | Zeile 15: | ||
$p->save(); | $p->save(); | ||
</pre> | </pre> | ||
| + | |||
=== Finde Seiten die auf Diese zeigen === | === Finde Seiten die auf Diese zeigen === | ||
https://processwire.com/api/ref/page/references/ | https://processwire.com/api/ref/page/references/ | ||
| Zeile 24: | Zeile 25: | ||
// usage with all arguments | // usage with all arguments | ||
$items = $page->references($selector = '', $field = ''); | $items = $page->references($selector = '', $field = ''); | ||
| + | |||
| + | === Komplexe Referenzierung === | ||
| + | https://processwire.com/talk/topic/1224-selector-and-page-reference-field/ | ||
| + | Finde Seiten mit dem Template '''poi''' die ein Seitenreferenz auf eine Seite mit dem Titel '''Zoo''' haben. Das PR Feld hat den Namen poi_type | ||
| + | <syntaxhighlight lang="php"> | ||
| + | $pr = $pages->get("title=Zoo"); | ||
| + | $poi = $pages->find("template=poi, poi_type=$pr"); | ||
| + | </syntaxhighlight> | ||
| + | |||
=== Erstelle Seitenreferenzen === | === Erstelle Seitenreferenzen === | ||
Version vom 11. Oktober 2020, 21:30 Uhr
Page Reference Felder enthalten Verbindungen zu anderen Seiten.
API Zugriff auf Page Reference
Einfache Beispiele
// examples $someOtherPage = $pages->get(1234); $page->your_page_field = $someOtherPage;// @note: not sure it works in all contexts $page->your_page_field->add($someOtherPage); $page->your_page_field->add(1234); // Manipulate page reference this way... $p = $pages->get(1234); $p->of(false); // always switch of output formatting when manipulating and save back values $p->page_reference_field->add(1111); // add another page by id $p->save();
Finde Seiten die auf Diese zeigen
https://processwire.com/api/ref/page/references/
Available since version 3.0.107.
// basic usage $items = $page->references();
// usage with all arguments $items = $page->references($selector = , $field = );
Komplexe Referenzierung
https://processwire.com/talk/topic/1224-selector-and-page-reference-field/
Finde Seiten mit dem Template poi die ein Seitenreferenz auf eine Seite mit dem Titel Zoo haben. Das PR Feld hat den Namen poi_type
$pr = $pages->get("title=Zoo");
$poi = $pages->find("template=poi, poi_type=$pr");
Erstelle Seitenreferenzen
$myPage->pReferences = $page; // creates one reference $myPage->save(); // make sure to save page somewhere
This of course doesn't work with multiple pages. I tried this (found from current docs, used in images):
$myPage->pReferences->add($page); // adds a page reference, allows more than one add (if field allows this). $myPage->save();
Reverse Page Reference
Manchmal möchte man von der "anderen Seite" also von der referenzierten Seite auf Seiten zugreifen, die auf diese Seite zeigen. Entweder man möchte über die Api effektiv drauf zugreifen, oder man möchte im Backend bessere Bearbeitungsmöglichkeiten.
Hilfsmodule
Ich editiere eine Seite und möchte eine Referenz auf diese Seite bearbeiten oder einfügen. Ich möchte die Seite aber nicht verlassen müssen sondern alles in einem Rutsch erledigen.
http://modules.processwire.com/modules/admin-page-field-edit-links/
Ermöglicht das Bearbeiten von Seitenreferenzen in einem Inline Frame.
http://modules.processwire.com/modules/connect-page-fields/
Ermöglicht das Synchronisieren von zwei Seiten die sich gegenseitig referenzieren. In mySQL würde man hier lieber eine m:n Verbindung nehmen anstatt zwei Felder zu nutzen, da man hier zwei Datensätze pflegt (redundant und Gefahr das es mal asynchron ist). Vorteil ist aber, dass man über die API Performancevorteile hat, weil man niemals eine Suche nach "was zeigt hierher" machen muss.
Selektoren die helfen
Selektoren die einem helfen Seiten die eine Referenz auf die aktuelle Seite zu finden.
page()->references()
und der
owner
Selektor