I have a view that selects a subset of book child nodes of a given type, where the parent book id is passed as argument. This works fine when I pass a given nid as parent book id in the view preview.
I have a CCK node reference that uses that view under Advanced - Nodes that can be referenced (View), selecting the created view under View use to select the nodes:.
How can I pass the nid of a specific node with an instance of the node reference field to the view under View arguments, which just says:
Provide a comma separated list of arguments to pass to the view.
I searched hi and lo for documentation on it, including CCK advanced help, and searched (including google), and all I've found so far is lots of similar questions, unanswered such as:
How do you pass argument from CCK field to a View?
I have token enabled (I thought maybe one can use tokens as arguments to the filtering view).
Comments
Seems one can't: #461774:
Seems one can't:
#461774: What format do I use for arguments to node reference view arguments?
#196518: Token support for advanced view argument
Grateful for any feedback.
Webel IT Australia, "Elements of the Web", Scientific IT Consultancy,
For PHP-driven Drupal CMS web sites, Enterprise Java, graphical UML, UML Parsing Analysis, SysML, XML.
Also related: #334121: Add
Also related: #334121: Add PHP code textarea for 'views argument' in nodereference.module fields
Webel IT Australia, "Elements of the Web", Scientific IT Consultancy,
For PHP-driven Drupal CMS web sites, Enterprise Java, graphical UML, UML Parsing Analysis, SysML, XML.
Solved
I've figured out how to do what I need thanks to Advanced Help for views:
Thanks views maintainers for this useful feature.
Webel IT Australia, "Elements of the Web", Scientific IT Consultancy,
For PHP-driven Drupal CMS web sites, Enterprise Java, graphical UML, UML Parsing Analysis, SysML, XML.
Same configuration not working for me
Thanks for the post webel. I believe that I am trying to accomplish the same thing as you did, but for some reason the method you used is not working for me. Perhaps I'm missing something.
I have a content type containing a Node reference field which uses auto-complete to present a set of nodes. Like you, I'm using a view to limit the set of nodes presented in auto-complete.
The view I'm using first limits the selection on Node Type via a filter (node: Type = a_specifc_node_type). This is quite simple and works fine.
I'm trying to further limit the set of nodes presented by the auto-complete based on the nid of the node which is currently being edited (The nodes I'm trying to present are child nodes and have a field containing the parent nid.) I use an argument to do this and my view works if I set a specific nid via the "arguments" field in the view's "Live Preview" or if I set the argument via the "View arguments" field in the content type and edit an instance of the content type. However, like you I need to have the nid that is passed to the view be based on the Node that is currently being edited, and not a static value.
So I configured the argument as suggested in your post above with "Action to take if argument is not present" set to "Provide default", and the "Default argument type" set to "Node ID from URL". Unfortunately, when the view is accessed by the auto-complete, it does not seem to be able to get the node id from the path of the node that is being edited.
Am I completely misunderstanding what you are doing? Or perhaps I'm missing a configuration or module which allows the view to grab the node id? I'm reasonably sure that I've got my content type and view configured correctly as it works fine when I pass the a static value via the node reference field's "View arguments" field.
Thanks for any help.
Looks like autocomplete field is the problem
Looks like my problem is this: https://drupal.org/node/400294#comment-1350676
Unfortunately, I need the autocomplete field functionality. I've tried to apply the patch off the above link, but have not got it to work yet. Perhaps because I'm using the node reference create module on top of the node reference module, but more likely because the nodereference.module has changed quite a bit since the patch was created for it.
I got that patch working with
I got that patch working with a little tweak (I made a comment on that page you linked to). Thanks for directing me there in the first place.
View argument or filter for two related content types
Thanks for the explanation Webel. It seems straightforward, but it didn't solve my View argument.
I have two custom content types, let's say CCT1 and CCT2. For CCT1 I have a CCK node reference field that displays a list (which I created using a View) of CCT2 nids. The user must select -- and consequently, associate -- one CCT2 from the list.
I then created a new View that uses a Relationship for the CCK node reference field. For the argument, I followed your instructions for setting the Node ID from URL, and specified the node types: CCT1 and CCT2.
The View is a custom block that appears at the bottom of a CCT2 node/page. My site has many CCT2 node/pages. Currently, the View block is displaying all CCT1 nodes, when I only want it to display CCT1's that were specifically created for a particular CCT2 node.
The only way I've been able to display particular CCT1 nodes in my View block on a CCT2 page is by adding a filter for nid, but that option only gives me an "is equal to" (or similar inappropriate options) and a Value. I thought I could enter a token or something in the Value field, but I can't get it to work.
Any help is appreciated.
Thank you Webel!
I appreciate you putting forth an effort to explain this. I solved my problem following your simple procedure. THANK YOU
I actually set my Default argument: User ID from URL
Because of my argument type: "User relationships: Requester user", I needed to focus on the user as I had created a filter for User Reference--to filter out only a user's friends.
In fact my view looks very similar to the view that comes with the Relationships module: "user_relationships_browser" view, but needed your adjustment to get things to work right on my form.
Luck!
Another Thank You!
lol, I had the same problem - but in a completely unrelated way. Solved it again!
This time, I was trying to grab the Nid from the URL: www.mysite.com/node/1138/edit
So I have a node reference field, where I configure it for Select List. I'm trying to grab that NID and place it into the field so I can delineate this field according to the current author AND Nid.
Anyway, point is, I resolved this by going into views, Node view.
In arguments, select Node: Nid
click: Provide default argument
under: Default argument type, select: Node ID from URL
default argument
I would like to use an entity reference view to display a list of node items of entity type 'article' . This works well.
I would also like to use a field value of the edit/add entity type that I am creating reference from and use a field value from that same 'issue' entity type that is used as an argument to filter the referenced nodes, in this case by issue number, which is currently populated using a numeric list type.
Is there any way to do this? How could I do this using the php code option to reference the 'issue number' field that I would like to use as an argument or otherwise?
I need help webel
I have a jobApp content type and this has a node reference field that references a job content type. If someone creates a new application, the job field should provide a drop-down of all jobs but if someone visits a job ad directly and clicks "apply", they should be taken to the create page for a job app but with that job alone in the job menu. For the node reference field in job app, I used the "Advanced - Nodes that can be referenced" too and chose a view that displays all job titles if no argument is present and if the node id of a specific job is passed to the view, only that one job is displayed. So, this view correctly shows the names of all jobs when I don't put any arguments in the "View arguments" field of the content type field configuration but once I put an argument there, nothing displays in the job menu. The "apply" link takes me to node/add/application/15 so I have the node id of the job in question. How do I pass this to the view to select the appropriate node?
Any assistance would be greatly appreciated.
Have you tried using Node Reference URL Widget module
The module will allow you to reference the job-id in the url on the application page to give the node reference field an auto-populated value of the id title.
Can be found here -> http://drupal.org/project/nodereference_url
What is the actual format to use?
I am still trying to find an answer to the original question, which I understood as:
The same question applies to all reference fields that want to use a view.
Supplying arguments to Reference View D7
This is from a quick perusal of the code, so if I am way off base please forgive me.
From what I can tell, the arguments you specify are stored in the field settings. This is the general field information that is stored for ALL places the field is used. References accesses this information to supply the options you see in the form. However, it does this using hook_options_list which adds the options direct to the field definition on load. In addition, it calls the view directly, passing it the stored arguments from field settings. So, in essence it acts similarly to how the view would react if you typed the arguments into the form field for 'preview'.
So, short answer is that you can put anything that a conditional filter will understand as direct input in the view arguments but that is it. Nothing dynamic or based on other form input.
Re: Supplying arguments to Reference View D7
FYI I submitted a patch for this in D7:
Dynamic views arguments in node reference
https://www.drupal.org/node/1070622#comment-9074273
Need help !!
I have tried the patch as mentioned but I can't get this working. I want to populate one select box based on the selection of the other select made while creating a custom content type. I have made the necessary advanced view for field2 which requires the ID of the previous field say field1 to be passed(Content ID from URL). Now, I am unsure of exactly which token should be passed as the View arguments as the id of field1 is not present on the same page. Please let me know if this is an achievable task for the said setup. Thanks !