codeigniter url后缀.html + hashtag

时间:2011-03-28 22:52:42

标签: php html codeigniter

我想在codeigniter上使用hashtag构建一个url。示例:

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

我的config.php中的url_config是这样的:

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

我使用以下代码构建锚点:

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

如果您知道任何解决方案,请告诉我。感谢

2 个答案:

答案 0 :(得分:2)

这个怎么样?

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

它会返回一个这样的网址:http://example.org/blog/post/stackoverflowRocks.html#comments

答案 1 :(得分:1)

如果你想使用哈希标签而不必将'site_url()'传递给锚方法,你可以很容易地扩展CodeIgniter配置库类。

CodeIgniter配置库类有一个名为site_url的方法,在使用anchor方法时会运行该方法。默认情况下,site_url会在您传递给它的任何uri之后添加url_suffix,而不需要任何关注或知道哈希标记。幸运的是,您可以简单地扩展Config库类以修改site_url以检查哈希标记,并在添加url_suffix之后将它们添加到URI的末尾。

如果您感到如此强迫,复制下面的代码并将其保存在。您可能需要打开'/system/application/config/autoload.php'并将'My_Config.php'添加到自动加载库数组中。

<?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;
        }
    }
}
?>

新的site_url方法将$ hash设置为空字符串。如果在传入的链接中找到哈希标记,则链接将拆分为数组并传递给变量。 site_url现在将在url_suffix之后返回带有末尾附加的哈希标记的链接(如果存在哈希码)。