Назначение формы, привязка к рубрикам

Страницы – формы

Форма ввода может быть создана только на статической странице! Только там будут работать шоткоды.
По умолчанию работает шаблон ./template/form_default_template.php

Чтобы указать свой шаблон удобно использовать шоткод, создаем статическую страницу и пишем :

[AdsForm name_template=form_test.php /]

1 [AdsForm name_template=form_test.php /]

name_template – имя формы. подробнее об [AdsForm]

Старые способы версии плагина 3.х также будут работать:

<!—AdsForm—>

1 <!AdsForm>

Привязка к рубрикам

Если включен выбор категории как отдельный этап, тогда у нас есть возможность каждой конкретной рубрике назначить свою форму.

Предположим наш сайт (Городской портальчиг) имеет такую рубрикацию, а циферка справа от названия это ID категории:

  • Новости 1
  • Законы 2
  • Финансы 3
  • Объявления 4
    • Недвижимость 5
      • Квартиры 6
      • Дома 7
      • Участки 8
      • Офисы 9
      • Склады 10
    • Автомашины 11
    • Бытовая техника 12
    • Услуги 13
    • Разное 14

Итак открываем конфигурационный файл ads_config.php и пишем

$ads_config[‘form_templates’][‘Недвижимость’] = ‘/ads_rent_form.php’; $ads_config[‘form_templates’][‘auto’] = ‘/ads_auto_form.php’; // автомашины $ads_config[‘form_templates’][12] = ‘/texno_form.php’; $ads_config[‘form_templates’][‘default’] = ‘/form_default_template.php’;

12345 $ads_config[‘form_templates’][‘Недвижимость’] = ‘/ads_rent_form.php’;$ads_config[‘form_templates’][‘auto’] = ‘/ads_auto_form.php’;  // автомашины$ads_config[‘form_templates’][12] = ‘/texno_form.php’; $ads_config[‘form_templates’][‘default’] = ‘/form_default_template.php’;

*заготовка конфига смотрите в ads_config.php_

Мы должны задать массив form_templates указываем ключ = имя файла, в качестве ключа можно использовать Имя категории, slug или ID категории – на ваш выбор.
Как видно из примера мы назначили рубрике Недвижимость свою собственную форму ввода это файл ads_rent_form.php .
Другой вариант это использовать slug рубрики, как это сделано для категории Автомашины и еще вариант это для ипользование ID как это сделанно для категории Бытовая техника указанно 12.
Ну и наконец для всех остальных вариантов мы назначаем форму по умолчанию form_default_template.php.

Все шаблоны должны располагаться в папке /templates плагина

Обратите внимание на то, что назначив рубрике Недвижимость свою форму, мы, тем самым прекращаем процесс выбора рубрик и переходим к форме ввода, но в Недвижимости ведь есть еще под рубрики, поэтому в форме придется самостоятельно организовать дополнительный элемент управления чекбокс или флажки либо переключатели, для того чтобы пользователь мог выбрать эти подрубрики.
Вот приме как это можно сделать для нашей недвижимости – пишем в шаблоне /ads_rent_form.php :

<?php if($post[‘ads_basecat’]){ $args .= ‘&child_of=’.$post[‘ads_basecat’]; } elseif($_GET[‘ads_basecat’]){ $args .= ‘&child_of=’.$_GET[‘ads_basecat’]; }; if($ads_options[‘ads_exclude’]){ $args .= ‘&exclude=’.$ads_options[‘ads_exclude’]; }; $cat = get_categories($args); foreach ($cat as $key=>$value) { $category.=»$value->name<input name=’post_category[]’ type=’checkbox’ value=’$value->term_id’ />»; } ?> // далее в форме выводим список <tr><td>Категория*</td><td><?=$category?></td></tr>

123456789101112131415161718 <?phpif($post[‘ads_basecat’]){    $args .= ‘&child_of=’.$post[‘ads_basecat’];}elseif($_GET[‘ads_basecat’]){  $args .= ‘&child_of=’.$_GET[‘ads_basecat’];};if($ads_options[‘ads_exclude’]){   $args .= ‘&exclude=’.$ads_options[‘ads_exclude’];};$cat = get_categories($args);foreach ($cat as $key=>$value) {    $category.=«$value->name<input name=’post_category[]’ type=’checkbox’ value=’$value->term_id’ />»;}?>// далее в форме выводим список <tr><td>Категория*</td><td><?=$category?></td></tr>

! Если мы хотим вообще пропустить этап выбора категории, нам надо назначить шаблон all

$ads_config[‘form_templates’][‘all’] = ‘/all_form.php’;

1 $ads_config[‘form_templates’][‘all’] = ‘/all_form.php’;

Теперь как только пользователь перейдет на страницу Добавить объявление ему будет сразу выведена форма /all_form.php и уже выбор категории вам придется организовать самостоятельно.

ads_basecat флаг объявления

Каждому объявление присваивается мета поле ads_basecat это поле есть флаг того, что запись является именно объявлением, и это же поле определяет шаблон с помощью которого будет показана запись. Так вот если мы имеем такую форму ввода как я описывал выше с Недвижимостью, то в этом случае ads_basecat будет присвоено id Недвижимости, а не ее под категорий.
И если как писалось выше вы решили для всех категорий сделать одну форму используя ключ all то надо позаботится о том чтобы ads_basecat было присвоена какая то категория.

И напоследок напомню – обязательно сохранять все файлы в кодировке UTF8 -without BOM

Если необходимо что бы объявление закидывалось во все родительские рубрики то ставим фильтр

function all_check($_post){ $_post[‘post_category’] = ads_get_parents_id($_post[‘ads_basecat’]); return $_post; } add_filter(‘ads_check_fields’, ‘all_check’);

12345 function all_check($_post){   $_post[‘post_category’]  = ads_get_parents_id($_post[‘ads_basecat’]);   return $_post;}add_filter(‘ads_check_fields’, ‘all_check’);