Искать  
 
   
 
Ошибка 404
Отправлено: 30 Май 2011 01:49 P.M.   [ Игнорировать ]
Студент
Avatar
RankRank
Всего сообщений:  117
Зарегистрирован  2010-01-21

Пытаюсь сделать ошибку 404 но почему то не редиректится на шаблон созданный для этого.

Примерно выглядит так:

{exp:channel:entries channel="news" limit="1" disable="member_data|category_fields|pagination"}

........

{if no_results}
{redirect
="site/404"}
{
/if}

{
/exp:channel:entries} 

Помогите пожалуйста решить проблему.

Профиль
 
 
Отправлено: 30 Май 2011 02:13 P.M.   [ Игнорировать ]   [ # 1 ]
Sr. Member
RankRankRankRank
Всего сообщений:  987
Зарегистрирован  2008-09-27

У тебя в глобальных настройках шаблона указана 404 страница?

Профиль
 
 
Отправлено: 30 Май 2011 02:27 P.M.   [ Игнорировать ]   [ # 2 ]
Студент
Avatar
RankRank
Всего сообщений:  117
Зарегистрирован  2010-01-21
Максим - 30 Май 2011 02:13 P.M.

У тебя в глобальных настройках шаблона указана 404 страница?

Включено все равно не редиректит.

Если включаю строгие URL то переход по любой ссылке ведет на страницу 404

Профиль
 
 
Отправлено: 30 Май 2011 02:33 P.M.   [ Игнорировать ]   [ # 3 ]
Sr. Member
RankRankRankRank
Всего сообщений:  987
Зарегистрирован  2008-09-27

Строиге ссылки не нужны.
Попробуй тогда написать

{if no_results}{redirect='404'}{/if} 
Профиль
 
 
Отправлено: 30 Май 2011 02:38 P.M.   [ Игнорировать ]   [ # 4 ]
Студент
Avatar
RankRank
Всего сообщений:  117
Зарегистрирован  2010-01-21
Максим - 30 Май 2011 02:33 P.M.

Строиге ссылки не нужны.
Попробуй тогда написать

{if no_results}{redirect='404'}{/if} 

Попробовал, результата не дало.
Точнее все работает но если только url_title полностью отличается а если убрать пару символов из правильного url тогда не редиректит.

Профиль
 
 
Отправлено: 30 Май 2011 03:20 P.M.   [ Игнорировать ]   [ # 5 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  644
Зарегистрирован  2009-04-11

Редирект на ошибку будет только если нет результатов, и тег {if no_results}{redirect=‘404’}{/if} находится внутри парного тега {exp:channel:entries}.

 Подпись 

Няшка, программист, фотограф, подкастер, блоггер и CEO студии FDCore Studio

Профиль
 
 
Отправлено: 30 Май 2011 03:35 P.M.   [ Игнорировать ]   [ # 6 ]
Студент
Avatar
RankRank
Всего сообщений:  117
Зарегистрирован  2010-01-21
NetSoul - 30 Май 2011 03:20 P.M.

Редирект на ошибку будет только если нет результатов, и тег {if no_results}{redirect=‘404’}{/if} находится внутри парного тега {exp:channel:entries}.

Ну вот например у меня есть url - http://www.site.ru/view/название_статьи, если сейчас я в конец этого url добавлю левые символы, например http://www.site.ru/view/название_статьи123, по идее должна быть ошибка 404?  У меня вместо этого выводятся все статьи которые только есть. Если наоборот убрать несколько символов из url та же ситуация.

Профиль
 
 
Отправлено: 30 Май 2011 03:57 P.M.   [ Игнорировать ]   [ # 7 ]
Студент
RankRank
Всего сообщений:  131
Зарегистрирован  2010-12-14

Это возникает из-за того что параметры для отбора получаются через url
(dynemic=“on”)
Можно попробовать сделать через embed шаблон (основной шаблон заменяем данным текстом, старый основной шаблон выносим в другой шаблон)

{exp:channel:entries}
   {if segment_N 
== url_title}
      {embed
="show_real_page"}
   {if
:else}
      {embed
="404"}
      {
!-- Или и можно вызвать редирект,а  не просто ембедить 404 страницу--}
   {
/if} 

Можно, по идее, проверять это через {total_count} != 1 (типа - пытаемся оторбразить более чем 1ну страницу)

{exp:channel:entries}
   {if total_count 
!= 1}
       {redirect
=‘404’}
   {
/if} 
Профиль
 
 
Отправлено: 30 Май 2011 04:00 P.M.   [ Игнорировать ]   [ # 8 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  644
Зарегистрирован  2009-04-11

http://eeclub.ru/docs2/modules/channel/parameters.html#par_req_entry

require_entry=“yes”

 Подпись 

Няшка, программист, фотограф, подкастер, блоггер и CEO студии FDCore Studio

Профиль
 
 
Отправлено: 30 Май 2011 04:15 P.M.   [ Игнорировать ]   [ # 9 ]
Студент
Avatar
RankRank
Всего сообщений:  117
Зарегистрирован  2010-01-21
NetSoul - 30 Май 2011 04:00 P.M.

require_entry=“yes”

Вот теперь все работает как надо!

Спасибо вам ребята за помощь.

Профиль
 
 
Отправлено: 30 Май 2011 04:28 P.M.   [ Игнорировать ]   [ # 10 ]
Студент
RankRank
Всего сообщений:  131
Зарегистрирован  2010-12-14

Да, спасибо )

Профиль
 
 
Отправлено: 10 Июнь 2011 06:48 P.M.   [ Игнорировать ]   [ # 11 ]
Студент
RankRank
Всего сообщений:  131
Зарегистрирован  2010-12-14

А что делать если страница имеет сложную структуру, и не хочется что бы отображалось что либо кроме 404 страницы (т.е. отображать 404 страницу без редиректа)
К примеру

<div>некоторый текст 1</div>
{exp:channel:entries require_entry=“yes” }
 {if no_result}
   {embed
="page/404"}  
 {
/if}
некоторый текст 3
{
/exp:channel:entries}
<div>некоторый текст 2</div

при отсутствии entry, хотелось бы что бы вывелось только содержимое page/404, но не выводился “некоторый текст 1” и тп

Профиль
 
 
Отправлено: 10 Июнь 2011 09:20 P.M.   [ Игнорировать ]   [ # 12 ]
Member
Avatar
RankRankRank
Всего сообщений:  224
Зарегистрирован  2010-11-20

Первое, что приходит на ум - переместить

{exp:channel:entries require_entry=“yes” } 

выше

<div>некоторый текст 1</div
Профиль
 
 
Отправлено: 10 Июнь 2011 11:53 P.M.   [ Игнорировать ]   [ # 13 ]
Студент
RankRank
Всего сообщений:  131
Зарегистрирован  2010-12-14

хм
а если будет к примеру два {exp:channel:entries} из разных каналов
тогда не удастся просто поместить весь код странички в {exp:channel:entries}

Профиль
 
 
Отправлено: 11 Июнь 2011 11:12 A.M.   [ Игнорировать ]   [ # 14 ]
Member
Avatar
RankRankRank
Всего сообщений:  224
Зарегистрирован  2010-11-20

@MaxStoun
Если вы указываете:

require_entry=“yes” 

Это предполагает, что один из признаков записи (url_title или entry_id) будет найден в URL.
Каких могут два канала при этом? smile

Профиль
 
 
Отправлено: 11 Июнь 2011 02:37 P.M.   [ Игнорировать ]   [ # 15 ]
Студент
RankRank
Всего сообщений:  131
Зарегистрирован  2010-12-14

Да, вы правы.
Это я что то затупил )
Ок, спасибо.

Профиль