[ads_cat]

[ads_cat] – в зависимости от категории, выбранной на первом этапе, скрывает или показывает часть формы.
Код имеет спец. атрибута для установки категорий:

  1. id – задает id категориикатегорий (через запятую), если пользователь выбрал эту категорию, содержимое кода будет показано
  2. slug – задает ярлык (slug) категориикатегорий (через запятую)
  3. cat_name – задает название рубрики или список рубрик через запятую, в которых будет показано содержимое контейнера

Обратное условие ! если перед любым значение поставить знак ! условие будет инвертировано (как PHP) содержимое контейнера будет показано только в том случае, если пользователь не выбрал указанную категорию.
Использовать можно только один атрибут все остальные будут проигнорированы. Прямое и обратное условие объединяются через оператор ИЛИ то есть если для одной категории задать одновременно прямое и обратное условие то мы получим в результате TRUE – блок будут показан всегда.

Рассмотрим примеры использования.

Для этого предположим, что на сайте у нас используется рубрикация как на сайте доска объявлений г.Ильичевска
возьмем фрагмент списка :

  • Недвижимость (21:nedvizhimost)
    • квартиры (37:kvartiryi)
    • дома (39:doma)
    • земля/участки (40:zemlya-uchastki)
    • коммерция/бизнес (41:kommertsiya-biznes)
    • новострой (42:novostroy)
    • риелторские услуги/работа (44:rieltorskie-uslugi-rabota)
  • Транспорт (22:transport)
    • автомобили (45:avtomobili)
    • мотоциклы/мопеды (46:mototsiklyi-mopedyi)
    • грузовые/автобусы (47:gruzovyie-avtobusyi)
    • катера и другое (48:katera-i-drugoe)
    • запчасти/аксессуары (49:selhoz-cpetstehnika)
    • автосервис/работа (50:avtoservis-rabota)
    • запчасти/аксессуары (51:zapchasti-aksessuaryi)

В скобках указан ID категории и ярлык (slug).

Допустим если пользователь выбрал категорию квартиры или дома потребуем ввести пользователя общую площадь в м.кв.

[AdsForm ads_base_category=19 ] [ads_breadcrumbs/]<br /> Заголовок:<br /> [ads_input name=»post_title» size=»100″/]<br /> Расположение:<br /> Текст:<br /> [ads_textarea name=»post_content» cols=»80″ rows=»10″ /]<br /> … … [ads_cat id=37,39] Общая площадь: [ads_input name=»ads_area» size=»5″ terms=»is_numeric($)» emsg=»Не правильный формат площади только цифры и точка: 34.4″ /]<br /> [/ads_cat] ……. [ads_buttons/]<br /> [/AdsForm]

123456789101112131415161718 [AdsForm ads_base_category=19 ][ads_breadcrumbs/]<br />Заголовок:<br />[ads_input name=»post_title»  size=»100″/]<br />Расположение:<br />Текст:<br />[ads_textarea name=»post_content» cols=»80″ rows=»10″ /]<br />[ads_cat id=37,39]    Общая площадь:    [ads_input name=»ads_area»    size=»5″ terms=»is_numeric($)»    emsg=»Не правильный формат площади только цифры и точка:  34.4″ /]<br />[/ads_cat]…….[ads_buttons/]<br />[/AdsForm]

Другой пример : добавим поле цена ads_price, оценить можно много чего однако в рубриках риелторские услуги/работа и автосервис/работа цена не уместна – тут предполагается размещать только сведения об услугах из соответствующей области.
тогда фрагмент формы может быть таким:

…. [ads_cat id=!44,!50] Цена: [ads_input name=»ads_price»/]<br /> [/ads_cat] ….

12345 ....[ads_cat id=!44,!50]    Цена: [ads_input name=«ads_price»/]<br />[/ads_cat]....

Поле цена будет доступно везде кроме рубрик с id 44 и 50.

Вложение тегов

Очень печально, что Shortcode API не поддерживает полноценное вложение тегов. Нельзя вкладывать код сам в себя, поэтому пришлось придумать обходной маневр – с каждым вложением добавляем префикс _cat

…… [ads_cat slug=transport] [ads_cat_cat slug=!avtoservis-rabota,!zapchasti-aksessuaryi] Вы выбрали категорию <strong>Транспорт</strong>! Поэтому надо ввести некоторые детали! Объем двигателя: [ads_input name=»ads_volume»/]<br /> Год выпуска: [ads_input name=»ads_year»/]<br /> [/ads_cat_cat] [/ads_cat] …..

123456789 ......[ads_cat slug=transport]    [ads_cat_cat slug=!avtoservisrabota,!zapchastiaksessuaryi]        Вы выбрали категорию <strong>Транспорт</strong>! Поэтому надо ввести некоторые детали!        Объем двигателя: [ads_input name=»ads_volume»/]<br />        Год выпуска: [ads_input name=»ads_year»/]<br />    [/ads_cat_cat][/ads_cat].....

В категории Транспорт добавляем поля ввода Объем двигателя и Год выпуска но в категориях запчасти/аксессуары и автосервис/работа запрещаем выводить эти поля.

Строго говоря предыдущий пример с ценой неправильный, ведь кроме недвижимости и транспорта есть другие рубрики и под рубрики поэтому, нам надо сделать сложно подчиненое условие

…. [ads_cat slug=nedvizhimost,transport] [ads_cat_cat slug=!rieltorskie-uslugi-rabota,!avtoservis-rabota] Цена: [ads_input name=»ads_price»/]<br /> [/ads_cat_cat] [/ads_cat] ….

1234567 ....[ads_cat slug=nedvizhimost,transport]    [ads_cat_cat  slug=!rieltorskieuslugirabota,!avtoservisrabota]        Цена: [ads_input name=«ads_price»/]<br />    [/ads_cat_cat][/ads_cat]....

Первый блок ads_cat сработает только в категории nedvizhimost или transport. Второй блок ads_cat_cat сработает везде кроме категорий rieltorskie-uslugi-rabota и avtoservis-rabota

Рекомендую использовать ярлыки категорий вместо id или имени, тогда вы всегда сможите поменять имя категории. Ну не понравилось вам мое название риелторские услуги/работа, захотите просто услуги агентов недвижимости – нет проблем меняете название, ярлык остается – форму трогать уже не надо. Привязка к id – тоже не лучший вариант, если придется переносить сайт с одного хостинга на другой при импорте БД все ID поменяются опять переделывать форму. Ярлык не меняется.