В плагине есть возможность создавать различные формы ввода в зависимости от категории объявления, а также изменять внешний вид готового объявления в зависимости от категории. В этой статье я расскажу как установить связь между категорией и шаблонами, для это вам потребуется минимальные знания html и php.
Для начала предположим наш сайт (Городской портальчиг) имеет такую рубрикацию, а циферка справа от названия это ID категории:
- Новости 1
- Законы 2
- Финансы 3
- Объявления 4
- Недвижимость 5
- Квартиры 6
- Дома 7
- Участки 8
- Офисы 9
- Склады 10
- Автомашины 11
- Бытовая техника 12
- Услуги 13
- Разное 14
- Недвижимость 5
Итак открываем конфигурационный файл 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’; |
Мы должны задать массив 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 и уже выбор категории вам придется организовать самостоятельно.
Теперь переходим от ввода данных к отображение чего мы там наводили.
Шаблоны постов связываются с категориями через массив post_templates
$ads_config[‘post_templates’][‘Недвижимость’] = ‘/post_rent.php’; $ads_config[‘post_templates’][11] = ‘/post_auto.php’; $ads_config[‘post_templates’][‘default’] = ‘/post_default_template.php’;
123 | $ads_config[‘post_templates’][‘Недвижимость’] = ‘/post_rent.php’;$ads_config[‘post_templates’][11] = ‘/post_auto.php’;$ads_config[‘post_templates’][‘default’] = ‘/post_default_template.php’; |
Как видите система точно такая же можно использовать название рубрики sleg или id.
Надо отметить, что таким способом мы можем изменить вывод только тела сообщения, то есть основной текст то, что выводится функцией the_content(), а все, что находится выше ниже основного текста изменить не получится.
И еще один важный момент – каждому объявление присваивается мета поле ads_basecat это поле есть флаг того, что запись является именно объявлением, и это же поле определяет шаблон с помощью которого будет показана запись. Так вот если мы имеем такую форму ввода как я описывал выше с Недвижимостью, то в этом случае ads_basecat будет присвоено id Недвижимости, а не ее под категорий.
И если как писалось выше вы решили для всех категорий сделать одну форму используя ключ all то надо позаботится о том чтобы ads_basecat было присвоена какая то категория.
И напоследок напомню – обязательно сохранять все файлы в кодировке UTF8 -without BOM