Искать  
 
   
 
Как определить конкретную запись?
Отправлено: 02 Октябрь 2011 11:20 P.M.   [ Игнорировать ]
Новичок
Rank
Всего сообщений:  33
Зарегистрирован  2011-10-02

Как определить, что сейчас просматривается конкретная запись, а не раздел. Например, раздел /news/ и конкретная запись /news/123/, где 123 - ID записи.

Был вариант:

{if segment_2 == ""}
    Раздел
{if
:else}
    Конкретная запись
{
/if} 

Но отпал, т.к. помимо подразделов в {segment_2} может быть навигация по страницам и другие разделы.

Вариант с дополнительным шаблоном (например /news/view/123/) тоже не вариант.

Профиль
 
 
Отправлено: 03 Октябрь 2011 12:19 A.M.   [ Игнорировать ]   [ # 1 ]
Студент
RankRank
Всего сообщений:  131
Зарегистрирован  2010-12-14

можно попробовать

{if segment_2 == "{url_title}"
Профиль
 
 
Отправлено: 03 Октябрь 2011 12:35 P.M.   [ Игнорировать ]   [ # 2 ]
Sr. Member
RankRankRankRank
Всего сообщений:  987
Зарегистрирован  2008-09-27

Я Обычно делаю так:

{if segment_2 == "" || segment_2 == 'pages'}
   тут выводимв се новости в параметрах weblog
entries указываем paginate_base='news/pages'
{if:else}
    тут лучше сделать так {embed
=news/..entry} и в шаблоне .entry вставить код вывода уже конкретной записиЭто сделано для нормального определния 404 ошибки и порой перескаются всякие uurl_title или entry_id с какими-нибудь цифрами еще
{
/if} 
Профиль
 
 
Отправлено: 03 Октябрь 2011 08:14 P.M.   [ Игнорировать ]   [ # 3 ]
Новичок
Rank
Всего сообщений:  33
Зарегистрирован  2011-10-02

А если в разделе /news/ может быть много разных подразделов?

Структура такая:
/news/ - раздел
/news/123/ - одна запись по {entry_id}
/news/single/ - одна запись по {url_title}
/news/dir/ - подраздел
/news/dir/123/ - одна запись по {entry_id}
/news/dir/single/ - одна запись по {url_title}

Нужна всего одна глобальная переменная, которая определяет наличие в URL entry_id. И я так понимаю она где-то точно есть, ведь {exp:channel:entries} как-то определяет показывать одну запись или список. Например, если в шаблоне /news/ использовать тег:

{exp:channel:entries channel="news" limit="10"}
    
    
<a href="{entry_id_path=news}">{title}</a>
    
{/exp:channel:entries} 

Он выведет 10 записей. И если кликнуть на одну ссылку он покажет одну конкретную запись. Значит как-то определяет, что там {entry_id} или {url_title}, а не категория или пагинатор.

Профиль
 
 
Отправлено: 05 Октябрь 2011 01:41 P.M.   [ Игнорировать ]   [ # 4 ]
Новичок
Rank
Всего сообщений:  33
Зарегистрирован  2011-10-02

А что если для записей указывать полный URI? Ну т.е. делать записи страницами, а страницы уже используют свой шаблон. Какие последствия могут возникнуть? smile

Получится как-то так:
/phones/ - раздел (/template_group/)
/phones/nokia/ - подраздел (/template_group/template/)
/phones/nokia/n9 - одна запись (она же страница с URI /phones/nokia/n9)

Профиль
 
 
Отправлено: 07 Октябрь 2011 02:22 A.M.   [ Игнорировать ]   [ # 5 ]
Новичок
Rank
Всего сообщений:  33
Зарегистрирован  2011-10-02

Попался вот такой плагин - http://devot-ee.com/add-ons/segment-search

Сам еще не заюзал, но выглядит подходящим для решения сабжа. Ну т.е. он не определяет entry_id, но может найти регуляркой навигацию по страницам.

Профиль
 
 
Отправлено: 07 Октябрь 2011 06:21 P.M.   [ Игнорировать ]   [ # 6 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  891
Зарегистрирован  2008-01-07

не очень понятно что именно должно получиться в конечном итоге  rolleyes  выдернуть entry_id из сегмента не зная  точно в каком именно он сегменте? ну как вариант можно использовать Last Segment

Профиль
 
 
Отправлено: 16 Апрель 2012 11:08 P.M.   [ Игнорировать ]   [ # 7 ]
Новичок
Rank
Всего сообщений:  33
Зарегистрирован  2011-10-02

Вот такое решение получается с помощью Switchee 2.x:

{exp:switchee variable="{segment_2}" parse="inward"}

    {case value
="#^P(\d+)$#|''" default="Yes"}
        
        Каталог и пагинатор

    {
/case}
    
    {case value
="#^(\D+)$#"}

        {switchee variable
="{segment_3}" parse="inward"}

            {case value
="#^P(\d+)$#|''" default="Yes"}

                Каталог
бренд и пагинатор

            {
/case}

            {case value
="#^(\D+)$#"}

                {switchee variable
="{segment_4}" parse="inward"}
                    
                    {case value
="" default="Yes"}

                        Конкретная модель

                    {
/case}

                    {case value
="specification"}

                        Спецификации 
конкретная модель

                    {
/case}

                {
/switchee}
                
            {
/case}

        {
/switchee}
        
    {
/case}
    
{
/exp:switchee} 

Структура:

/catalog
/catalog/page-<num>
/catalog/<brand>
/catalog/<brand>/page-<num>
/catalog/<brand>/<model>
/catalog/<brand>/<model>/specification

Профиль
 
 
   
 
 
‹‹ Low Variables      $prefix в Pagination.php ››