Node reference URL Widget: "Neuen (Child)Node erstellen" Link ausblenden wenn schon ein Child existiert
am 25.03.2010 - 18:34 Uhr in
Ich habe node relativity aufgegeben, da es damit zuuuu kompliziert wurde und habe mich CCK Node Reference zugewandt.
Per Node Reference URL Widget habe ich einen bequemen Link am Ende der Node "Jetzt einen neuen (Child)Node erstellen. Dann wird, wie vorgesehen, in dem Childnode das Feld "node reference" automatisch ausgefüllt.
Per back reference teile ich dem Parentnode per CCK Feld dann mit, welches seine Child(s) sind.
Jetzt würde ich gerne nur einen Child erlauben, also den bequemen Link am Ende der Node ausblenden, wenn schon das CCK Feld "Meine Childnodes" beim Parent ausgefüllt ist. Bei "normalen" CCK Feldern gibt es ja die Option die Anzahl der Werte zu beschränken; diese fehlt hier leider.
Edit:
Leider ist die Lösung (Kommentar im Thread unten (http://www.drupalcenter.de/node/26365#comment-95308)) über die Einschränkung mit Views in meinem Falle nicht tragbar. Da ich die Node Reference Felder der Childs per Backreference auf den Parent gespiegelt habe, konnte ich einfach einen View erzeugen, der mit alle Nodes ausgibt bei denen das Feld "was ist mein Child" leer ist. Die zu referenzierenden Nodes sind also durch die Filtereinstellungen des Views beschränkt. Nur leider finden diese Gültigkeitsprüfung nach den Viewkriterien auch dann statt, wenn ich eine Childnode bearbeite. Dann ist das Feld "was ist mein Child" beim Parent ja schon durch das Modul Backreference gefüllt worden; somit ist der Parent keine gültiger Parent mehr und ich kann die Childnode nicht speichern - bekomme ein Fehlermeldung "Parent kein gültiger Parent" :(
Für einen einmalige Erstellung von Childs reicht es aber auf jeden Fall!
- Anmelden oder Registrieren um Kommentare zu schreiben
Fehlt nicht, sonder ist andersrum
am 25.03.2010 - 22:29 Uhr
Jetzt würde ich gerne nur einen Child erlauben, also den bequemen Link am Ende der Node ausblenden, wenn schon das CCK Feld "Meine Childnodes" beim Parent ausgefüllt ist. Bei "normalen" CCK Feldern gibt es ja die Option die Anzahl der Werte zu beschränken; diese fehlt hier leider.
Das fehlt nicht, sondern macht in diese Richtung keinen Sinn.
Denk daran; Mit Nodereference, Teils Du eben dem Child mit wer seine Parants sind, und nicht umgekehrt. Du kannst sehr wohl einschränken wieviele Parents ein Child haben kann.
PS: Du bist hier nicht in China wo den Eltern nur ein Kinder laubt ist. *scnr*
Gruss Roger
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen (1. Posting vom Thema) <==> das erleichtert das finden von Lösungen
verstehe, verstehen... Ich
am 26.03.2010 - 10:23 Uhr
verstehe, verstehen...
Ich "spiegel" das CCK Feld ja auf seinen Parent per backreference.
Ich dachte vielleicht an ein Lösung nach dem Schema:
irgendwas in die node-XXX.tpl gehackt:
<?php
if ( CCK Feld "Was ist mein Child" einen gültigen Wert hat
then (blende den Link von Node Reference URL Widget aus)
>
Diese Option "Anzahl von Werten" steht leider in dem Node Reference URL Widget nicht zu Verfügung. Ist aber auch eigentlich egal, da der Link weg sein oder ausgeblendet sein soll, wenn ein CCK Feld beim Parent einen Wert hat.
ps: Ich musste echt schmunzeln
Noch mal zu Back References
am 31.03.2010 - 09:19 Uhr
Ich gehe noch immer davon aus, dass du hierfür das Modul Node Relationships verwendest. auf der Projektseite steht doch...
This module provides a method to display back reference views on referred nodes. Back reference definitions are taken from the "Content types that can be referenced" option in the global settings section of node reference fields. Note that you should configure this option explicitly even if you use a view for the node reference field.
These back references do not need additional data stored in the database. Instead, views with the proper relationships are used to join the node reference field data with the corresponding nodes in the database. These views can then be used from the referred content types to provide a list of referrer nodes. The Node Relationships module provides a default view that you can modify and/or clone (recommended) should you need to add more fields, filters or change any other option to suit your needs.
Wenn mich mein English nicht täuscht, dann wird hier kein echtes CCK-Feld erzeugt, sonder nur eine Query, die die Childs untersucht. Demnach müsste dein Code singemäss wie folgt aussehen:
<?php
if (ein Kind hat mich als Vater/Mutter)
then (ich will keins mehr, also sterilisiere mich)
>
Gruss Roger
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen (1. Posting vom Thema) <==> das erleichtert das finden von Lösungen
Nein, node relationships
am 31.03.2010 - 15:07 Uhr
Nein, node relationships verwende ich nicht.
Ich hatte erst node relativity verwendet und jetzt verwende ich cck node reference + backreference. backreference ist so eingestellt, dass es das Feld "field_noderef" auf das Feld "field_mychild" im Parent "spiegelt".
Node Relationships schaue ich mir jetzt mal an. Mal sehen was sich damit alles anstellen lässt.
Wie so oft ist die Lösung
am 06.04.2010 - 09:57 Uhr
Wie so oft ist die Lösung auch hier views.
Einfach die zu referenzierenden Beiträge durch einen View einschränken und das CCK Feld anweisen diesen zu verwenden.