Всего 103 476 комментариев

Евгений Webinmd
03 июля 2020, 15:30
0
data-filter — это именно css id.

Вот смотри, у статьи шаблон Статья, со своей версткой, вот в верстке нужный контент обрамляется в
<div id="for-modal"> </div>
И вот данные из этого id for-modal и будет подгружаться в модалку. То есть по сути fancybox грузит страницу по ссылке из data-src (например: data-src="[[+uri]]") и чтобы не грузить всю страницу, с шапкой и футером, то указывается только ID блока который надо показать
Никита
03 июля 2020, 15:25
0
data-filter надо вставить css ID с страницы статьи, то есть якорную ссылку? А нельзя [[+id]]?
Никита
03 июля 2020, 15:21
0
Если есть ещё решения — буду рад увидеть.
Евгений Webinmd
03 июля 2020, 14:34
0
самый простой способ это fancybox

<a data-fancybox data-type="ajax" data-src="{$uri}" data-filter="#ID-content-block" href="javascript:;">
	AJAX content
</a>
в поле data-filter надо вставить css ID с страницы статьи, которые надо подгружать в модалку
Максим
03 июля 2020, 11:28
0
Если не хватает модификаторов их можно добавить.
Только для использования объекта $modx его нужно будет указать так:
$fenom->addModifier('website', function ($input) use ($modx) {
            // Тут уже будет доступен $modx
        });
Максим
03 июля 2020, 11:22
0
Добавьте параметр &context с указанием нужного контекста.
Родным синтаксисом кажись так будет:
&context=`[[*context_key]]`
Алексей Шумаев
03 июля 2020, 09:56
0
Цифра «7» не участвует в поиске, т.к. представляет собой 1 символ.

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

Напишите в поддержку.
Я думаю, этот вопрос достаточно важный — может быть возможно обновление версии.
Николай
03 июля 2020, 09:04
0
Подскажите, удалось решить задачу?
Николай
03 июля 2020, 08:34
0
Подскажите, проблему как-то получилось решить? Сейчас такая же задача стоит и тоже завис((
Артем
02 июля 2020, 17:58
+1
А за итоговое число лет отвечает $diff, правильно?
Не совсем, в $diff находится объект, который содержит в себе всю информацию об интервале между текущей датой и той, которая указана в from. Ты можешь распечатать его через print_f и посмотреть, что там есть. Оттуда можно достать даже точное количество дней между этими датами.
Подробнее можно почитать тут и тут.

Пытался подставить в функцию format_by_count, но не работает
вместо
return $diff->format('%Y');
пишешь
$output = $diff->format('%Y');
return format_by_count($output);
Lem
Lem
02 июля 2020, 17:41
0
Спасибище, работает!
Уровень владения MODX и php у меня ещё очень низкий :(
А за итоговое число лет отвечает $diff, правильно? Пытался подставить в функцию format_by_count, но не работает. Вообще не выводит ни одного слова.
Артем
02 июля 2020, 16:53
1
+1
$from = $modx->getOption('from', $scriptProperties);
try {
    $date = new DateTime($from);
    $diff = (new DateTime())->diff($date);
    return $diff->format('%Y');
} catch (Exception $e) {
    return 'An error occurred while calculating experience: ' . $e->getMessage();
}
На вход принимает один параметр — from, где ты должен указать полную дату (02.06.1990, например), от которой нужно отсчитывать опыт.
На выходе получаешь точное количество лет опыта.
Dmitry P.
02 июля 2020, 15:29
+3
т.к. migx хранит пути к файлам только относительно указанного ему медиаисточника, я написал небольшой плагин на событие «pdoToolsOnFenomInit», который создает модификатор для фенома, в котором находится baseUrl меди-источника по его ID
<?php

switch ($modx->event->name) {
    case 'pdoToolsOnFenomInit':
        $fenom->addModifier('mediapath', function ($input) use ($modx) {
            if (!$output = $modx->pdoTools->getStore($input, 'mediapath')) {
                if (!$output = $modx->cacheManager->get('media_' . $input)) {
                    if ($source = $modx->getObject('sources.modMediaSource', $input)) {
                        $source = $source->toArray();
                        $output = '/' . ltrim($source['properties']['baseUrl']['value'], '/');
                    } else {
                        $output = '/';
                    }
                    $modx->cacheManager->set('media_' . $input, $output, 0);
                }
                $modx->pdoTools->setStore($input, $output, 'mediapath');
            }

            return $output;
        });
        break;
}
полученный путь кешируется средствами модыкса (чтоб каждый раз в базу запросы не делать), плюс еще кладется в Store pdoTools-ов, чтоб в циклах не дергать каждый раз кеш :)
использовать можно так:
<img class="image" src="{mediapath(2) ~ $i.image}">
Lem
Lem
02 июля 2020, 13:20
0
Переписал таким образом:
$stazhStart; //значение передаю вызывая сниппент на странице
$mustBeDate = '01.06';
$todayDate = date('d.m');
$startYear = '2019';
$todayYear = date('Y');
$stazh = $startYear - $stazhStart;
if ($todayDate > $mustBeDate && $todayYear > $startYear) $stazh = $todayYear - $stazhStart;
Но стаж увеличивается в любой день и месяц, если год больше $startYear. Мне нужно что бы работало так:
допустим учитель начал работать в 1990 году. Значит на 02.06.2020 у него стаж 30 лет. И на 15.02.2021 всё ещё 30 лет. 31 год должен стать только после 01.06.2021. А сейчас 31 год становится, если ставлю дату, например, 15.04.2021.