Добавить .html в конце каждой записи

4ksner

Постоялец
Регистрация
6 Июн 2012
Сообщения
149
Реакции
62
Знаю, что EE очень плотно работает с сегментами в УРЛ. Но все же - Реально ли добавить в конце каждой записи .html? Как это делают многие движки.
Если не средствами движка, то может через .htaccess?
Кто-нибудь заморачивался?

UPDATE:
Пришло в голову неожиданно простое решение:
При публикации новости в поле с УРЛ на конце добавить .html :D
Это конечно круто, только хотелось бы автоматизировать этот процесс.
Как это можно сделать?
 

4ksner

Постоялец
Регистрация
6 Июн 2012
Сообщения
149
Реакции
62
Попробовал MX Title Control.

Прописал для канала в URL Title Pattern вот это {url_title}.html.
Изначально при публикации насторожило что поле URL исчезло. Но в итоге я получил запись с нормальным УРЛом и .html на конце.
Спасибо!
 

denik

Постоялец
Регистрация
1 Июл 2011
Сообщения
80
Реакции
40
Мне больше нравится мое решение, которое я когда-то постил на EEClub:
===============
Вообще EE не отбрасывает .html в конце запроса.
Наверно самым правильным будет, научить его это делать
Открываем файл
./system/core/core.system.php
Там ищем строку (примерно #124)
PHP:
if (isset($uri))
    {
        $uri = str_replace(array("\r", "\r\n", "\n", ':',':','/','/'), array('', '', '', ':', ':', '/', '/'), $uri);
Добавляем после:
PHP:
 // Cut .html|.htm|.shtml|.php
        if( preg_match("/(.*)(?=\.html|\.htm|\.shtml|\.php)/",$uri, $match) && isset($match[1]) )
        {
            $uri = $match[1];
        }
================
Таким образом, можно прописать .html даже для шаблонов - и оно будет верно обрабатываться.
Но это решение исключает выше приведенное, т.к. ".html" - будет вырезаться из запроса.
 

budulay

Гуру форума
Регистрация
8 Апр 2006
Сообщения
283
Реакции
88
Для новой версии ЕЕ 2.х я так понимаю нужно править ./system/expressionengine/core/EE_URI.php ?
 

4ksner

Постоялец
Регистрация
6 Июн 2012
Сообщения
149
Реакции
62
Т.е. ваш код мы вставляем в ./system/core/core.system.php чтобы при переходе по ссылке {url_title}.html ЕЕ корректно понимал что за новость он должен показать? И без этого кода ЕЕ просто не найдет новость.
Правильно я понял?

По поводу ЕЕ 2 самому интересно.
 

denik

Постоялец
Регистрация
1 Июл 2011
Сообщения
80
Реакции
40
чтобы при переходе по ссылке {url_title}.html ЕЕ корректно понимал что за новость он должен показать?
да. это глобальная настройка - при этом и шаблоны можно будет так открывать.

Инструкция для EE 2.x:
Открываем файл ./system/expressionengine/core/EE_URI.php
Ищем:
PHP:
    function _explode_segments()
    {
        if ($this->uri_string == '')
        {
            return;
        }
Добавляем после:
PHP:
// Cut .html|.htm|.shtml|.php
        if( preg_match("/(.*)(?=\.html|\.htm|\.shtml|\.php)/",$this->uri_string, $match) && isset($match[1]) )
        {
            $this->uri_string = $match[1];
        }
Имейте введу, что ссылки типа:
/site/index.html/bla-bla-bla
и
/site/index.html
- будут одинаковыми (т.к. по регулярке, все что поле .html - будет обрезано)
если надо иначе - правим регулярку ;)
 

xcss

Постоялец
Регистрация
22 Окт 2009
Сообщения
67
Реакции
23
EE2+
1. Идем сюда: CP Home --> Config File Editor
2. Находим пустое поле: $config['url_suffix']
3. Вставляем туда значение: .html
4. Сохраняем изменения.
Вы сделаны...
 

4ksner

Постоялец
Регистрация
6 Июн 2012
Сообщения
149
Реакции
62
EE2+
1. Идем сюда: CP Home --> Config File Editor
2. Находим пустое поле: $config['url_suffix']
3. Вставляем туда значение: .html
4. Сохраняем изменения.
Вы сделаны...
Уже пробовал, это не работает.
EE не поддерживает эту настройку. Эта настройка для прямого использования в CodeIgniter.

Тут подробности:
Для просмотра ссылки Войди или Зарегистрируйся
I’m sorry but this is a feature of CodeIgniter that is not used by ExpressionEngine. You could use the URL title suffix for entries, but you would have to hack ExpressionEngine for it to affect other links (or enable an extension that extends a standard library). If you don’t mind that, you’ll want to start with the create_url() method of the Functions library.
 

xcss

Постоялец
Регистрация
22 Окт 2009
Сообщения
67
Реакции
23
EE как раз и поддерживает эту настройку, так как использует классы CodeIgniter.
Но, и в EE и в CI эта функция, естественно, работает только для чтения.
И никакого волшебства здесь нет и быть не может.
Система не будет, да и не должна каким либо магическим методом тут и
там приклеивать суффиксы в url. Это задача для иных, сторонних решений.
Для внешних ссылок, к примеру, имеется механизм перезаписи
запрашиваемой строки url в модуле Apache, настройки которого
доступны в файле .htaccess. Если нужно приклеить суффикс к url_title
добавляемой записи - это можно решить, например, редактированием
js-скрипта, который интерпретирует строку поля в форме сабмита.
Или, как вариант, написать расширение и повесить его на крюк,
вызываемый в конце сабмита.
И в первом и в другом случае, все те прицепы будут храниться в БД.
А оно вам надо?
Посему, лучше уж раз и навсегда вписать это в шаблон и забыть про него.
Ну если уж много и часто приходится этим заниматься, или не хотите видеть
в коде нативное расширение - сохраните егов переменной, так будет красивее...
 
Сверху