Доска объявлений на 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, 03:36
modx.pro
8
6 547
+5
Поблагодарить автора Отправить деньги

Комментарии: 23

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

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

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

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

                    Схема простая:
                    1. Своя отдельная таблица на основе modx_site_content с всеми добавленными полями типа vip, vip_time, top, top_time, thumb и т.д. Генерируется схема например через CMPGenerator и всё выводится через pdoResources без тормозов в виде подключения тв-шек.
                    2. Фото можно загружать с помощью компонента userFiles.
                    3. Платные функции реализуются просто: msProfile для внутреннего счёта и уже своими действиями через Ajax работаешь напрямую с личным счётом пользователя (добавляешь или вычитаешь баланс).
                    Срок разработки такой доски составляет от трех недель до двух месяцев (+-), зависит от ТЗ.
                    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                    23