我想在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.'"');
如果您知道任何解决方案,请告诉我。感谢
答案 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之后返回带有末尾附加的哈希标记的链接(如果存在哈希码)。