Вход для клиентов и партнеров
в начало сайта
Партнерская программаОнлайн демоСкачатьКарта сайта
 

Регламент
Документация
Часто задаваемые вопросы (FAQ)
Решения типовых вопросов
Форум поддержки
Библиотека разработчика

Посмотрите демо-ролики и убедитесь в том, что "Twilight CMS" очень удобна в управлении, понятна и проста.

Бесплатно скачайте "Twilight.Basic", установите на своем компьютере и изучите систему более детально.

Если вам нужно установить "Twilight CMS" на существующий сайт или разработать новый - обращайтесь в отдел интеграции.

 

Ваше имя
Ваш Email
Вопрос
Twilight.basic
  • Узнайте больше
  • Сравните версии
  • Twilight.selection
  • Узнайте больше
  • Сравните версии
  • Twilight.evolution
  • Узнайте больше
  • Сравните версии
  •  
    Главная // Библиотека разработчика // Справочники // Книга рецептов (Cookbook) // Стандартные решения типовых задач //

    Человеко-понятные URL (ЧПУ)


    Общая информация о ЧПУ в системе

    Для улучшения индексации сайта и других целей начиная с версии 4.39 в Selection и Evolution поддерживается механизм автоматической замены идентификаторов записей в URL типа sid=ABCDEF...09876 на читаемые, задаваемые в админзоне редактором сайта строки типа chpu_is_tesing.

    Для редактора сайта

    Редактору для тех сущностей, где определено наличие псевдонима (это определяется разработчиком) предоставляется поле для ввода. Если разработчик включил автоподсказчик - справа от поля будет кнопка o_O.

    Псевдонимы могут состоять только из латинских букв, цифр, символов - и _.

    Автоподсказчик - это кнопка, при нажатии на которую из русского заголовка, к примеру, "сегодня мы выпустили новую версию" создаст транслитерированный ужас "segodnya_my_vypystili_novuyu_versiyu" и вставит его в поле псевдонима. При повторном нажатии будет отбрасываться последний блок, то есть будут предлагаться варианты:

    segodnya_my_vypystili_novuyu
    segodnya_my_vypystili
    segodnya_my
    segodnya
    ... (после чего повторяется все сначала).

    Эта функция удобна если у вас есть записи с одинаковыми заголовками, но разным содержанием. Тогда можно отбросить хвост и сохранить псевдоним. Или, если есть время и желание, отредактировать предложенное название вручную.

    Для ускорения работы по мере ввода псевдонима в поле он будет проверяться на уникальность и правильность "на лету". Если все в порядке, то поле будет подкрашено в зеленый цвет, а если нет - в красный. При попытке сохранения псевдонима, который уже есть в системе, будет выдано сообщение об ошибке и сохранения не произойдет. Будьте внимательны.

    Для разработчика

    Чтобы задействовать данный механизм достаточно в сущность (файл entities.xml) добавить поле типа alias. В редакторе записи появится поле с возможностью задания читаемого псевдонима, который при последующих обращениях к сайту будет автоматически заменять в URL идентификатор записи и имя параметра.

    Пример:

    <entity id="news_item" name="Новость">
            <field id="caption" type="string" sortas="literal" name="Заголовок"/>
            <field type="alias" suggest="caption"/>
    </entity>

    Для изменения доступны только два ключа: type (должен иметь значение alias) и suggest. Suggest параметр необязательный, но без него работать неудобно. В нем разработчик задает имя поля, от которого автоподсказчик может образовать ЧПУ. В данном примере это поле caption, в котором находится заголовок новости.

    В остальном с точки зрения разработчика ничего не меняется, кроме того факта что мы рекомендуем ему забыть об aliasах записей вообще. Разработчик во всех шаблонах сайта должен использовать нотацию с параметрами (iid=..., sid=... и т.п.), замена будет произведена автоматически. Если разработчик напишел ЧПУ где-то в параметрах макросов - это работать не будет.

    Сами alias для всех сущностей вперемешку хранятся в отдельной таблице twl_aliases.dat. Её руками трогать нельзя ни в коем случае, поскольку иначе придется все alias перевводить, либо чинить базу алиасов (см. в конец статьи). Единственно что можно делать - удалять все псевдонимы путем удаления этой таблицы, что иногда бывает полезно для очистки.

    Текущие ограничения (для версии 4.43) и особенности

    Возможность введена в версию 4.39, но пока находится в бета. То есть мы планируем дорабатывать её и далее.

    • Нельзя импортировать записи вместе с псевдонимами (поле idalias игнорируется), хотя можно импортировать сам справочник twl_aliases (неудобно, будет переделываться).
    • При замене имен параметров в URL (sid, nid и т.п.) все корректно пересчитается, но всегда имена параметров разработчик для одних и тех же справочников обязан использовать одни и те же. По всему сайту. То есть нельзя в одном месте писать /news/?nid=..., а в другом /news/?iid=... - везде имя параметра должно быть одно и то же.
    • Псевдонимы нечувствительны к регистру (case-insensitive), но появятся они в ссылках на страницах именно в том виде, что были введены в админзоне.
    • После очистки базы и внесения какого-то ранее существовавшего псевдонима повторно нельзя будет напрямую обращаться к странице по старому URL. Она некорректно будет построена. Нужно сначала зайти на страницу, где есть ссылка на страницу с измененным alias. Страшного ничего нет, база будет перестроена сама автоматически при обходе сайта посетителями или поисковыми ботами, но на это может потребоваться время. По этой причине не рекомендуется без важной причины удалять файл Data/twl_aliases.dat. Также это важно, если вы прописали ссылку на страницу с алиасом, которая висит где-нибудь на главной странице сайта, а еще никто ни разу не заходил на страницу, где эта ссылка была сгенерирована в старом формате (с iid, к примеру). Поэтому, в таких случаях после простановки такой ссылки лучше сходить единожды на карту сайта, где ссылка появится в ЧПУ-форме, либо прописывать ссылку в традиционной форме (с iid), а уже система сама заменит её на ЧПУ-формат.
    • Контент-менеджер может вставлять ссылки на товары в каталогах, элементы справочников (новости и т.п.) в контент, но при изменении alias ссылочную целостность придется поддерживать вручную. Впрочем, в предыдущей версии изменение id товара также повлечет за собой необходимость коррекции ссылок на товар вручную. Просто id товара изменить можно только удалением/созданием нового товара, а псевдоним поменять гораздо проще.
    • В целях повышения быстродействия изменение или ввод нового псевдонима вызывает полную очистку кэша страниц (кроме изображений). Поэтому для нагруженных сайтов массовые изменения псевдонимов (например, первоначальный ввод) рекомендуется проводить в менее нагруженные часы, чтобы регенерация кэша производилась в более щадящем режиме.
    • Если база синонимов по каким-то причинам была повреждена, то алгоритм восстановления следующий:
      • открыть файл Data/twl_aliases.dat (по FTP)
      • удалить все строки в которых определен параметр guid
      • в оставшихся строках провести поиск и замену строки "param::некоезначение::" на "param::::" (то есть удалить все значения в ключах param
      • сохранить базу на сайте (по FTP)

    Часто задаваемые вопросы

    Вопрос: А можно ли сделать так, чтобы aliasы автоматически создавались, без участия человека.
    Ответ: См. описание макроса Form, при добавлении записи в справочник пользователем система может генерировать ЧПУ сама по определенным полям. Но результат будет не всегда "красивым". Других вариантов пока нет. Если у вас сложный случай, например, огромный сайт и вручную обработать много тысяч записей сложно - вы можете написать свой скрипт и создать базу twl_aliases.dat сами. Правила просты: ЧПУ должно быть уникально в пределах всего сайта и состоять из дозволенных символов. Поле param при создании базы должно быть пустым, система его заполнит потом сама. А сами записи просто связывают существующие id записей (уникальны в пределах системы) и ЧПУ-alias. Ничего заумного нет.

    Вопрос: Если у меня в каталоге товар и образованный от него ярлык (или несколько), то почему я не могу сделать для них одинаковый ЧПУ.
    Ответ: Пока ЧПУ должны быть уникальны для каждого элемента справочника. Разные ярлыки для системы по сути являются разными товарами. Также, для людей и поисковиков эти страницы будут разными (у них разные URL). Хотя поисковики могут по контенту "склеить" такие страницы, это не мешает ни людям, ни поисковикам. Мешает только контентщику, который будет придумывать столько уникальных названий для одного и того-же товара, сколько ярлыков, но мы пока не знаем как это обойти. К тому же это все равн может быть полезно для поисковой оптимизации.

    « к списку

    версия для печати

     
    © 2003-19 Страта Технологии (создание сайтов, разработка cms), Twilight CMS in english.
    Наш адрес: Москва, пр. Маршала Жукова д.51
    Тел.: (495) 222-6436, E-mail: , карта сайта, условия использования информации о CMS
    Звоните через Skype:  

    Реклама: