kakomerengue
kakomerengue

Reputation: 11

codeigniter url suffix .html + hashtag

I want to build an url with hashtag on codeigniter. Example:

"http://www.example.com/blog/post/title.html#comments"

The url_config in my config.php is this:

$config['url_suffix'] = ".html";

And I used the following code to build the anchor:

anchor('blog/post/'.url_title($post->title, 'dash', TRUE).'#comments', 'comments', 'title="'.$post->title.'"');

If you know any solution please let me know it. Thanks

Upvotes: 1

Views: 4912

Answers (2)

luciddreamz
luciddreamz

Reputation: 2093

If you want to use hash tags without having to pass 'site_url()' to the anchor method you can extend the CodeIgniter Config library class fairly easily.

The CodeIgniter Config library class has a method called site_url that runs when you use the anchor method. site_url, by default, adds the url_suffix after any uri you pass to it without any care or knowledge of hash tags. Fortunately, you can simply extend the Config library class to modify site_url to check for hash tags and add them to the end of the URI after the url_suffix is added.

If you feel so compelled, copy the code below and save it under '/system/application/libraries/MY_Config.php'. You may have to open up '/system/application/config/autoload.php' and add 'My_Config.php' to the autoload library array.

<?php
class MY_Config extends CI_Config {
    function site_url($uri = '')
    {
        if (is_array($uri))
        {
            $uri = implode('/', $uri);
        }

        if ($uri == '')
        {
            return $this->slash_item('base_url').$this->item('index_page');
        }
        else
        {
            $suffix = ($this->item('url_suffix') == FALSE) ? '' : $this->item('url_suffix');
            $hash = '';
            if(substr_count($uri,'#') == 1)
            {
                list($uri,$hash) = explode('#',$uri);
                $hash = '#'.$hash;
            }
            return $this->slash_item('base_url').$this->slash_item('index_page').trim($uri, '/').$suffix.$hash;
        }
    }
}
?>

The new site_url method sets $hash to an empty string. If a hash tag is found in the link you pass in, the link is split into an array and passed into variables. site_url will now return the link with the hash tag appended at the end (if hash code is present) after the url_suffix.

Upvotes: 1

Ragnar123
Ragnar123

Reputation: 5204

How about this?

anchor(site_url('blog/post/'.$post->title)."#comments");

It returns an url like this: http://example.org/blog/post/stackoverflowRocks.html#comments

Upvotes: 2

Related Questions