1

I have a list of entries and I am trying to create at the top a list of titles that can be clicked on so the page will scroll to the body. The following is not working because when I use entry_id it is writing out the entire URL/entry_id

<div class="list">
    {exp:channel:entries channel="mychan" category="2"}    
        <div class="mytitle"><a href="{entry_id}">{title}</a></div>
    {/exp:channel:entries} 
</div>

{exp:channel:entries channel="mychan" category="2"}    
    <div class="ele">
        <div class="mytitle"><a href="#entry_id">{title}</a></div>
        <div class="mybody">{mybody}</div>
     </div>
{/exp:channel:entries}   
user391986
  • 29,536
  • 39
  • 126
  • 205

1 Answers1

3

It's not writing out the entire URL/entry_id. The href is only the entry_id, which the browser automatically converts to http://your-site.com/entry_id. For an internal link, it needs have a # symbol.

Also, internal link names have some other requirements:

ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").

So they can't just be a number; you need to start with a letter at least.

So in your first {exp:channel:entries} loop linking to the entry, change the link href to this (or something similar):

<a href="#entry_{entry_id}">{title}</a></div>

And in the second loop, repeat that (without the #) as an ID on your wrapping div:

<div class="ele" id="entry_{entry_id}">
  ...
</div>
Community
  • 1
  • 1
unexplainedBacn
  • 768
  • 4
  • 13