Nikita

Выводить разные блоки контента в зависимости от раздела (категории), к которой принадлежит страница

Recommended Posts

Здравствуйте! :)

Подскажите, как решить следующую задачу:

 

Чтобы при открытии пользователем страниц с отдельными объявлениями (карточек объекта) на странице располагались блоки контента (текста), при этом:

 

- если объявление относится к категории "Дома", то выводится один контент, а если, например, к категории "Участки", то другой

 

Корректно ли в этом случае использовать такую формулу:

 

{if $grid_items.type='Дома'}

текст

{?if}

 

{if $grid_items.type='Участки'}

текст

{?if}

 

Пытался внедрить, но что-то не получается.... :huh:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подход в принципе верну, исполнение не то.

 

В карточке объекта данные объекта доступны в двух переменных

 

{$data} и {$data_shared} - первая это все данные "обрезанные" согласно настроек видимости по группам, вторая - полный набор, без учета групп.

 

Нужные вам переменные доступны как

{$data.topic_id.value} - в виде идешки категории и

{$data.topic_id.value_string} - в виде текстового имени (Дома) категории

Вот их и можете использовать. Лучше цифровое - так как имя вы можете сменить, а идешка останется та же.

{$data.topic_id.value==30}тут для домов (ид=30){elseif $data.topic_id.value==33}тут для участков (ид=33){/if}

Только стоит учесть, что эти значения охватывают именно раздел объекта.

Если у вас

Квартиры ид=1

.... 1комн квартиры ид=2

и объект из категории "1комн квартиры", то применять правило можно только к ид=2, так как о том, что по факту вложенности объект расположен так же и в ид=1 (Квартиры), сам объект не знает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

... Хочется напихать туда текста с поисковыми словами :)

А вот для этих случаев Яша и запустил Минусинск :) Есть желание весенне-осенний сезон провести с нулевой посещаемостью?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А вот для этих случаев Яша и запустил Минусинск :) Есть желание весенне-осенний сезон провести с нулевой посещаемостью?

Спасибо Вам за предупреждение, постараюсь не переусердствовать :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подход в принципе верну, исполнение не то.

 

В карточке объекта данные объекта доступны в двух переменных

 

{$data} и {$data_shared} - первая это все данные "обрезанные" согласно настроек видимости по группам, вторая - полный набор, без учета групп.

 

Нужные вам переменные доступны как

{$data.topic_id.value} - в виде идешки категории и

{$data.topic_id.value_string} - в виде текстового имени (Дома) категории

Вот их и можете использовать. Лучше цифровое - так как имя вы можете сменить, а идешка останется та же.

{$data.topic_id.value==30}тут для домов (ид=30){elseif $data.topic_id.value==33}тут для участков (ид=33){/if}

Только стоит учесть, что эти значения охватывают именно раздел объекта.

Если у вас

Квартиры ид=1

.... 1комн квартиры ид=2

и объект из категории "1комн квартиры", то применять правило можно только к ид=2, так как о том, что по факту вложенности объект расположен так же и в ид=1 (Квартиры), сам объект не знает.

 

А в каком файле или разделе Админки можно узнать ИД для категорий?

 

И еще:

 

1) в случае текстового имени оно дожно заключаться в '    ' или нет?

2) обязательно ли использовать elseif или можно использовать более простой вид типа:

 

{if $data.topic_id.value==30}

текст

{/if}

 

3) Это нормально, что в Вашем примере не открывающего {if}   ?

 

4) По {$data_shared} "полный набор, без учета групп" означает, что можно указывать условием данные любых переменных сайта, например принадлежности объекта к району или даже ID пользователя?

 

5) Где можно узнавать переменные и их значения?

 

6) Можно ли назначать условием сочетание данных двух и более переменных? Каким тегом?

 

Если вопросы нелепые, прошу меня извинить, поскольку чайник ))))))))))))))))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1) да

2) нет. условия сами по себе исключающие, так что можно и двумя блоками if

3) не нормально)пропустил))

4) скорее следует читать как "из этой переменной вы можете получить даже те значения, которые по правилам видимости не доступны текущему смотрящему пользователю."

5) $data.topic_id.value - толстым выделено системное имя поля из модели data. Подставляя туда нужное системное имя из Редактора форм, можно получить доступ к нужному полю данных.

6) {if $data.topic_id.value==30 && $data.city_id.value==1} - если нужно условие И

