Алексей

Алексей

С нами с 25 декабря 2012; Место в рейтинге пользователей: #69
Klike
23 ноября 2016, 11:47
1
0
Понял, спасибо! И ещё вопрос про совместимость с mFilter2.
К примеру, вывести все цвета товара в фильтре, и при выборе, например, зелёного – картинки поменяются на модификацию в Зелёном варианте) Так можно?

UPD. Или просто вывести все модификации со всеми картинками, и тут уже просто фильтр работае. Оставляет выбранные цвета.
Василий Наумкин
13 октября 2016, 10:09
1
+3
все сайты (скрипты) запускаются от одного пользователя
Такого быть вообще не должно.

Для каждого сайта свой пользователь, вход через SSH/SFTP, сайт, БД в MySQL со своими паролями. Юзеры живут в /home.
Желательно еще запереть их в jail (chroot) только с определённым набором утилит. Тогда домашняя директория у них /jail/home, а из обычного /home для них символическая ссылка.

PHP процесс запускается от имени этого пользователя и работать может только в его директории. Там же ему назначена директория для времнных файлов tmp.

Директория proc монтируется с пользовательскими разрешениями, так что top, htop и подобные утилиты показывают только процессы самого юзера.

Еще неплохо настроить квоты потребления жёсткого диска, чтобы один юзер не мог завалить сервер мусором.

Собственно, примерно так всё и настроено на modhost.pro.
Сергей Шлоков
09 сентября 2016, 08:18
1
+1
Хорошее решение. Только лучше таблицу напрямую не указывать. MODX сам умеет определять
SELECT * FROM {$modx->getTableName('TicketView')} WHERE ....
Сергей Шлоков
21 августа 2016, 11:06
2
+2
Как-то так
[[!pdoUsers?
	&where=`["DAYOFMONTH(FROM_UNIXTIME(modUserProfile.dob)) = DAYOFMONTH(now()) AND MONTH(FROM_UNIXTIME(modUserProfile.dob)) = MONTH(now())"]`
	&tpl=`@INLINE <p>[[+fullname]] {{+dob:date=`%d.%m.%Y`}}</p>`
]]
Володя
30 мая 2016, 22:06
2
+2
<?php
switch ($modx->event->name) {
	case 'vpOnResourceAfterCreate':

	$fastrouter = $modx->getOption('fastrouter', $_REQUEST, array());
	$resource->set('description', 'трали вали, тоси боси');

	break; 
}
Николай Загумённов
28 мая 2016, 23:40
4
+3
Выяснил, что можно использовать для этих целей UserFiles.
Надо только добавить плагин, который буде срабатывать после сохранения комментария (событие — OnCommentSave). Вообще очень много открыл для себя с этими плагинами =) В таблице компонента меняю поле parent на id созданного комментария.
<?php
// TicketCommentSave
switch ($modx->event->name) {
    case 'OnCommentSave':
        // $modx->log(1, print_r(array_keys($scriptProperties), 1));
        if ($mode == 'new') {
        	// >> Подключаем UserFiles
			$corePath = $modx->getOption('userfiles_core_path', null, $modx->getOption('core_path', null, MODX_CORE_PATH) . 'components/userfiles/');
			$UserFiles = $modx->getService('UserFiles', 'UserFiles', $corePath . 'model/userfiles/', array('core_path' => $corePath));
			// << Подключаем UserFiles
			
			$user_id = $modx->user->id; // id Авторизованного пользователя
			
			$files = $modx->getCollection('UserFile', array('parent' => $user_id));
			foreach ($files as $file) {
				$file->set('parent', $id);
				$file->save();
				if ($children = $file->getMany('Children')) {
					foreach ($children as $child) {
						$child->remove();
					}
					$file->generateThumbnails();
				}
			}
        }
    break;
}
В чанке формы добавления комментария надо добавить сам сниппет ufForm:
[[!ufForm?
	&class=`modUser`
	&list=`comment`
	&dropzone=`{"maxFilesize":2,"maxFiles":5,"acceptedFiles":".jpg, .jpeg, .gif, .png","template":"edit"}`
]]
В чанке одного комментария(tpl.Tickets.comment.one.auth) добавить:
Должна быть включена поддержка fenom в настройках pdotools.
{$_modx->runSnippet('!pdoResources', [
	'limit' 			=> 10,
	'showLog'			=> 1,
	'class' 			=> 'UserFile',
	'loadModels' 		=> 'UserFiles',
	'sortby' 			=> '{"rank":"ASC"}',
	'tpl' 				=> '@INLINE <div class="item pull-left>
						        <a href="{$url}" rel="fancybox"><img src="{$thumb}" alt=""></a>
						    </div>',
	'where' 			=> '{
						        "UserFile.parent": ' ~ $id ~ ',
						        "UserFile.createdby": '~ $createdby ~'
						        
						    }',
	'leftJoin' 			=> '{
								"Thumb": {
									"class": "UserFile",
									"on": "Thumb.parent = UserFile.id AND Thumb.properties LIKE \'%w\":120,\"h\":90%\'"
								}
						    }',
	'select' 			=> '{
								"UserFile": "url",
								"Thumb": "Thumb.url as thumb"
						    }',
])}
Будет работать только для авторизованных пользователей, так как их id мы заполняем в parent таблицы компонента UserFiles.
Алексей
10 мая 2016, 11:18
4
0
Было бы классно как-то удобно и на виду расположить вот эти вот хоткеи MODX:
Николай Загумённов
21 апреля 2016, 20:37
1
+1
В настройках источника файлов minishop2 есть параметр отвечающий за генерацию превью —
thumbnails. В котором есть пункт — &zc. Если убрать «с», оставить просто «z»:«1», то превью не будут кропаться, а будут просто уменьшаться, а пустое пространство будет заполняться фоновым цветом, указанным в параметре — «bg»
Владимир
23 марта 2016, 20:40
1
0
Предварительно обрабатывайте изображения, вот, кроссплатформенный ресайзер, рекомендую: toki-woki.net/p/Shrink-O-Matic/
Вы можете пакетно, папками сразу обрабатывать. Сотнями изображений и быстро.
Григорий Коленько
04 марта 2016, 10:20
1
+1
Нет необходимости вызывать метод save(). И кэш чистить необязательно.
rtfm.modx.com/revolution/2.x/developing-in-modx/basic-development/plugins/system-events/ondocformsave