Доска объявлений на tickets


Делаю доску объявлений на tickets.

Для интересующихся этой темой сделал демо сайт http://cp293906.cpsite.ru/. Вход в админку логин: demo пароль: demodemo.
Пока сделал как получилось :). Но работа еще продолжается.

Информацию по настройке tickets брал из источников:
Компонент Tickets — пользовательские страницы и комментарии
[Tickets] Версия 1.4.0-beta4 — Загрузка файлов
[Tickets] Версия 1.1.0 beta2 — Тикеты с ТВ
Фильтрация по TV в Tickets

Пока нигде не нашел как сделать поиск по тикетам. Ясно, что нужно использовать mSearch2, но непонятно как. Буду благодарен за подсказки к поиску по тикетам и замечания к улучшению доски объявлений.
Сделал поиск по тикетам на mSearch2.

Поиск ищет по поисковой фразе и фильтрует по tv параметрам:
[[$search_form]]

[[!pdoPage?
	&element=`mSearch2`
	&showLog=`1`
	&limit=`10`
	&where=`[[!get_search_where?]]`
	&includeTVs=`topic_bar_cat,topic_price,topic_torg,topic_sity`
	&tpl=`My.tpl.mSearch2.row`
]]

<div class="pagination">
	[[!+page.nav]]
</div>
Сниппет get_search_where из $_GET запроса формирует json вида:
{"class_key": "Ticket","topic_sity":"минск"}
<?php
$where = array('class_key'=>'Ticket');
$get_params = array('topic_sity','topic_bar_cat', 'parent');

foreach($get_params as $p){
    if(isset($_GET[$p])){
        $modx->setPlaceholder($p,$_GET[$p]);
        if($_GET[$p]!='' and $_GET[$p]!=0){
            $where[$p]= $_GET[$p];
        }
    }
}
$p = 'price_from';
if(isset($_GET[$p])){
    if($_GET[$p]!=''){
        $modx->setPlaceholder($p,$_GET[$p]);
        $where['topic_price:>=']= $_GET[$p];
    }
}
$p = 'price_to';
if(isset($_GET[$p])){
    if($_GET[$p]!=''){
        $modx->setPlaceholder($p,$_GET[$p]);
        $where['topic_price:<=']= $_GET[$p];
    }
}
return json_encode($where);
21 сентября 2016, 06:36    Александр   
6    1119 +5

Комментарии (20)

  1. Антон 21 сентября 2016, 10:37 # 0
    Почему на тикетсах, а не на минишопе?
    Доска объявлений не для объявлений же?
    Для товаров, а товары — минишоп.
    modx.pro/components/5443-ms2form-new-possibilities-for-editing/
    1. Александр 21 сентября 2016, 14:59 # 0
      Не знал что так можно :)
      1. Антон 22 сентября 2016, 01:59 # 0
        Тогда ждем вторую ветку ;)
        1. Александр 22 сентября 2016, 04:25 # 0
          А вот поздно уже :). На tickets половина работы уже сделана и начинать разработку на другом компоненте нет желания.
    2. Алексей Бгатов 21 сентября 2016, 12:02 # +1
      я уже делал)
      вот тут
      1. Александр 21 сентября 2016, 14:59 # 0
        спасибо за ссылку
        1. Александр 21 сентября 2016, 19:00 # 0
          А поиск как делали? на msearch2?
          1. Алексей Бгатов 21 сентября 2016, 22:41 # 0
            нет, поиск по сайту — старый msearch, а фильтр по тикетам руками писал
        2. Алексей Бгатов 21 сентября 2016, 12:15 # +2
          а поиск по тикетам — в msearch2 передайте параметр &where=`{«class_key»: «Ticket»}`
          1. Александр 21 сентября 2016, 15:04 # 0
            Спасибо. Жаль msearch2 на демо поставить нельзя. Компонент платный, а для демо его покупать не охота. Разве, что Василий разрешить поставить без покупки в образовательных целях :).
            1. Роман Садоян 21 сентября 2016, 15:38 # 0
              В образовательных целях и не последняя версия сгодится — github
          2. Сергей Лим 21 сентября 2016, 14:23 # 0
            Это все легко и понятно, как бы реализовать платные услуги?
            1. but1head 21 сентября 2016, 14:55 # 0
              Пару товаров в минишопе, при покупке товара выполняет обработка кастомным плагином.
              Например:
              Услуга (товар ms2) «Выделить объявление», при покупке (и оплате) к объявлению ставится бэйдж ms2 или любая твшка.
              1. Сергей Лим 21 сентября 2016, 14:57 # 0
                А если например поднять надо объявление на самый верх и прикрепить на 1 день??
                1. but1head 21 сентября 2016, 15:04 # 0
                  Новая таблица, в ней id заказа и дата «приостановления». Далее крон, думаю тут обяснять не надо.

                  Второй вариант кастомное поле в заказе «приостановление» и тот же крон.

                  В выводе сортировка по тому, что вы «продаете».

                  Вариантов много.
                  1. Алексей Бгатов 22 сентября 2016, 13:22 # 0
                    я просто делал отдельную таблицу Payments и прикручивал робокассу, без минишопа. Там было три варианта платного размещения. При заполнении заявки создавался объект. У каждого объекта был указан тип размещения и дата оплаты. При оплате он помечался как оплаченный, активный, и проставлялась дата окончания. По крону в дату окончания снимался флажок активности. А сниппет вывода джойнил табличку payments и делал соответствующую выборку через where
                2. Александр 21 сентября 2016, 15:09 # 0
                  Я с tickets раньше ничего не делал. Мне не так уж все легко и понятно :). 4 дня потратил пока. Демка для маленьких, чтобы легче было пройти по проторенному пути :)
                3. Alexander V 21 сентября 2016, 21:22 # 0
                  Самый интересный момент, это срок публикации и продление объявления. Как у вас это реализовано?
                  1. Александр 22 сентября 2016, 01:18 # 0
                    Пока никак. Заказчику пока не требуется. Если вдруг понадобиться то сделаю и выложу :)
                    1. Василий Столейков 26 сентября 2016, 07:24 # 0
                      Есть поле unpub_date, а при продлении просто нужно увеличивать дату unpub_date (можно и publishedon для поднятия объявления) на нужное количество дней.
                      А MODX уже сам отпубликует по unpub_date — никаких дополнительных действий не нужно.
                    Вы должны авторизоваться, чтобы оставлять комментарии.