I put the replacement pattern [view_node] in the Link path field and get href="/view" instead of the path to the node. If I display the Node: Link field, it's displayed as:

Link: view

The word "view" is a link to the node so the field when displayed works but not when used as replacement pattern. The pattern [view_node] result in the word 'view' instead of the path to the node.

My view has three fields:

Node: Body
Node: Link
Node: Title

Defaults: Configure field Node: Title
[x] Output this field as a link
Link path:
[view_node]
Alt text:
[body]

The resulting links all have href="/view". How can I get the href to point to the node?

Comments

merlinofchaos’s picture

Category: bug » support
Status: Active » Fixed

When you put another field into a view, you're going to get the entirety of the field. So when you use view_node, you're not just getting the path, you're getting the entire <a> tag. This is almost certainly not what you want.

You probably want to do it the other way around, where you rewrite the view link output to alter its output to the title and the alt text to the body.

mattyoung’s picture

Status: Fixed » Active

>You probably want to do it the other way around, where you rewrite the view link output to alter its output to the title and the alt text to the body

I still have the same problem: what do I put in the "Link path" in the "Node: Link" field? To set alt text, I must check "Output this field as a link". But with this checked, I need to enter the "Link path".

Here is what I did: change the order of my fields:

Node: Body (not displayed)
Node: Title (not displayed)
Node: Link

Configure field Node: Link

[x] Rewrite the output of this field
Text:
[title]

[x] Output this field as a link
Link path:
????? <======= what do I put in here?
Alt text:
[body]

mattyoung’s picture

