Искать  
 
   
1 из 2
1
Q: Обработка ссылок
Отправлено: 13 Июль 2009 09:14 P.M.   [ Игнорировать ]
Новичок
Rank
Всего сообщений:  18
Зарегистрирован  2009-06-14

Привет,

подскажите плз как грамотнее организовать обработку ссылок.
я с ee недавно начал работать и не совсем въехал.

У меня есть шаблоны

news
news_body

есть ссылки вида

/news/ - главная страница новостей, содержащая анонсные блоки со свежими новостями.
/news/2009/07/13/3216 - т.е. должна отобразиться новость с id=3216, где 2009/07/13 - дата публикации новости.


С news все нормально, открывается по требующейся ссылке.
А вот с телом новости проблема.

у меня пока две идеи.

1. Парсить ссылку и реврайтить на нужный шаблон с помощью .htaccess

2. в шаблоне news проверять входящие параметры и в качестве основного контейнера  подключать или news_body или какой нить news_main

но оба варианта кажутся мне очень глупыми smile

Спасибо.

Профиль
 
 
Отправлено: 14 Июль 2009 02:08 A.M.   [ Игнорировать ]   [ # 1 ]
Новичок
Rank
Всего сообщений:  55
Зарегистрирован  2009-03-22

Я сам не большой специалист, но возможно вам подойдет использование сегментов url

http://eeclub.ru/docs/general/urls.html
http://eeclub.ru/docs/templates/globals/url_segments.html

ссылки разбиваются на элементы и в зависимости от их значения можно организовать вывод шаблонов.

Если я ошибаюсь, прошу меня поправить (к модераторам админстраторам и опытным пользователям smile )

Профиль
 
 
Отправлено: 14 Июль 2009 08:58 A.M.   [ Игнорировать ]   [ # 2 ]
Новичок
Rank
Всего сообщений:  18
Зарегистрирован  2009-06-14
pioneer - 14 Июль 2009 02:08 A.M.

Я сам не большой специалист, но возможно вам подойдет использование сегментов url

http://eeclub.ru/docs/general/urls.html
http://eeclub.ru/docs/templates/globals/url_segments.html

ссылки разбиваются на элементы и в зависимости от их значения можно организовать вывод шаблонов.

Если я ошибаюсь, прошу меня поправить (к модераторам админстраторам и опытным пользователям smile )

спасибо за ответ,

это похоже на способ 2. в шаблоне news проверять входящие параметры и в качестве основного контейнера  подключать или news_body или какой нить news_main

не очень красиво.

Профиль
 
 
Отправлено: 14 Июль 2009 10:59 A.M.   [ Игнорировать ]   [ # 3 ]
Студент
RankRank
Всего сообщений:  73
Зарегистрирован  2008-05-21
Didia_Sc - 14 Июль 2009 08:58 A.M.

это похоже на способ 2. в шаблоне news проверять входящие параметры ...

  Нет, не правильно!  Вам нужно сначала определиться со структурой шаблонов, чтобы в дальнейшем не возникали подобные вопросы.  Итак, если у вас /news/ - главная страница новостей и еще должны выводиться отдельные записи этого раздела, то это может быть организовано следующим образом: 

__news          группа шаблонов раздела новостей       |__index  шаблон для вывода всех записей раздела (в URL не отображается!)       |__show   - (как вариантшаблон для вывода одиночной записи 
  Его сегментная часть в данном случае выглядела бы так:
/news/show/3216 
  Для получения идентификатора используется следующая форма:
{exp:weblog:entries weblog=\"news\" orderby=\"date\" sort=\"desc\" limit=\"1\" disable=\"member_data|trackbacks\"
  Если между главным шаблоном и шаблоном вывода новости используются вложения, то идентификатор записи (id) вытягивается из сегмента текущего url, а запрос на ее выдачу строится с использованием модуля SQL-запросов:
{exp:query sql=\"SELECT * FROM tbl_weblog_data WHERE weblog_id = 1 AND e.entry_id=\'{segment_6}\'\"

  В запросе SELECT * означает - выбрать все поля данной записи. Все полученное выкладываем в нужные места шаблона традиционным способом. Стоп! - Нетрадиционным, потому-что, если хотим вывести {title}, то в запросе нужно указывать не *, а перечень нужных полей в форме \“field_id_4 as title\” и т. д...

Профиль
 
 
Отправлено: 14 Июль 2009 10:59 A.M.   [ Игнорировать ]   [ # 4 ]
Новичок
Rank
Всего сообщений:  18
Зарегистрирован  2009-06-14

т.е. структура кода в шаблоне news/index примерно такая

{if segment_3 == ‘’}
{embed=“news/anons”}
{if:else}
{embed=“news/news_body”}
{/if}
а внутри news_body использовать segment_3, segment_4 и т.д. для нужной выборки, верно?

есть ли другие варианты?

Профиль
 
 
Отправлено: 14 Июль 2009 11:02 A.M.   [ Игнорировать ]   [ # 5 ]
Новичок
Rank
Всего сообщений:  18
Зарегистрирован  2009-06-14
Sezarin - 14 Июль 2009 10:59 A.M.
Didia_Sc - 14 Июль 2009 08:58 A.M.

это похоже на способ 2. в шаблоне news проверять входящие параметры ...

Нет, не правильно!

Вам нужно сначала определиться со структурой шаблонов, чтобы в дальнейшем не возникали подобные вопросы.

Итак, если у вас /news/ - главная страница новостей и еще должны выводиться отдельные записи этого раздела, то это может быть организовано следующим образом:

__news          группа шаблонов раздела новостей
      
|__index  шаблон для вывода всех записей раздела (в URL не отображается!)
      |
__show   - (как вариантшаблон для вывода одиночной записи 

Его сегментная часть в данном случае выглядела бы так:

/news/show/3216 

Для получения идентификатора используется следующая форма:

{exp:weblog:entries weblog="news" orderby="date" sort="desc" limit="1" disable="member_data|trackbacks"

Если между главным шаблоном и шаблоном вывода новости используются вложения, то
идентификатор записи (id) вытягивается из сегмента текущего url, а запрос на ее выдачу
строится с использованием модуля SQL-запросов:

{exp:query sql="SELECT * FROM tbl_weblog_data WHERE weblog_id = 1 AND e.entry_id='{segment_6}'"

В запросе SELECT * означает - выбрать все поля данной записи.
Все полученное выкладываем в нужные места шаблона традиционным способом.
Стоп! - Нетрадиционным, потому-что, если хотим вывести {title}, то в запросе нужно
указывать не *, а перечень нужных полей в форме “field_id_4 as title” и т. д...


Да, действительно мне нужно определиться со структурой шаблонов.

Использовать в шаблонах прямые SQL запросы считается плохим тоном да и не секьюрно. Поэтому хотелось бы этого избежать.

Профиль
 
 
Отправлено: 14 Июль 2009 11:08 A.M.   [ Игнорировать ]   [ # 6 ]
Новичок
Rank
Всего сообщений:  55
Зарегистрирован  2009-03-22

2 страницы как писал Sezarin

в index выводятся всe заголовки новостей, ставятся ссылки на страницу одиночной записи с помощью {url_title_path=news/show},  сегменты при использовать не нужно. Движок сам извлекает нужную информацию.

А чем вас не устраивает такой вариант ? В этом и есть преимущество EE.

Профиль
 
 
Отправлено: 14 Июль 2009 11:10 A.M.   [ Игнорировать ]   [ # 7 ]
Студент
RankRank
Всего сообщений:  73
Зарегистрирован  2008-05-21

Грамотно построенный SQL запрос способен заставить работать EE в несколько раз быстрее, а плохим тоном эту технику программирования называют те, кто не может этого делать!
Ах, ну да - EE ведь создан не для ленивых “типа программистов”...
Как подтверждение того - опять-же читаем: http://habrahabr.ru/blogs/ExpressionEngine/64304/

Профиль
 
 
Отправлено: 14 Июль 2009 11:12 A.M.   [ Игнорировать ]   [ # 8 ]
Новичок
Rank
Всего сообщений:  55
Зарегистрирован  2009-03-22

вот примерный код


news/index:

{exp:weblog:entries weblog="news" disable="categories|custom_fields|member_data|trackbacks}

<a href="
{url_title_path=news/show}">{title}</a></br>


{/exp:weblog:entries} 

show

{exp:weblog:entries weblog="news" limit="1" disable="categories|custom_fields|member_data|trackbacks}

{title}
{content}

{/exp:weblog:entries} 

вообще есть хорошая статья, мне помогла когда только начинал, но она правда на английском:

http://www.train-ee.com/courseware/free-tutorials/category/building-a-small-business-site/

Профиль
 
 
Отправлено: 14 Июль 2009 11:12 A.M.   [ Игнорировать ]   [ # 9 ]
Студент
RankRank
Всего сообщений:  73
Зарегистрирован  2008-05-21
pioneer - 14 Июль 2009 11:08 A.M.

2 страницы как писал Sezarin в index выводятся всe заголовки новостей, ставятся ссылки на страницу одиночной записи с помощью {url_title_path=news/show},  сегменты при использовать не нужно. Движок сам извлекает нужную информацию.  А чем вас не устраивает такой вариант ? В этом и есть преимущество EE.

  Верно, если нет промежуточных сегментов! - читать внимательно...

Профиль
 
 
Отправлено: 14 Июль 2009 11:15 A.M.   [ Игнорировать ]   [ # 10 ]
Новичок
Rank
Всего сообщений:  55
Зарегистрирован  2009-03-22

использовать категории ?

Профиль
 
 
Отправлено: 14 Июль 2009 11:20 A.M.   [ Игнорировать ]   [ # 11 ]
Новичок
Rank
Всего сообщений:  55
Зарегистрирован  2009-03-22

погорячился )
не подходит такой вариант для первого поста. слишком там много получится категорий.

Профиль
 
 
Отправлено: 14 Июль 2009 11:43 A.M.   [ Игнорировать ]   [ # 12 ]
Новичок
Rank
Всего сообщений:  18
Зарегистрирован  2009-06-14
Sezarin - 14 Июль 2009 11:10 A.M.

Грамотно построенный SQL запрос способен заставить работать EE в несколько раз быстрее, а плохим тоном эту технику программирования называют те, кто не может этого делать!
Ах, ну да - EE ведь создан не для ленивых “типа программистов”...
Как подтверждение того - опять-же читаем: http://habrahabr.ru/blogs/ExpressionEngine/64304/

Войдет какой нить контент манагер и дропнет базюку (если нет ограничения на SQL-запросы)

Я не ленивый, я параноик smile

Профиль
 
 
Отправлено: 14 Июль 2009 11:44 A.M.   [ Игнорировать ]   [ # 13 ]
Новичок
Rank
Всего сообщений:  18
Зарегистрирован  2009-06-14
pioneer - 14 Июль 2009 11:12 A.M.

вот примерный код


news/index:

{exp:weblog:entries weblog="news" disable="categories|custom_fields|member_data|trackbacks}

<a href="
{url_title_path=news/show}">{title}</a></br>


{/exp:weblog:entries} 

show

{exp:weblog:entries weblog="news" limit="1" disable="categories|custom_fields|member_data|trackbacks}

{title}
{content}

{/exp:weblog:entries} 

вообще есть хорошая статья, мне помогла когда только начинал, но она правда на английском:

http://www.train-ee.com/courseware/free-tutorials/category/building-a-small-business-site/

Спасибо большое с буржуйскими языками нет проблем smile

Прочту и проникнусь smile

Профиль
 
 
Отправлено: 14 Июль 2009 11:48 A.M.   [ Игнорировать ]   [ # 14 ]
Новичок
Rank
Всего сообщений:  18
Зарегистрирован  2009-06-14
Didia_Sc - 14 Июль 2009 11:43 A.M.
Sezarin - 14 Июль 2009 11:10 A.M.

Грамотно построенный SQL запрос способен заставить работать EE в несколько раз быстрее, а плохим тоном эту технику программирования называют те, кто не может этого делать!
Ах, ну да - EE ведь создан не для ленивых “типа программистов”...
Как подтверждение того - опять-же читаем: http://habrahabr.ru/blogs/ExpressionEngine/64304/

Войдет какой нить контент манагер и дропнет базюку (если нет ограничения на SQL-запросы)

Я не ленивый, я параноик smile

И еще по поводу лени:

http://eeclub.ru/forum/viewthread/164/P45/#6009

если так дело пойдет то точно преимуществ EE над CI не останется.

p.s. сорри за оффтопик

Профиль
 
 
Отправлено: 14 Июль 2009 11:53 A.M.   [ Игнорировать ]   [ # 15 ]
Новичок
Rank
Всего сообщений:  18
Зарегистрирован  2009-06-14
Sezarin - 14 Июль 2009 11:10 A.M.

Грамотно построенный SQL запрос способен заставить работать EE в несколько раз быстрее ...
Как подтверждение того - опять-же читаем: http://habrahabr.ru/blogs/ExpressionEngine/64304/

в плане оптимизации статейка хорошая, спасибо

Профиль
 
 
   
1 из 2
1