Шаблоны ads wordpress

В плагине есть возможность создавать различные формы ввода в зависимости от категории объявления, а также изменять внешний вид готового объявления в зависимости от категории. В этой статье я расскажу как установить связь между категорией и шаблонами, для это вам потребуется минимальные знания html и php.
Для начала предположим наш сайт (Городской портальчиг) имеет такую рубрикацию, а циферка справа от названия это 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';

Мы должны задать массив 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 .= '&amp;child_of='.$post['ads_basecat'];
}
elseif($_GET['ads_basecat']){
  $args .= '&amp;child_of='.$_GET['ads_basecat'];
};
if($ads_options['ads_exclude']){
   $args .= '&amp;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';

Теперь как только пользователь перейдет на страницу Добавить объявление ему будет сразу выведена форма /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';

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

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

Обсуждение на сайте:

Рубрика:  мая 15, 2010.
/ » » »


Похожие записи:

36 Responses to Шаблоны ads wordpress

  1. anton says:

    При использовании чекбоксов почему-то не передает номер выбранной подкатегории. Добавляет объявление в коневую категорию((

  2. anton says:

    10 раз прочитай — потом спроси )))
    Забыл добавить post_category в $ads_config['ads_fields_form']

  3. Serg says:

    Здравствуйте, в первую очередь хочу спасибо сказать за отличный плагин.

    Как можно сделать так что при добовлении объявлении можно было выбрать под под категорию. Сейчас я выбираю категорию, потом подкатегорию а уже под-под категорию не могу выбрать.

  4. Rusl says:

    А где можно скачать тему как у ili.com.ua или наподобие чтобы номер объявления виден был

  5. says:

    Исправьте в последних абзацах ads_bascat на ads_basecat, а то я прямо из мануала скопировал, и долго потом тупил, почему это у меня метаполе не выводится =)

  6. admin says:

    о спасибо большое исправлю

  7. says:

    Хотела еще по поводу ads_basecat уточнить. Хочу, чтобы при использовании поиска на сайте посты выводились на основе визуализации в post_default_templates.
    Правильно ли я поняла, что не важно какое значение будет у ads_basecat, если отображение всех постов у меня должно быть одинаково? Где тогда можно присвоить ads_basecat постоянное значение и забыть про него (а то я уже запуталась в коде)?

  8. admin says:

    к сожалению никак, пока не пропишешь мета поле ads_basecat плагин будет игнорировать запись

  9. says:

    Добрый день. Такой вопрос:
    При добавлении новости от гостя можно настроить чтоб сообщение ушло сначала на проверку, а вот если пишет пользователь, то сообщение сразу публикуется на сайте. Как сделать чтоб сообщения от пользователя тоже сначала поступали на проверку???
    спасибо

  10. admin says:

    напишите свой фильтр для wp_insert_post_data
    и там можно изменить значение post_status
    весь API WordPress к вашим услугам, объявления как и обычные записи добавляются функцией wp_insert_post смотрите ее какие фильтры использует какие события

  11. Yuriy says:

    Добрый день. На одном сайте хочу добавить доску обьявлений, которая будет располагаться в одной категории — ID-1(к примеру) Будет 2 контейнера: Рубрика и Модель, в каждой из которых будут свои подкатегории. Публикация будет происходить в 2 контейнера. Тоесть человек выбирает например в одном «Мобильный телефон» в другом — Модель. Отключил возможность размещения выбора категории на отдельной странице. Тоесть, человек заходя на страницу «Добавить обьявление» сразу же видит форму отправки.
    Теперь суть вопроса.
    Хочу сделать эти 2 контейнера в виде выпадающего списка, чтобы человек мог указать, куда поместить его обьявление. Перечитал этот пост. Единственное, что получилось сделать — вывод всех категорий с чекбоксами.
    Как реализовать такую штуку, подскажите пожалуйста.

  12. admin says:

    1) $_SESSION['ads_fields_form'] вот в этот массив добавить ‘post_category’ и ‘ads_basecat’ — т.е. разрешить принимать список категорий из формы
    2) далее вот собраны функции для работы с категориями http://ili.com.ua/wordpress/funktsii-dlya-rabotyi-s-kategoriyami.html
    для нас тут актуальна первая функция ads_category_select() забираем ее и добавляем в ads_config.php или сразу в форму через условие
    if( !function_exists(‘ads_category_select’) )
    3) теперь главное уяснить что нам надо обязательно назначить нашему объявлению мета поле ads_basecat = основная категория
    к примеру у вас контейнер =Рубрики= имеет id=23

    <?=ads_category_select(23,'ads_basecat');?>

    а второй контейнер Модели имеет id = 46

    <?=ads_category_select(46);?>

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

    Теперь вам надо проверить правильно ли выбраны рубрики для этого смотрите функцию
    ads_child_category, описание ее там же.

  13. says:

    Здравствуйте!
    Хочу уточнить вот что:
    возможно ли в текстовое поле, куда пользователь добавляет текст объявления, добавить какой-нить редактор. И как можно его туда прикрутить?
    Заранее благодарю за ответ!

  14. admin says:

    да возможно, для начала статья про структуру шаблонов плагина http://ili.com.ua/wordpress/ads-wordpress/shablonyi-ads-wordpress.html
    ну а дальше читайте инструкцию этого самого редактора как его внедрять в html код

  15. says:

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

    $post['ads_basecat'] = $_REQUEST['ads_base_categ'];
    $post['post_category'] = array($post['ads_basecat']);

    добавляет записи отлично, но не добавляет в боковой виджет, в последние добавленные.

    т.е. записи в базу добавляются отлично, но не отображаются в списке последних добавленых. какую переменную нужно инициализировать, чтобы добавлялась в последние добавленные?

    спасибо за ваш ответ.

  16. admin says:

    не правильно, вторая строчка вообщем-то ненужна
    $post['post_category'] = array($post['ads_basecat']); — ненужна
    плагин это сделает самостоятельно
    а что за виджет последние добавленные — стандартный , или который с плагином в комплекте идетъ?

  17. Дмитрий says:

    Добрый вечер.
    После создания отдельных шаблонов (post и form) для определенной рубрики, всё работает за исключением предпросмотра. Т.е. после нажатия на кнопку «публиковать» выдается сообщение, что статус опубликовано и объявление действительно опубликовано и показывается согласно нужному шаблону. Но ниже надписи про статус, показывается дефолтная форма, что не есть хорошо.

    Как бы это исправить?

  18. admin says:

    все так и должно быть, форма не закрывается, пока пользователь сам не закроет ее! Юзабилити однака :)

  19. Дмитрий says:

    Я не про то:) Я имел ввиду, что на предпросмотре показывался шаблон form_default вместо нужного form_ned.

    После вашего ответа понял, что где-то туплю и нашел где.

    Скорее всего больше так тупить никто не будет, но опишу что было:

    Объявление подавалось в рубрику «продажа квартир».
    Одним из дополнительных полей сделал количество комнат в квартире и выбор этого значения присваивал объявлению дополнительную рубрику например, «однокомнатные квартиры».

    В конфиге шаблон post_ned я прописал для рубрики «продажа квартир» и «однокомнатные квартиры». А form_ned прописал только для «продажа квартир» отсюда и косяк.

  20. says:

    Всё круто! По-человечески сделано. Вопрос: как быть с шаблонами в 3. версии, где нет ads_config.php?

  21. admin says:

    ads_config.php — просто надо его создать и он автоматически будет включен

  22. Yeva says:

    Здравствуйте! Спасибо за прекрасный плагин!
    Возникла необходимость сделать выбор категорий внутри формы в ввода в виде двух радио-переключателей («Куплю» и «Продам»). Сделала всё по вашей инструкции, но возникло осложнение: радио-переключатели выводятся, как надо, но перед каждым вылетает ошибка
    «Warning: in_array() expects parameter 2 to be array, null given in Z:\home\test_poligrafsnab.com\www\wp-content\plugins\ads-wordpress\ads_config.php on line 20″

    вот эта строка:
    if(in_array($value->term_id, $_POST['post_category']) )
    echo «term_id\» checked=\»checked\» />

    и соответственно не один из переключателей не выбран по умолчанию, подскажите, пожалуйста, в чём ошибка?

  23. Stur says:

    попробуй перед использованием этой функции
    добавить

    if(!($_POST['post_category']) )  $_POST['post_category'] = 23;
    ads_radio_checkbox(20);

    где 23 это id категории которая должна быть назначена по умолчанию (к примеру Продам = 23)

    20 — это id родительской категории то есть
    категории («Куплю» и «Продам») должны находится внутри какой то категории ну скажем назовем ее Аctions = 20

  24. Yeva says:

    Спасибо, Stur, добавила эту строку перед вызовом функции, но ничего не изменилось.

    напишу подробнее:

    в файле ads_config.php:

    [code]
    function ads_radio_checkbox($child_of=false){
    global $ads_post;
    if(!$child_of) {
    if($ads_post['ads_basecat']) $child_of = $ads_post['ads_basecat'];
    else $child_of = $_REQUEST['ads_basecat'];
    }
    $ads_ganres = get_categories(array('child_of'=>$child_of,'hide_empty'=> 0));
    if(!sizeof( $ads_ganres)) return '';
    foreach($ads_ganres as $key=>$value){
    if(in_array($value->term_id, $_POST['post_category']) )
    echo "term_id\" checked=\"checked\" />
    name\" >$value->name   ";
    else
    echo "term_id\" />
    name\" >$value->name    ";
    }
    }[/code]

    в all_form
    [code] [/code]
    строку, предложенную Stur вставляла перед этим вызовом

  25. Yeva says:

    какими тегами у вас код нужно выделять?

    в all_form.php
    =ads_radio_checkbox(3,’ads_basecat’);
    строку, предложенную Stur вставляла перед этим вызовом

  26. Stur says:

    если всего 2 категории для выбор может быть вам проще обойтись без подобных функций пиите прямо html текстом, зачем столько лишних движений?

    <input type="radio" name="post_category[]" value="23" checked="checked" />
    <input type="radio" name="post_category[]" value="24" />

    где 23 и 24 это id категорий для выбора

  27. Yeva says:

    Хм… А как сделать, чтобы эти переключатели ещё и работали?
    На данный момент это просто html код, при публикации объявлений положение переключателя игнорируется

  28. Yeva says:

    разобралась

  29. Den says:

    Здравствуйте.
    Я пытаюсь реализовать добавление следующим образом, когда пользователь идет на страницу «Добавить», он получает вопрос о том, что будет добавлять, и варианты — объявление о недвижимости, автообъявление, статью о том о сем и тд.
    Тыкая в один из пунктов, переходит на форму, для этого уготованную, где уже выбирает внутренние категории и прочее.
    Но у меня при переходе на страницу добавления отображаются вообще все категории и подкатегории, надо как-то их скрыть, оставив только корневые, а подкатегории далее выбирать в форме.
    Как это можно реализовать?

  30. Stur says:

    эээ чото я не совсем понял, что там происходит желательно ссылочку на сайт, но по поводу выбора категорий http://ili.com.ua/wordpress/funktsii-dlya-rabotyi-s-kategoriyami.html
    статья и функция есть

  31. Den says:

    Спасибо, с этим я разобрался. Невнимательно изучил опии немного ) Прошу прощения.
    У меня теперь другой вопрос — возможно ли вывести категории в две или три колонки, как при добавлении, так и при просмотре?

  32. Stur says:

    ну так это уже шаблон формы надо сверстать и расположить как вам удобно все элементы выбора тут уже дело html + css

  33. Александр says:

    Файл post_default_template.php форматирует вывод на странице поста, а где искать форматирование вывода на главную, архивы, категории?

  34. Stur says:

    вообще-то часть для вывода в категории находится там-же сам шаблон разбит на 2 части первая
    [php]

    [/php]
    и вторая после else начинается это и есть то что будет выводится в категории
    [php]

    <a href="» class=»ads_img_link»>
    <img class="ads_thumbnail" src="thumbnail?>» />

    [/php]

    НО проблема может быть в другом: для правильного отображения через эти шаблоны нужно чтобы правильно подключался фильтр all_incluser именно он собирает все картинки и мета поля в одну кучу, а он может не подключится автоматически если у вас в теме используется нестандартные параметры для выборки записей гдето есть вызов функции query_posts в таком случае вам надо принудительно запустить его
    [php]
    query_posts(‘cat=2,6,17,38′);
    $wp_query->posts = all_inclusive($wp_query->posts, 1);
    [/php]

  35. says:

    Подскажите, как организовать адрес созданного объявления без …..?ads_basecat=117 , а в стиле ЧПУ либо html

  36. Stur says:

    никак ЧПУ здесь не будут работать

Новости

  • Украина впереди планеты всей
  • Рекорды посещаемости Евро 2012!
  • Чудо-изделия украинского мастера
  • Система отопления для дома
  • Соцрасходы — это инвестиции
  • Строительный бум в Украине
  • Сборную Украины подвел судья
  • Комментарии


    Расширеный поиск +

    Другие статьи

    Объявления

    Мои проекты на WordPress

    , - специализированная доска объявлений по недвижимости на стоимость сборки $300 с установкой.
    городская доска объявлений, основные разделы: недвижимость, транспорт, услуги, работа, куплю-продам. Стоимость сборки $300 с установкой.
    - разработка, поддержка.

    Счетчики