Bluetenstadt

Bluetenstadt

С нами с 01 марта 2016; Место в рейтинге пользователей: #387
Василий Наумкин
27 июня 2016, 14:16
1
+2
Потому что сниппет нужно вызывать как
[[!test?id=`[[+id]]`]]
то есть, передавать данные уже выбранного ресурса внутрь сниппета.
И тогда вот эта строка не нужна совсем
$id = $modx->resource->get('id');

Только дальнейший код убьёт всю производительность, достигнутую pdoResources.
$res = $modx->getObject('modResource',$id);
Ты выбрал 10 нужных ресурсов за один запрос, а потом еще за 10 дополнительных запросов выбираешь каждый из них отдельно.

Это при том, что данные уже выбранных ресурсов и так доступны у тебя в чане, в которым ты вызываешь свой сниппет. В моём примере передаётся только id, но так можно передать и другие свойства.

Да и лишний вызов сниппета test 10 раз из чанка — тоже дополнительные тормоза.

В общем, лучше напиши, чего ты хочешь добиться, может чего поумнее подскажут.
Crim
24 июня 2016, 14:37
2
+1
Открой к примеру сервис __http://mainspy.ru/otvet_servera__
и вбей туда site.ru/robots.txt
и проверь заголовоки
Content-Type: text/plain; charset=utf-8
Должно быть text/plain;
Илья Уткин
13 июня 2016, 19:08
1
+2
А Profile куда делся? Остальное-то не надо удалять
&select=`{
     "modResource": "*",
     "Profile": "*"
  }`
&where=`{"Profile.fullname:!=":""}`
&leftJoin=`{ "Profile":{"class":"modUserProfile", "on":"modResource.createdby = Profile.internalKey"} }`
Павел Гвоздь
31 мая 2016, 03:57
1
+2
Интересный момент в том, что эти поля можно вызывать во фронтенде, как обычные поля юзера:
[[+modx.user.id:userinfo=`new_checkbox`]]
[[+modx.user.id:userinfo=`new_field`]]
или
{0 | user : 'new_checkbox'}
{0 | user : 'new_field'}
Николай Загумённов
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.
Михаил
22 апреля 2016, 14:20
1
0
Официальная документация по настройке TinyMCE.
Шаг 1:
Подключаем
<script src='//cdn.tinymce.com/4/tinymce.min.js'></script>
Шаг 2:
Активируем
<script>
  tinymce.init({
    selector: '#mytextarea'
  });
  </script>
Шаг 3:
Профит!
brioni
26 февраля 2016, 19:31
2
0
Решение
[[!+modx.user.id:is=`[[*createdby]]`:then=`<a href="/create?tid=[[*id]]">Редактировать</a>`:else=`
	[[!+modx.user.id:memberof=`Administrator`:then=`<a href="/create?tid=[[*id]]">Редактировать</a>`]]
`]]
brioni
23 февраля 2016, 12:20
2
0
Получилось с первого раза, тупо заменив параметр &input внутри вызова pthumb:
<img src="[[pthumb? &input=`[[pdoResources:default=`[[*image]]`? &class=`TicketFile` &where=`{"parent":[[+id]]}`  &sortby=`createdon`  &sortdir=`ASC`  &limit=`1`  &tpl=`@INLINE [[+url]]`]]` &options=`w=79,h=54`]]">
Рассчитывал на то, что придется создавать обрезанные превью для каждого размера фотки как описано здесь, а затем выводить их в нужных местах сайта — но оказалось всё гораздо проще. Чему я очень рад :)
Василий Наумкин
12 ноября 2015, 10:43
2
0
[[!pdoResources?
	&parents=`0`
	&where=`["FROM_UNIXTIME(publishedon, '%Y-%m-%d') LIKE '[[!#get.date]]%'"]`
	&showLog=`1`
]]
Пётр Молчанов
03 ноября 2015, 10:55
2
+2
isMember — самый нормальный вариант
$user = $modx->getObject('modUser',array('active' => true, 'id' => $userid )); // подставляй айди пользователя
if($user == null)
        return "Пользователь не найден!";
if($user->isMember('Гость')) {

} elseif($user->isMember('Копирайтер')) {

}
и т.д.
если нужно для каждой что-то выводить, то убери else из условий, проверяй только if'ом