snyadanak

snyadanak

С нами с 09 ноября 2016; Место в рейтинге пользователей: #253
Aleksandr Huz
09 сентября 2018, 17:02
1
+1
{'!pdoPage' | snippet : [
    'parents' => $_modx->resource.id,
    'limit' => '4',
    'includeTVs' => 'image',
    'tpl' => '@INLINE <li class="news__item">
            <div class="news__img">
                <a href="{$uri}">
                    <img src="{$_pls["tv.image"]}" alt="{$pagetitle}">
                </a>
            </div>
            <div class="news__content">
                <p class="news__date">{$publishedon | dateAgo}</p>
                <a href="{$uri}" class="news__title">
                    {$pagetitle}
                </a>
                <p class="news__desc">
                    {$introtext}
                </p>
                <a href="{$uri}" class="news__about">Читать далее</a>
            </div>
        </li>'
] ?: 'Список пуст'}
Андрей
14 апреля 2018, 13:05
1
+1
Можно написать свой хук — https://docs.modx.com/extras/revo/formit/formit.hooks#FormIt.Hooks-CustomHooks, в котором будет обрабатываться то что вам нужно.
Илья Уткин
06 февраля 2018, 11:18
1
+1
Да, просто сниппетом выводить формы. Возможно, за основу можно взять сниппет отсюда: https://ilyaut.ru/tips-and-tricks/process-form-fields-added-dynamically/
Bender
04 февраля 2018, 21:42
3
+2
Благодаря Василию, вопрос был разрешен.
'class' => 'modResource',
        'loadModels' => 'ms2gallery',
        'leftJoin' => [
            'Image' => [
                'class' => 'msResourceFile',
                'on' => 'modResource.id = Image.resource_id AND Image.parent = 0',
            ],
            'Thumb' => [
                'class' => 'msResourceFile',
                'on' => 'Image.id = Thumb.parent AND Thumb.path LIKE "%medium%"',
            ]
        ],
        'select' => [
            'modResource' => '*',
            'Image' => 'Image.url as image',
            'Thumb' => 'Thumb.url as thumb',
        ],
Михаил
01 февраля 2018, 15:18
2
+2
{var $result = '!pdoPage' | snippet : [
'ajaxMode' => 'default',
'sortby' => 'id',
'sortdir' => 'ASC',
'includeTVs' => 'size,area,image1,pro,price1',
'tpl' => 'projectcard',
'limit' => 15,
'tvPrefix' => '',
'where' => '["`TVprice1`.`value` BETWEEN 501 and 999"]',
'tplPageWrapper' => '@INLINE <nav aria-label="Page navigation"><ul class="pagination  justify-content-center">{$prev}{$pages}{$next}</ul></nav>',
'tplPage' => '@INLINE <li class="page-item"><a class="page-link" href="{$href}">{$pageNo}</a></li>',
'tplPageActive' => '@INLINE <li class="page-item active"><a class="page-link" href="{$href}">{$pageNo}</a></li>',
'tplPagePrev' => '@INLINE <li rel="prev"><a class="page-link" href="{$href}">« Назад</a></li>',
'tplPageNext' => '@INLINE <li rel="next"><a class="page-link" href="{$href}">Дальше »</a></li>',
'tplPagePrevEmpty' => '@INLINE ',
'tplPageNextEmpty' => '@INLINE ',
'ajaxElemWrapper' => '#child_list',
'ajaxElemRows' => '#child_list .rows',
'ajaxElemPagination' => '#child_list .pagination',
'ajaxElemLink' => '#child_list .pagination a',
]}

{if $result}
	{$result}
{else}
Тут пустой результат
{/if}
mngatoff
06 августа 2017, 01:52
3
+1
а я влез в тикетовый процессор web/upload/file, и в методе process() дописал после проверки на дубли:
// Check for files limit
        if ($filesLimit = $this->modx->getOption('tickets.max_files_upload')) {
        	$checkLimit = $this->modx->newQuery($this->classKey, array('class' => $this->class));
	        if (!empty($this->ticket->id)) {
	            $checkLimit->andCondition(array('parent:IN' => array(0, $this->ticket->id)));
	        } else {
	            $checkLimit->andCondition(array('parent' => 0));
	        }
        	$checkLimit->andCondition(array('createdby' => $this->modx->user->id));
        	if ($this->modx->getCount($this->classKey, $checkLimit) >= $filesLimit) {
        		@unlink($data['tmp_name']);

            	return $this->failure('Вы не можете загрузить больше '.$filesLimit.' файлов');
        	}
        }
и джаваскрипт можно не трогать, и надежнее.
Хочется попросить Василия что-то подобное таки включить в релиз, полезная штука.
Максим Кузнецов
05 августа 2016, 00:48
1
0
Вариант 1 (менее надежный — пользователь может отредактировать значение через консоль браузера):
//также нужно указать параметр template в списке допустимых и обязательных полей (в настройках сниппета TicketForm)
<input type="hidden" name="template" value="айди_шаблона" />

Вариант 2 (через плагин):
<?php
	if ($modx->event->name == 'OnDocFormSave' && $mode == 'new') {
		if (любым условием при помощи входящих POST-данных фильтруешь нужную форму ) {
			$resource->set('template', 'айди_шаблона');
			$resource->save();
		}
	}
Василий Наумкин
24 марта 2016, 07:44
8
+2
Лично я закрываю служебные директории через веб-сервер на случай обнаружения новой уязвимости в MODX.

Например, как это было, когда движок некорректно обрабатывал запросы в несуществующий контекст в коннекторах. Там еще одна PHP авторизация не помогла бы, так как хакер получал доступ к API через обычные GET запросы к определённому файлу.

Именно поэтому я закрываю для доступа снаружи и админку, и коннекторы, и ядро. Причём, не через потенциально уязвимый движок, а средствами гораздо менее потенциально уязвимого Nginx.
location ~* ^/(core|manager|connectors)/ {
    auth_basic "Restricted Access";
    auth_basic_user_file /home/site/.htpasswd;
    try_files               $uri $uri/ @rewrite;
    location ~ \.php$ {
            include         fastcgi_params;
            fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_pass    backend-site;
    }
}

А зачем нужна вот эта инструкция — большой вопрос.