Когда я добавляю третий сегмент в мой URL-адрес выражения, exp: channel: records перестает возвращать результаты - PullRequest
3 голосов
/ 05 августа 2011

У меня проблема с тем, что третий «сегмент» в URL приведет к тому, что ALL exp: channel: записи прекратят возвращать результаты.

Примеры URL-адресов: отлично работает: siteurl.com/index.php/one/two не работает: siteurl.com/index.php/one/two/three

Пример ввода ввода: {exp: channel: records channel = "my_channel" category = "18" sort = "asc" search: show_toggle = "= SHOW" orderby = "sort_order"}

Это какая-то инъекция, которую яне знают о.Я искал документацию, и из того, что я могу сказать, моя спецификация категории должна перезаписывать что-либо в URL.Я, может быть, испортил это, но там должно быть что-то, что я могу сделать.Что-то, что я могу изменить в модуле канала?

Ответы [ 2 ]

5 голосов
/ 06 августа 2011

Без использования параметра тега dynamic в теге Записи канала ExpressionEngine имеет значение , ожидающее Переменную сегмента URL, содержащую идентификатор записи или заголовок URL вашей записи.

Поскольку третий сегмент URL /index.php/one/two/three не является числовым идентификатором записи или заголовком URL, ваш запрос записей канала не содержит никакой информации.

Установив dynamic="no", вы убедитесь, что на список ничего не передается в URL.

Поскольку вы написали крайне специфичный Запрос записей канала, обязательно добавьте dynamic="no" в ваш цикл тегов {exp:channel:entries}, чтобы ExpressionEngine игнорировал сегменты URL и вместо этого использовал предоставленные вами параметры:

{exp:channel:entries channel="my_channel" dynamic="no" ...}
    ...
{/exp:channel:entries}

Кроме того, добавив к своему коду простую Условную переменную , вы сможете увидеть сообщение, когда результаты не будут возвращены:

{exp:channel:entries channel="my_channel" ... }
    {if no_results}Sorry, No Results{/if}

    ...
{/exp:channel:entries}

Похищение фундаментального URL-адреса ExpressionEngine концепций и Сегменты URL важны для понимания и устранения проблем, подобных этой.

3 голосов
/ 05 августа 2011

ExpressionEngine рассматривает сегменты, следующие за /index.php/, следующим образом:

  • первый сегмент считается группой шаблонов
  • предполагается, что следующим сегментом будет имя шаблона в этой группе шаблонов
  • , а третьим сегментом будет либо url_title записи, либо,если сегмент числовой, то entry_id записи

Итак, в вашем случае EE пытается загрузить шаблон two из одна группа шаблонов, а затем отобразить запись из канала my_channel , которая находится в категории с идентификатором 18 и имеет url_title three .

Ваша спецификация категории только перезаписывает любую категорию информацию в URL.(например, / template_group / template / category / doorstops или / template_group / template / C10 не повлияет на то, какие записи будут отображаться в вашем примере).

Если выЕсли ваш тег {exp:channel:entries} полностью игнорирует URL (за исключением нумерации страниц), вы можете добавить dynamic="off" к параметрам тега.

...