Борис И

Борис И

Был в сети 15 января 2023, 17:28
Заказы не принимаю
Алексей Смирнов
Алексей Смирнов
Проверял уже и так (is). Не срабатывает.
Таким образом встает вопрос — как проверить пользователя… Пришел на ум пока только такой вариант:
[[!*id:input=`[[!+modx.user.id:memberof=`Administrator`]]`:is=`1`:then=`Авторизрован`:else=`НЕ авторизирован`]]
Вот как-то так…
Павел Романов
Павел Романов
Да, только в Revo их лучше прописывать не так:
[[*id:is=`15`:then=`[[$chunk]]`]]
а так:
[[$[[*id:is=`15`:then=`chunk`]]]]
Это из-за того, что парсер сначала выполняет все чанки на странице, а потом только выводит нужные в соответствии с условиями.
Во втором же варианте будут обработаны только текстовые строки и пустые [[$]], если условие не выполнено.

Но если используете Fenom, то можно не извращаться, поскольку там парсер работает по-другому:
{if $_modx->resource.id == 15}{$_modx->getChunk('chunk')}{/if}
Igor Ivanov
Igor Ivanov
Решил! Проблема была в том, что $this->fileRecord получает свойства файла, который хотим редактировать, в том числе его атрибуты, и вот там в дате создания и в дате редактирования приходило названия месяца на русском в кодировке windows-1251, т.е. кракозябры вместо нормальной строки, хотя везде, где только можно, в системе указано utf-8. Это ломало $this->modx->toJSON. Решилось указанием локали в настройках MODX. Раздел core->Словарь и язык параметр locale пишем english. Не совсем понятно, почему работает без указания локали на php 5.4 и 5.3, а начиная с php 5.5 и выше, не хочет.
Владимир
Владимир
что достучаться до любой страницы сайта при включенных ЧПУ можно дописав в адресной строке после имени домена ?id
, а если включать системную настройку
request_method_strict — Да, то этой «радости» «достучаться… по ID» не будет, и возможный дублей тоже не будет.
И плагин не нужен, это в все из коробки предусмотрено.
Николай Загумённов
Николай Загумённов
Путь до картинки можно менять не модификаторами во время, а при сохранении тикета, плагином на событие OnDocFormSave.
Заодно проверяет поле content на наличие картинок с таким путём и меняет 0 на id.
Может кому пригодится.
Мне пригодился этот пост. Спасибо за него.

<?php
switch ($modx->event->name) {

    case 'OnDocFormSave':
        if (is_object($resource) && is_array($resource->_fields)) {
            $data = $resource->_fields;
            $resource_id = $data['id'];
            // $modx->log(1, print_r($data, 1));

            $flds = $tv_values = array();
            foreach ($data as $key => $value) {
                if ($key == 'item_image')  {
                    $tv_id = 2; // id твшки с картинкой

                    $value = trim($value);
                    $tv_value = str_replace('assets/images/tickets/0', 'assets/images/tickets/' . $resource_id, $value);
                }
                if ($key == 'content') {
                	$content = str_replace('assets/images/tickets/0', 'assets/images/tickets/' . $resource_id, $value);
                }
            }
            if (!empty($content)) {
            	$res_obj = $modx->getObject('modResource',$resource_id);
            	$res_obj->set('content', $content);
            	$res_obj->save();
            	unset($res_obj);
            }
            // пишем в таблицу modTemplateVarResource
            if (!empty($tv_value)) {
                //$modx->log(1, print_r($tv_values, 1));

                	if (!$tv_obj = $modx->getObject('modTemplateVarResource', array(
                        'tmplvarid' => $tv_id,
                        'contentid' => $resource_id,
                    ))) {
                        $tv_obj = $modx->newObject('modTemplateVarResource');
                    }

                    $tv_obj->fromArray(array(
                        'tmplvarid' => $tv_id,
                        'contentid' => $resource_id,
                        'value' => $tv_value,
                    ));
                    $tv_obj->save();
                    // $modx->log(1, print_r($tv_obj->toArray(), 1));

                    unset($tv_obj);
            }
        }
    break;
}