Маршрутизация URL на основе правил в стиле CodeIgniter в Expression Engine 2? - PullRequest
1 голос
/ 07 октября 2011

Итак, я новичок в разработке EE, но у меня достаточно обширный опыт работы с CI.

Я бы хотел настроить структуру URL следующим образом:

/channel-name/*
/channel-name/*/videos
/channel-name/*/shows
/channel-name/*/awards

Единственный способ сделать это сейчас - использовать условные выражения в шаблоне. Есть ли способ направить URL-адрес, аналогичный тому, как CodeIgniter позволил бы мне это сделать?

Опять, пожалуйста, прости мое невежество, если я упускаю что-то явно очевидное!

Спасибо.

Ответы [ 3 ]

3 голосов
/ 08 октября 2011

EE не имеет крутой маршрутизации, к которой вы могли бы привыкнуть в CI, Rails и т. Д. Вместо этого EE создан для обработки большей части логики из шаблона - что является благом для новичков и, возможно, раздражает других. опытные разработчики В шаблонах вы обычно будете использовать условные выражения, основанные на сегментах URL, для достижения целей маршрутизации.

В вашем случае, я бы, вероятно, довольно активно использовал теги embed. Встраивание - это хороший способ сделать много вещей в EE, потому что они помогают вам обойти некоторые изворотливые проблемы порядка разбора, которые EE имеет с вложенными циклами. Пример:

{exp:channel:entries channel="my_channel_name" url_title="{segment_2}" limit="1"}

  {if segment_3 == "awards"}
    {embed="channel/awards" entry_id="{entry_id}"
  {if:elseif segment_3 == "shows"}
    ...
  {if:else}
    {embed="/channel/basic_entry" entry_id="{entry_id}"}
  {/if}

{exp:channel:entries}

Что-то вроде Switchee может сделать управляющие операторы вроде этого немного лучше. http://www.google.ca/search?gcx=c&sourceid=chrome&ie=UTF-8&q=switchee

Вы также можете использовать Freebie http://devot -ee.com / add-ons / freebie (полное раскрытие, я сделал это), чтобы сказать EE не анализировать некоторые части URL, что дает вам немного больше свободы для игры с ним.

1 голос
/ 07 октября 2011

Использование категорий будет наиболее логичной таксономией в ExpressionEngine для ваших нужд и предоставит вам желаемую структуру URL.

По умолчанию сегменты категории URL ExpressionEngine выглядят следующим образом:

/index.php/template_group/template_name/CategoryID

Используя ваш пример, вы создадите группу категорий со следующими категориями:

  • Видео
  • Показывает
  • Награды

Многие разработчики называют свои группы шаблонов в соответствии с именем канала, что делает понимание URL-адресов ExpressionEngine логическим.

Из коробки ваши сегменты URL будут выглядеть так:

/index.php/channel-name/template-name/C1

Я бы порекомендовал установить Индикатор URL категории , чтобы вы могли использовать идентификатор (например, category) в своих URL для своих категорий вместо несемантических идентификаторов категорий.

Тогда URL-адреса категории будут выглядеть примерно так:

/index.php/channel-name/category/videos

Сделав еще один шаг, удалив index.php из URL-адресов ExpressionEngine , вы могли быдостижения:

/channel-name/category/videos

Как вы увидите в ExpressionEngine, гибкость URL-адресов и шаблонов обеспечивает множество способов организации и отображения ваших данных.

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

Модуль тегов Solspace , Tagger DevDemon и Taggable Джейми Рамбелоу - все три подходящих кандидата.

1 голос
/ 07 октября 2011

Вот хорошее объяснение маршрутов в EE.так как EE теперь CI2, то маршрутизация работает почти так же:

http://venodesigns.net/2011/05/07/when-expressionengine-defaults-are-not-enough/

...