user4746941
user4746941

Reputation: 13

How to make the class active only for the pages that are open

Here is my pages

index.php
blog.php
contact.php

I am using the common file.

Here is my problem

I want to show the class='active' only the pages that are open how can i do that

<a href='index.php' class='active'>Home</a>
<a href='blog.php' class='active'>Blog</a>
<a href='contact.php' class='active'>Contact</a>

If i show the class='active' for all pages it is not the correct but how can it show it for only the pages that is currently opened by identifying it by url

My url will be something like this

www.mywebsite.com/index.php
www.mywebsite.com/blog.php
www.mywebsite.com/contact.php

Note :

I am not using any framework i am just using core php

Upvotes: 1

Views: 43

Answers (1)

Sulthan Allaudeen
Sulthan Allaudeen

Reputation: 11310

You can do this by using the following steps

  1. Identifying the url

    http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]

  2. Exploding with / for getting the page name

  3. Taking the extension i.e., .php by using substr

  4. And putting it the remaining with the condition

So,

$Url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$Exploded = explode('/', $Url);
$LastPart = end($Exploded);
$ExactName = substr($LastPart, 0, -4);

And you will get the $ExactName as index or blog or contact.

So, from here you can make the conditions to display the class='active' as you required.

Condition :

I have done it simply altogether as $Page

$Page = substr(end(explode('/', "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]")), 0, -4);
$Class = 'class="active"';
<a href="index.php"<?php if($Page=='index' || $Page==''){ echo $Class; } ?> >Home</a></li>
<a href="about.php" <?php if($Page=='about'){ echo $Class; } ?>>About</a>
<a href="contact.php" <?php if($Page=='contact'){ echo $Class; } ?>>Contact</a></li>

Upvotes: 1

Related Questions