Кирилл Бакулин

Кирилл Бакулин

С нами с 09 ноября 2016; Место в рейтинге пользователей: #1505
Konstantin
22 сентября 2018, 07:19
1
+2
В документации же сказано как, открыли бы разок для разнообразия
В вызове сниппета указываешь
'toPlaceholders' => 'my_',
'toSeparatePlaceholders' => 'my_',
и не указываешь tplOuter. Для удобства копируешь этот чанк куда надо. Для правильной работы нужно чтобы все фильтры находились внутри формы:
<div class="msearch2 " id="mse2_mfilter">
		<form action="{$_modx->makeUrl($_modx->resource.id)}" method="post" id="mse2_filters">
                </form>
</div>
а сами фильтры внутри этой формы выводишь в любом порядке и где угодно – с префиксом:
{'my_resource|pagetitle' | placeholder}, {'my_msoption|pol_rebenka' | placeholder}, {'my_results' | placeholder}
Володя
11 июля 2018, 11:28
1
0
Добрый день.
1- можно переопределить getReservedEventsCriteria, в нем прописать свою логику
пример
<?php
/** @var modX $modx */
/** @var array $scriptProperties */
/** @var UserEvents $UserEvents */
switch ($modx->event->name) {
    case 'OnMODXInit':
        $corePath = $modx->getOption("userevents_core_path", null,
            $modx->getOption("core_path", null, MODX_CORE_PATH) . "components/userevents/");
        $UserEvents = $modx->getService("userevents", "UserEvents", $corePath . "model/userevents/",
            array("core_path" => $corePath));
        if (!$UserEvents) {
            return "Could not load userevents class!";
        }
        $UserEvents->addExtension('event', 'getReservedEventsCriteria', function ($data = array()) use (&$modx, &$UserEvents) {
            $filter = isset($data["filter"]) ? $data["filter"] : array();
            $reserve = isset($data["reserve"]) ? $data["reserve"] : true;
            $id = isset($data["id"]) ? (int)$data["id"] : null;
            $resource = isset($data["resource"]) ? (int)$data["resource"] : null;
            $start = isset($data["start"]) ? $data["start"] : null;
            $end = isset($data["end"]) ? $data["end"] : null;
            if (!is_null($id)) {
                $filter["Event.id:!="] = $id;
            }
            if (!is_null($resource)) {
                $filter["Event.resource"] = $resource;
            }
            if (!is_null($reserve)) {
                $filter["Status.reserve"] = $reserve;
            }
            $c = $modx->newQuery("UserEvent");
            $c->setClassAlias("Event");
            $c->leftJoin("UserEventStatus", "Status");
            $c->where($filter);
            $c->andCondition("(IF(startdate > '$start', startdate, '$start')) < (IF(enddate < '$end', enddate, '$end')) ",
                null);
            $c->sortby("IF(startdate > '$start', startdate, '$start')", "ASC");
            
            // добавить логику
            return $c;
        });
        break;
}
Алексей
10 апреля 2018, 13:16
1
0
Вот это статья! Все по полочкам, по-русски, понятно, для новичков, и проч. проч.!
Для себя вывел такую вещь:
$_modx->resource.uri
Вот на это всегда ругался то Pug (Jade), то redactor от modmore (imperavi), наровя преобразовать > в мнемонику html.
на что готовый ответ:
{$.res.uri}
и работает через:
$fenom->addAccessorSmart("res", "data", Fenom::ACCESSOR_PROPERTY);
        // Переменные можно определить статически или динамически по условию
        $fenom->data = [
            "uri" => $modx->resource->uri
        ];
и больше никаких танцев с бубнами с преобразованием везде знака ">"
Александр
20 октября 2016, 19:26
3
0
Где-то использовал вот такой код чтобы не переделывать back-end:

$('.comparison-row .comparison-head').each(function () {
         $.ajaxSetup({async: false});
         $.post(document.location.href, {cmp_action: 'remove', list: $(this).data('list'), resource: $(this).find("input[name='id']").val()}, function(response) {}, 'json');
         $.ajaxSetup({async: true});
         document.location.reload();
});

Это подходит для версии пакета Comparison 1.0.0

Повесить можно на любое событие