Highlight active link
12 posts by 5 authors in: Forums > CMS Builder
Last Post: March 9, 2010 (RSS)
By benedict - August 24, 2009
I have what hopefully is an problem. I wish for the active link to become highlighted when the visitor arrives at that page.
I have got this working in HTML no problem by adding a class called "active" to the <li>. You can see below:
<ul class="nav">
<li class="active"><a href="index.php" class="home">Home</a></li>
<li><a href="executive-recruitment.php?Who-Is-hunterPac-1" class="who">Who</a></li>
<li><a href="executive-recruitment.php?What-2" class="what">What</a></li>
<li><a href="executive-recruitment.php?Why-3" class="why">Why</a></li>
<li><a href="executive-recruitment.php?How-4" class="how">How</a></li>
<li><a href="contactus.php" class="contact">Contact</a></li>
</ul>
Now, who, what, why and how are all in a section called "Other Pages". How can I dynamically get the correct navigation point to highlight (i.e. have class of "active" added to the <li>) when the visitor reaches a page?
Thanks in advance.
B
Re: [benedict] Highlight active link
By Chris - August 25, 2009
If you're only worried about solving this for executive-recruitment.php, and you're going to hard-code links like that, one solution would be to test the current record's "num" field and insert some HTML if it matches on each link. For example:
<li<?php if ($record['num'] == 1) { echo ' class="active"'; } ?>><a href="executive-recruitment.php?Who-Is-hunterPac-1" class="who">Who</a></li>
<li<?php if ($record['num'] == 2) { echo ' class="active"'; } ?>><a href="executive-recruitment.php?What-2" class="what">What</a></li>
<li<?php if ($record['num'] == 3) { echo ' class="active"'; } ?>><a href="executive-recruitment.php?Why-3" class="why">Why</a></li>
<li<?php if ($record['num'] == 4) { echo ' class="active"'; } ?>><a href="executive-recruitment.php?How-4" class="how">How</a></li>
I hope this helps you out! Please let us know if you have any more questions or comments.
Chris
Re: [chris] Highlight active link
Thanks for taking the time out to help me. This worked a treat. Thanks!
Cheers,
Benedict
Re: [benedict] Highlight active link
By benedict - March 3, 2010
As a follow up to this one, I now have a bit more of an advanced need. This time instead of looking at the record number on the end, I have this:<a href="#" class="opener">
<span> <em>Short Courses</em> </span>
</a>
</a>
Now, I would like to show the active link for this, which is coded like this:
<a href="#" class="opener selected"><span> <em>Short Courses</em> </span>
</a>
</a>
The key is getting that "selected" word added in there for the class.
To explain further, I am using this in the head of the document to show the short courses naviagtion (I have done the same thing to show long courses and accredited courses):
//short courses navlist($courses_shortRecords, $courses_shortMetaData) = getRecords(array(
'tableName' => 'courses',
'where' => ' course_type LIKE "%Short Courses%" ',
));
So the bottom line is, that if the current record being shown on the detail page is a Short Course, I would like the Short Course section of the nav to be expanded (i.e. by having the word " selected" added to the opener class).
Thanks in advance.
Re: [benedict] Highlight active link
By Chris - March 3, 2010
Can you please attach the complete PHP source code for your page?
Chris
Re: [chris] Highlight active link
By benedict - March 3, 2010
Re: [benedict] Highlight active link
By Donna - March 3, 2010
--
support@interactivetools.com
Re: [benedict] Highlight active link
By Chris - March 4, 2010
So you have three subsets of records from your table, and you want to figure out which subset the currently selected record belongs to?
Assuming your currently selected record is $record, you can check if it's in a list (and if so, output " selected") like this:
<a href="#" class="opener<?php if (in_array($record['num'], array_pluck($courses_nationalRecords, 'num'))) { echo " selected" } ?>">
You can do this for each of your three lists, making sure to change the name of the list you're checking ($courses_nationalRecords above) for each.
I hope this helps. Please let me know if you have any questions.
Chris
Re: [chris] Highlight active link
By aev - March 5, 2010
Is this a shortcut for creating a foreach loop on the array, with an if statement checking for a match inside? If yes, it's great!
<a href="#" class="opener<?php if (in_array($record['num'], array_pluck($courses_nationalRecords, 'num'))) { echo " selected" } ?>">
-aev-