but1head

but1head

С нами с 01 апреля 2014; Место в рейтинге пользователей: #19
PG
PG
10 сентября 2016, 02:04
2
+2
Авторизация
$logindata = array(
  'username' => 'someuser',   // имя пользователя
  'password' => '1234567890', // пароль
  'rememberme' => true        // запомнить?
);
// сам процесс авторизации
$response = $modx->runProcessor('/security/login', $logindata);
// проверяем, успешно ли
if ($response->isError()) {
  // произошла ошибка, например неверный пароль
  $modx->log(modX::LOG_LEVEL_ERROR, 'Login error. Message: '.$response->getMessage());
}
Выход
$response = $this->modx->runProcessor('/security/logout');
if ($response->isError()) {
  // ошибка
  $modx->log(modX::LOG_LEVEL_ERROR, 'Logout error. Message: '.$response->getMessage());
}
Источник
Илья Уткин
02 июня 2016, 17:14
1
0
Внутри MIGX можно вызывать еще один MIGX.

Владимир
31 мая 2016, 16:25
1
0
Иван, подскажи пожалуйста, а вот этот сборщик пакетов MODX «A yeoman generator for MODX Revolution packages» не приходилось использовать?
После установки (npm install -g yo generator-modx-package) запускается yo modx-package из любой папки. Под windows 8.1 без проблем в т.ч.
Дмитрий Танцирев
08 апреля 2016, 21:56
10
0
Может кому пригодится:

{"field":"published", "caption":"Чекбокс", "inputTVtype":"checkbox", "inputOptionValues":"Да==1"}

{"header": "Чекбокс", "dataIndex":"published", "show_in_grid":1, "renderer":"this.renderCrossTick"}
Алексей Шумаев
03 марта 2016, 13:51
1
+3
Добавлю изображение, наглядно поясняющее, как можно было бы использовать наличие возможности сортировки по типу ресурса или, что ещё лучше — разбитие выдачи поиска по типу ресурса/шаблону/...:


Аналогично для полного поиска.
Василий Наумкин
02 декабря 2015, 15:57
3
+2
Прикольно, именно так уже какое-то время и фильтруются новости на главной modx.pro. Там есть 2 ТВ параметра: выводить на главной, или скрывать на главной.

При работе с ТВ запрос с фильтрацией по этим 2м ТВ выходил под 0.5 сек, сейчас — 0.06 сек. Мой плагин выглядит вот так:
<?php
switch ($modx->event->name) {
	
	case 'OnMODXInit':
		$modx->loadClass('modResource');
		$modx->map['modResource']['fields']['show_on_start'] =
		$modx->map['modResource']['fields']['hide_on_start'] = 
		$modx->map['modResource']['fields']['ticket_rating'] = 0;
		$modx->map['modResource']['fieldMeta']['show_on_start'] =
		$modx->map['modResource']['fieldMeta']['hide_on_start'] = array(
			'dbtype' => 'tinyint',
			'precision' => 1,
			'attributes' => 'unsigned',
			'phptype' => 'boolean',
			'null' => true,
			'default' => 0,
		);
		$modx->map['modResource']['fieldMeta']['ticket_rating'] = array(
			'dbtype' => 'int',
			'precision' => 10,
			'attributes' => '',
			'phptype' => 'int',
			'null' => true,
			'default' => 0,
		);
		break;
		
		case 'OnBeforeDocFormSave':
			$resource->set('show_on_start', !empty($resource->get('tv7')));
			$resource->set('hide_on_start', !empty($resource->get('tv8')));
			break;
		
		case 'OnTicketVote':
			if ($object->class == 'Ticket') {
				if ($ticket = $modx->getObject('Ticket', $object->id)) {
					$properties = $ticket->getProperties('tickets');
					$rating = !empty($properties['rating'])
						? $properties['rating']
						: 0;
					$ticket->set('ticket_rating', $rating + $object->value);
					$ticket->save();
				}
			}
			break;
}
Ка видите, там еще и сортировка по рейтингу тикетов есть — дарю! OnTicketVote был добавлен в последней версии Tickets.
Максим
07 октября 2015, 13:52
8
+2
Может быть кому-то пригодится простенький сниппет для вызова mFilter2, который дописывает в параметр filters имена назначенных для категории опций — эти опции выводятся в фильтре чекбоксами:
<?php
$catid = $modx->resource->id;
$q = $modx->newQuery('msCategoryOption');
$q->select(array(
    'msCategoryOption.category_id',
    'msCategoryOption.option_id',
    'mso.key'
    ));
$q->where(array(
    'msCategoryOption.category_id' => $catid
    )
    );
$q->leftJoin('msOption','mso','msCategoryOption.option_id = mso.id');
$q->prepare();
$q->stmt->execute();
$options = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
$_options = array();
foreach ($options as $option) {
    $_options[] = 'msoption|'.$option['key'];
}
$_options = implode(',',$_options);
$scriptProperties['filters'] = implode(',',array($scriptProperties['filters'],$_options));
return $modx->runSnippet('mFilter2',$scriptProperties);
Stan Ezersky
01 октября 2015, 17:45
1
+3
Студийные цены по провинциям:

Лендинг — от 24 тыс. руб. до 150 тыс. руб.
Сайт-корпоративный — от 36 тыс.у руб. до 350 тыс. руб.
Электронный магазин (ИМ) — от 60 тыс. руб. до 1 млн. руб.

Вы всё ещё не видите профита?
Володя
25 апреля 2015, 15:22
3
+1
сделай так
<?php
switch ($modx->event->name) {

	case 'OnDocFormPrerender':

        if ($mode !== 'upd' || empty($id)) {return '';}
        if (!$modx->getObject('msProduct', $id) && !$modx->getObject('msCategory', $id)) {return '';}

        $modx->controller->addHtml('
		<script type="text/javascript">
			Ext.onReady(function() {
				var buttons = Ext.getCmp("modx-action-buttons");
				if (!buttons) {return;}
                    		for (i in buttons.items.items) {
                        		var button = buttons.items.items[i];
                        		if ("button" !== button.xtype) {continue;}
                        		if ("update" == button.process || "resource/update" == button.process) {
                            			button.enable();
                        		}
                    		}
			});
		</script>');

	break;

}
Василий Наумкин
12 февраля 2015, 17:09
1
0
[[#SESSION.sessName]] — это кэшированный вызов.

Можно попробовать [[!#SESSION.sessName]]