Status: Active » Closed (won't fix)

I found a way:

Instead of "Node: Link", use "Node: Nid" field

In "Node: Title",

[x] Output this field as a link

Link path:
node/[nid]

Alt text:
[body]

kthull’s picture

Is Link path: node/[nid] the only way? That blows the whole SEO friendly url component out of the water.

ETA: Just played around some more with this and for my purposes, I need an image link to point back to the node via a "more info" button. I added a Node: nid field, changed its output to be the html to call up the more info image and checked off the box that says to link this field to its node.

Not exactly a fix, but providing the functionality of the Node: link with [view_node] replacement in a roundabout sort of way.

Thanks,
Kevin

mattyoung’s picture

>That blows the whole SEO friendly url component out of the water.

Actually no, the link node/[nid] becomes the alias if it has one so no problem for SEO.

tierecke’s picture

I don't agree with it.
I tried your suggestion a few times, and the link always remained node/[nid].
I wonder how I can get the link without the

mattyoung’s picture

I'm not sure how it happens to work for me. It could be because I'm using http://drupal.org/project/globalredirect

Are you using this module? If you care about SEO, you need it. Install it and try again.

merlinofchaos’s picture

If using [nid] you need to be sure that Node: Nid is added as a field. Set it to 'exclude'. Make sure that Node: Nid comes *before* Node: Title as they are order dependent.

Jeffsus’s picture

I had this same exact problem, and the suggestion to use GlobalRedirect did the trick. Even though you specify /node/[nid], GlobalRedirect automatically switches that out with the correct pathauto url before it even hits the page.

jayajha’s picture

While I understand the there is alternative of using [nid], should the existing problem still not get fixed? Isn't [view_node] supposed to output correct link? Having to install one more module (global redirect) just to fix this does not sound very appealing to me.

Or am I missing something here?

Jaya

merlinofchaos’s picture

No, it [view_node] will contain the text, not the underlying link.

ressa’s picture

I don't use Global Redirect module, but node/[nid] links are still converted to its alias, so the module doesn't seem to be necessary. I am using Drupal 6.14.

houen’s picture

It works fine for me too with node/[nid]
At first I thought it didn't, but it turned out to be because I had forgot the "node/" part - if you miss this it'll just write the node id number

pipsqueaks’s picture

Status: Closed (won't fix) » Needs review

I had the same issue that mattyoung had and I think that this should be looked at. It would be helpful, at least, to expose the URL to a comment as one of the fields.

The problem is that I was using views to create a list of comments by a particular user and there wasn't any way to link the body of the comments back to the originating comment. The node/[nid] (or an equivalent cid) trick wouldn't work because the URL to a comment includes more variable content than just the cid (i.e. 'forum/politics#comment-767').

I came up with a workaround that may be helpful to someone else. The comment body doesn't have the little checkbox that says "Link this field to its comment". But the comment title does. So I made the comment body come first in the list and set it to not display. Then I added the comment title field, used the "Rewrite the output of this field" feature to refer to the comment body, and changed the label to "Comment". It's a bit of a hack to use the comment title field to refer to the body, but it worked.

dawehner’s picture

Status: Needs review » Active

Needs review means there is a patch.

merlinofchaos’s picture

Status: Active » Closed (won't fix)

Sigh.

It's not possible. [view_node] will contain <a href="http://foo">text</a> and when you try to put that within a link the <a> gets stripped out and you're left with "text". That can't actually be fixed unless you think it's reasonable (and it's not) that we should actually go trying to parse HTML to find the data you *think* should be there. It is there, but not in the way you think it should be. That field provides a LINK to a node, not the URL of the node.

pipsqueaks’s picture

How about making that optional checkbox "Link this field to its comment" appear in all of the comment fields, not just the title? Or, if not all, at least the comment body field?

In my case, comments don't have titles, so it was necessary to use the truncated comment body field as a link.

cerylio’s picture

If you want your Path of the Node, just use the field Node: Path. Make sure you set on: Use absolute link (begins with "http://"). Then you can use the [path] pattern to use it as primary link and put whatever you want behind it.

rickupdegrove’s picture

I wanted a "Read more..." link in some views feeds I just created.

After trying a everything on this page It was invalid XHTML because of the issue here

I also tried everything at http://drupal.org/node/391250

Several hours later I remembered a site I built a year ago has this feature

When I use Views in D6, In Fields this is what I do...

Add "Node: Link"
In "Text to display:" I use
Read more...

That is *all* I have to do to get SEO friendly "Read More" links in my "Views"

jindustry’s picture

Here's another method that may output SEO friendly links. I added the Node:path field, selected "Rewrite the output of this field", and added the following in the textarea: <a href="[path]">[name]</a>

I wanted to link a Location:name, [name], to it's parent node. Remember, token availability is order dependent, so in this case Location:name had to appear before Node:path for the string above to work. I tried #19, rickupdegrove's method, but it didn't seem to work with the dynamic rather than static link text.

tescometro’s picture

#20 using node:path, worked out for me, and works as expected thanks.

I'm really not sure that [view_node] is working as it should.

quote from #16:

"Sigh.

It's not possible. [view_node] will contain text and when you try to put that within a link the gets stripped out and you're left with "text". That can't actually be fixed unless you think it's reasonable (and it's not) that we should actually go trying to parse HTML to find the data you *think* should be there. It is there, but not in the way you think it should be. That field provides a LINK to a node, not the URL of the node."

Actually if I use the [view_node] token in another fields' path, where you'd expect you actually get

this doesn't make any sense to me at all, and surely can't be as intended..see here too http://drupal.org/node/658872, the penultimate comment describes it best I think.

Anyway, thanks to jindustry for an alternative.

maxplus’s picture

Hi,
I also had problems with this.
Now my solution is also to add "Content: Path" instead of the "Content:link"-field.
When adding the token of "Content: Path" to the "read more" path, everything works fine, no Global redirect module used.

Lux Delux’s picture

I can confirm the above works.

Especially if you're using Pathauto.

Just remember, in the 'Content: Path' check 'use absolute URL'.

Then in the field you want to be the link, just put [path]. Works like a charm

pratip.ghosh’s picture

Issue summary: View changes

FYI, works automatically in Drupal 7, with the [nid] component...

mattyoung’s picture

good thing. will give it a try some time later

thanks!

sharif.tanveer’s picture

thumbs up for #23

works like charm

muranod’s picture

Thank you #22 and 23! -- This works for Drupal 8 as well.