{if $data.topic_id.value==30 || $data.city_id.value==1} - если нужно условие ИЛИ

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А в каком файле или разделе Админки можно узнать ИД для категорий?

 

И еще:

 

1) в случае текстового имени оно дожно заключаться в '    ' или нет?

2) обязательно ли использовать elseif или можно использовать более простой вид типа:

{if $data.topic_id.value==30}текст{/if}

3) Это нормально, что в Вашем примере не открывающего {if}   ?

4) По {$data_shared} "полный набор, без учета групп" означает, что можно указывать условием данные любых переменных сайта, например принадлежности объекта к району или даже ID пользователя?

5) Где можно узнавать переменные и их значения?

6) Можно ли назначать условием сочетание данных двух и более переменных? Каким тегом?

Если вопросы нелепые, прошу меня извинить, поскольку чайник ))))))))))))))))

 Id категории можно узнать в разделе структура в админке.

1.Зависит от случая. Да можно.

2.можно если должно выполняться именно это условие и больше ни какое.

3.бывает опечатаемся.

4 и 5 пунктом можно узнать переменные , есть пример для их полученеия.

<pre>{$user_array|@print_r}</pre>

Вместо юзер своя переменная

6. Тут снова зависит от случая если к примеру нужно условие ( если используем параметр и этот параметр то указываем условие между ними || )

полное описание тут http://www.smarty.net/docsv2/ru/language.function.if.tpl

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подскажите а как вывести "полный путь" размещения объявления?
Вывод требуется в "полное описание" объявления
Если сейчас поставить
{$data.topic_id.value} то выводится просто цифра категории  например "1"
если поставить {$data.topic_id.value_string}  то выведится просто название категории в котором размещно оъявление например "3комнатная"
а хотелось бы чтобы вывелась полная структура где размещено объявление
например вот так
"продажа/квартир/новостройки/3комнатная"
подскажите что то типа path как вывести?
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Может есть смысл присмотреться к этому комментарию - 

и сделать заголовок с условиями, если ID категории имеет такой-то номер, то показывать категорию в заголовке таким образом...

например, если ID=1 то в заголовке показываем "Комната в аренду..." (заранее прописанные соответствия категорий в заголовки)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
30 минут назад, Chernetskiy сказал:

Может есть смысл присмотреться к этому комментарию -

и сделать заголовок с условиями, если ID категории имеет такой-то номер, то показывать категорию в заголовке таким образом...

например, если ID=1 то в заголовке показываем "Комната в аренду..." (заранее прописанные соответствия категорий в заголовки)

Возможно кому то и подходит. но у нас желание не title сформировать в зависимости от ID категории, а именно в полное описание объявления воткнуть, возможно и можно переменную вставлять, но хотелось бы, чтобы просто без дополнительной "правки в код" выносилась категория, так как категории могут и добавляться и удаляться :)  а потом вспоминай где-что привязали
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 28 февраля 2016 г. в 11:06, abushyk сказал:

1) да

2) нет. условия сами по себе исключающие, так что можно и двумя блоками if

3) не нормально)пропустил))

4) скорее следует читать как "из этой переменной вы можете получить даже те значения, которые по правилам видимости не доступны текущему смотрящему пользователю."

5) $data.topic_id.value - толстым выделено системное имя поля из модели data. Подставляя туда нужное системное имя из Редактора форм, можно получить доступ к нужному полю данных.

6) {if $data.topic_id.value==30 && $data.city_id.value==1} - если нужно условие И

{if $data.topic_id.value==30 || $data.city_id.value==1} - если нужно условие ИЛИ

 

Подскажите а как грамотно и правильно вывести переменную в новый  подключаемый файл. То есть при просмотре именно карточки объявления определяем ID города, потом делаем подключение файла методом инклайд, а в нем отдельно уже пишем условия вывода того или иного контента в зависимости от ID города. Нужно чтобы обработка в подключаемом файле  работала корректно и желательно не теряя значение переменной.
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подскажите а как добавить новое поле в структуру разделов ?
То есть сейчас есть возможность назвать каталог введя обозначение категории в поле "Название", то есть туда вводится значение как оно будет выводиться на сайте. пример на фото

Подскажите как туда добавить новое поле доступное для редактирования только администратору

Например хотим вставить поле "Сокращенное название"
через что? где? и как?

 

косте.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас