Welcome Guest, Not a member yet? Register   Sign In
Breadcrumb library
#1

[eluser]Alex van der Vegt[/eluser]
Hi all,


Since i could not find any good breadcrumb library i start making one of my own. Below you can find the code if you are interested in this too.

You can define breadcrumbs but if you do not the library will guess them.

Below you will fine the library and how to use it:

Code:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Breadcrumbs
{
    // Variables
    var $obj;
    var $home = "Home";
    
    // Constructor
    function __construct()
    {
        $this->obj =& get_instance();
    }
    
    function addbreadcrumbs($breadcrumbs = null)
    {
        // Clear the previous breadcrumbs
        $this->obj->session->unset_userdata("breadcrumbs");
        
        // New breadcrumbs
        $new_crumbs = array("breadcrumbs" => array(array("title" => $this->home, "url" => "/")));
        
        if($breadcrumbs)
        {
            foreach($breadcrumbs as $crumb)
            {
                array_push($new_crumbs["breadcrumbs"], $crumb);
            }
        }
        
        // Guess breadcrumbs
        if(!$breadcrumbs && $this->obj->uri->segment(1))
        {
            $crumb = array("title" => ucfirst(str_replace("-", " ", $this->obj->uri->segment(1))), "url"     => "/" . $this->obj->uri->segment(1) . "/");
            array_push($new_crumbs["breadcrumbs"], $crumb);
            
            // Is segment two also available?
            if($this->obj->uri->segment(2))
            {
                $crumb = array("title" => ucfirst(str_replace("-", " ", $this->obj->uri->segment(2))), "url"     => "/" . $this->obj->uri->segment(2) . "/");
                array_push($new_crumbs["breadcrumbs"], $crumb);
            }
        }
        
        // Add to breadcrumbs to session
        $this->obj->session->set_userdata($new_crumbs);
        
        return true;
    }
    
    function showbreadcrumbs()
    {
        return $this->obj->session->userdata("breadcrumbs");
    }
}

?>

You can define breadcrumbs like this:

Code:
// Create breadcrumbs
$this->breadcrumbs->addbreadcrumbs(array(
    array(
        "title" => "This is the second crumb",
        "url" => "/blog/"
    ),
    array(
        "title" => "This is the third crumb",
        "url" => "/blog/category/article/"
    )
));

Showing is easy and can be done like this:

Code:
<ol>
    &lt;?
        $i = 1;
        foreach($this->breadcrumbs->showbreadcrumbs() as $crumb){
        if($i != count($this->breadcrumbs->showbreadcrumbs())){
        $i++;
        ?&gt;
        <li><a href="&lt;?= $crumb[">&lt;?= $crumb["title"] ?&gt;</a>&gt;</li>
        &lt;? }else{ ?&gt;                        
        <li class="selected">&lt;?= $crumb["title"] ?&gt;</li>
    &lt;? }} ?&gt;
</ol>

Also do not forget to autoload the breadcrumb and session libraries!




Theme © iAndrew 2016 - Forum software by © MyBB