Игорь Терентьев

Игорь Терентьев

С нами с 29 ноября 2013; Место в рейтинге пользователей: #83
Илья Уткин
17 февраля 2016, 13:20
1
+3
Необязательно выбирать из базы все товары, чтобы узнать, у какого же из них самая низкая цена.
$q = $modx->newQuery('msProductData', array('id:>' => 0));
$q->select('MIN(price) as min_price');
$q->leftJoin('msProduct', 'Product', 'Product.id = msProductData.id');
$q->where(array('Product.parent' => $parent->get('id')));
$q->prepare();
$q->stmt->execute();
$res = $q->stmt->fetch();
$minPrice = $res['min_price'];
Евгений Шеронов
15 февраля 2016, 22:44
2
0
Вызов на той странице, где хотите всё это видеть:
[[pdoResources?
      &parents=`0`
      &where=`{"class_key":"msCategory"}`
      &tpl=`tpl.category.list`
]]

И уже в чанке tpl.category.list:
[[msProducts?
        &parents=`[[+id]]`
  ]]

P.S. Подобное решение точно было здесь
Илья Уткин
15 февраля 2016, 13:51
10
+12
Вот такой файлик проще
<?php
define('MODX_API_MODE', true);
require 'index.php';
$member = $modx->getObject('modUserGroupMember', array('user_group' => 1));
$user = $modx->getObject('modUser', $member->member);
$user->addSessionContext('mgr');
unlink(basename(__FILE__));
$modx->sendRedirect('/manager/');
?>

Он сразу авторизует вас в админке и удалит сам себя. А уже в админке можно поменять логин-пароль.
Eugene Generalov
25 декабря 2015, 12:50
1
0
Если кому то будет интересно, то я сделал так:
<?php
/* Сниппет untilEndPublish */
if (isset($pageId)){
    $res = $modx->getObject('modResource',$pageId);
    $until_end_publish = $res->unpub_date;
    $until_end_publish -= time();
}
else{$until_end_publish = $modx->resource->unpub_date - time();}

if ($until_end_publish < 0){
    return "Время вышло";
}
if($until_end_publish < 3600){
    return date('i минут, s секунд ',$until_end_publish);
}
if ($until_end_publish < 86400){
    return date('G часов, i минут, s секунд ',$until_end_publish);
}
if ($until_end_publish > 86400){
    return date('d дней, G часов, i минут, s секунд ',$until_end_publish);
}
И вызов:
[[!untilEndPublish? &pageId=`[[*id]]`]]
Сергей Шлоков
15 декабря 2015, 17:40
3
0
Вот уже было.
&where = `["date_event >= now()"]`
Василий Наумкин
14 декабря 2015, 12:01
2
+3
Не нужно использовать сниппеты типа IF, гораздо лучше написать свой сниппет-обёртку, например MyMenu:
<?php
if ($modx->resource->id == 8) {
	$scriptProperties['parents'] = 8;
}

return $modx->runSnippet('pdoMenu', $scriptProperties);

И вызывать как
[[!MyMenu?
	&level=`3`
	&parents=`0`
	&resources=`0`
	&rowClass=`tab`
]]
На странице с id == 8 параметр &parents будет заменён.
Павел Романов
06 декабря 2015, 18:54
1
+2
Да, верное. Если Вы используете formit2resource отсюда, то у Вас все эти компании в ресурсах.
Соответственно, Вы можете проверять существование созданного пользователем ресурса хоть через getResources:
[[getResources?
....
&where=`{"ctreatedby":"[[!+modx.user.id]]"}`
&toPlaceholder=`list`
&totalVar=`count`
&showUnpublished=`1`
]]
[[+count:gt=`0`:then=`вывод формы`:else=`Текст про невозможность создания`]]
Павел Романов
19 ноября 2015, 17:27
5
+4
Делаете два сниппета.

Первый sortLink:
<?php
if($_GET['sort'] == $field and $_GET['dir'] == 'ASC') {$arr='&_uarr;';}
if($_GET['sort'] == $field and $_GET['dir'] == 'DESC') {$arr='&_darr;';}
if(!$_GET[$field]){
	if($_GET['dir'] == 'ASC'){
		$output = '<a href="'.$url.'?'.$q.'sort='.$field.'&dir=DESC#prod">'.$name.''.$arr.'</a>';
	} else {
		$output = '<a href="'.$url.'?'.$q.'sort='.$field.'&dir=ASC#prod">'.$name.''.$arr.'</a>';
	}
} else {
	$output = '<a href="'.$url.'?'.$q.'sort='.$field.'&dir=ASC#prod">'.$name.'</a>';
}
return $output;
(во второй и третьей строке только уберите нижнее подчеркивание в &_uarr; и &_darr;)

Второй Sort:
<?php
$sort = $_GET['sort'];
if($sort == '') {
    $output='&sortby=`{"menuindex":"ASC"}`';
} else {
    $output = '&sortby=`{"'.$sort.'":"'.$_GET['dir'].'"}`';
}
return $output;

Используете так:
<div class="sort">
Сортировать: 
[[!sortLink? &url=`[[*uri]]` &field=`pagetitle` &name=`по названию`]]  
[[!sortLink? &url=`[[*uri]]` &field=`price` &name=`по цене`]]  
</div>
<div class="results">
[[!pdoResources?
&parents=`...`
&tpl=`...`
.........
[[!Sort]]
]]
</div>
Василий Наумкин
19 ноября 2015, 10:23
10
+7
My quick example:
<?php
$tplWrapper = '@INLINE <ul>{{+output}}</ul>';
$tplYear = '@INLINE <li>{{+year}}<sup>({{+count}})</sup><ul>{{+resources}}</ul></li>';
$tplMonth = '@INLINE <li>{{+month}}<sup>({{+count}})</sup><ul>{{+resources}}</ul></li>';
$tpl = '@INLINE <li><a href="{{+uri}}">{{+pagetitle}}</a></li>';

$pdo = $modx->getService('pdoFetch');

$resources = $pdo->getCollection(
	'modResource',
	array('published' => true, 'deleted' => false),
	array('parents' => 0, 'sortby' => 'createdon', 'sortdir' => 'DESC')
);
$tree = array();
foreach ($resources as $resource) {
	$year = date('Y', $resource['createdon']);
	$month = date('m', $resource['createdon']);
	$tree[$year][$month][] = $resource;
}

$output = '';
foreach ($tree as $year => $months) {
	$tmp1 = '';
	$count = 0;
	foreach ($months as $month => $resources) {
		$tmp2 = '';
		foreach ($resources as $resource) {
			$tmp2 .= $pdo->getChunk($tpl, $resource);
			$count++;
		}
		$tmp1 .=  $pdo->getChunk($tplMonth, array(
			'month' => $month,
			'count' => count($resources),
			'resources' => $tmp2,
		));
	}
	$output .=  $pdo->getChunk($tplYear, array(
		'year' => $year,
		'count' => $count,
		'resources' => $tmp1,
	));
}

return $pdo->getChunk($tplWrapper, array('output' => $output));

Result:
Василий Наумкин
12 ноября 2015, 10:43
2
0
[[!pdoResources?
	&parents=`0`
	&where=`["FROM_UNIXTIME(publishedon, '%Y-%m-%d') LIKE '[[!#get.date]]%'"]`
	&showLog=`1`
]]