ProcessWire - Page Reference (Field)

Aus Wikizone
Wechseln zu: Navigation, Suche

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 = );

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