URL суффикса codeigniter .html + хэштег - PullRequest
1 голос
/ 29 марта 2011

Я хочу построить URL с хэштегом на codeigniter. Пример:

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

url_config в моем config.php это:

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

И я использовал следующий код для создания якоря:

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

Если вы знаете какое-либо решение, пожалуйста, дайте мне знать. Спасибо

Ответы [ 2 ]

2 голосов
/ 29 марта 2011

Как насчет этого?

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

Возвращает URL-адрес, подобный следующему: http://example.org/blog/post/stackoverflowRocks.html#comments

1 голос
/ 29 марта 2011

Если вы хотите использовать хеш-теги без передачи метода site_url () методу привязки, вы можете легко расширить класс библиотеки CodeIgniter Config.

В классе библиотеки CodeIgniter Config есть метод site_urlкоторый запускается при использовании метода привязки.site_url по умолчанию добавляет url_suffix после любого uri, который вы передаете ему, без какой-либо заботы или знания хеш-тегов.К счастью, вы можете просто расширить класс библиотеки Config, чтобы изменить site_url для проверки хеш-тегов и добавить их в конец URI после добавления url_suffix.

Если вы чувствуете себя таким вынужденным, скопируйтекод ниже и сохраните его в «/system/application/libraries/MY_Config.php».Возможно, вам придется открыть «/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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...