TITAN-UZ

TITAN-UZ

С нами с 27 февраля 2014; Место в рейтинге пользователей: #56
Павел
24 ноября 2015, 09:15
1
+1
Попробуй через sql пароль восстановить, мало ли

UPDATE modx_users SET hash_class = 'hashing.modMD5', password = MD5('Ваш_новый_пароль') WHERE username = 'Ваш_логин';
Василий Наумкин
22 ноября 2015, 16:37
3
0
Парсер MODX работает в цикле до 10 раз, чтобы разобрать все плейсхолдеры. То есть:
1. Видим [[+totalMy]], значения нет
2. Видим [[!getTickets]], запускаем, он выставляет значение
3. Проверяем, что у нас осталось необработанного
4. Запускаемся еще раз и вот теперь только обрабатываем [[+totalMy]]
5. Ой, а чего это у меня так всё тормозит?

Fenom работает один раз и позволяет сохранять работу сниппетов в переменные:
{set $tickets = $_modx->runSnippet('!getTickets', [
    'parents' => 0,
    'totalVar' => 'totalMy',
])}

{$_modx->getPlaceholder('totalMy')}

{$tickets}
Василий Наумкин
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:
Василий Наумкин
11 октября 2015, 12:15
2
+1
В методе getChunk его просто негде указывать, но можно написать свой сниппет, который будет запускать pdoTools, менять в нём tplPath и возвращать $pdoTools->getChunk(имячанка);

Дальше всё примерно так же:
{$chunk = $_modx->runSnippet('getChunk', [
	'chunk' => 'mychunk.tpl',
	'tplPath' => '/my/path/'
])}
Konstantin
06 октября 2015, 12:30
1
0
Спасибо, на каком то сайте нашел функцию хорошую, получилось так:

if($c->stmt->rowCount() > 0){
        echo "Ok";
    }else{
        echo"No";
    }
Серьёзный
31 августа 2015, 16:02
1
0
Спасибо, код плагина вотЖ
<?php
switch ($modx->event->name) {
    case 'OnUserSave':
        $tpl = $modx->getOption('emailTpl',$scriptProperties,'tpl.reg_user');
        if ($mode == 'new') {
            $message = $modx->getChunk($tpl,array_merge($user->toArray(),$user->Profile->toArray()));
            $email = $modx->getOption('admin_email');
            
            $modx->getService('mail', 'mail.modPHPMailer');
            $modx->mail->set(modMail::MAIL_BODY,$message);
            $modx->mail->set(modMail::MAIL_FROM,'noreply@from.ru');
            $modx->mail->set(modMail::MAIL_FROM_NAME,'Сервис уведомлений');
            $modx->mail->set(modMail::MAIL_SUBJECT,'Новый пользователь');
            $modx->mail->address('to',$email);
            $modx->mail->setHTML(true);
            if (!$modx->mail->send()) {
                $modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo);
            }
            $modx->mail->reset();
        }
        break;
}
на что нужно заменить admin_email чтобы туда вставлялся email человека, который регнулся?

Заранее благодарю!
Николай
29 августа 2015, 16:54
5
+1
Делал очень давно, сейчас бы сделал по другому, но что есть, то есть )

Сниппет adsense
<?php
//спустя сколько символов искать перенос строки и вставлять рекламу?
$nu = 3800;
//Код рекламы
$adsense = <<<HTML
<div class="sense">
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>

<ins class="adsbygoogle"
     style="display:inline-block;width:728px;height:90px"
     data-ad-client="ca-pub-1233335915169539"
     data-ad-slot="2233378009"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
HTML;
$a = preg_replace('@([^^]{'.$nu.'}.*?)(\r?\n\r?\n|</p>)@', "\\1$adsense\\2", trim($content), 1);
return $a;
Вызов (в шаблоне вместо [[*content]])
[[adsense? &content=`[[*content]]`]]
Василий Наумкин
12 августа 2015, 07:51
2
+4
Возможность такая есть, хоть и не совсем очевидная:
{if !$snippet = $_modx->cacheManager->get('cache_key')}
    {set $snippet = $_modx->runSnippet('pdoResources', [
        'parents' => 0,
        'tpl' => '@INLINE {$id} - {$pagetitle}',
        'showLog' => 1,
    ])}
    {set $null = $_modx->cacheManager->set('cache_key', $snippet, 1800)}
{/if}

{$snippet}
С одной стороны — нужно самому управлять кэшем, а с другой стороны — можно произвольно задавать параметры кэширования: ключ, время кэширования (в примере полчаса) и т.д.
Посмотреть этот кэш можно в /core/cache/default/.

set $null
при выставлении кэша нужно, чтобы не выводилась 1 при успешной работе $_modx->cacheManager->set.
Павел Романов
30 июня 2015, 11:31
1
+1
Если у каждого ресурса, который Вы выводите, есть MIGX-таблица, то выводите ее в чанке через getImageList:

<tr>
<td class="day">[[+tv.tableTrips.day]]
[[getImageList? 
&tvname=`tableTrips`
&tpl=`@CODE: [[+day]]`
&docid=`[[+id]]`
]]</td>

[[getImageList?
&tvname=`tableTrips`
&tpl=`table-items`
&docid=`[[+id]]`
]]
</tr>
Чанк «table-items»:
<td class="clock">[[+field.clock]]</td>
<td class="clock">[[+clock2]]</td>
<td class="clock">[[+clock3]]</td>
<td class="clock">[[+clock4]]</td>
<td class="time">[[+time]]</td>
<td class="price">
<span class="suma">[[+suma]]</span> 
<span class="glyphicon glyphicon-ruble"></span>
</td>
Ну или сниппет написать типа:
<?php
$d = array(
        'docid'=>$id,
        'tvname'=>'tableTrips',
        'tpl'=> '@CODE: [[+day]]'
        );
$a = array(
        'docid'=>$id,
        'tvname'=>'tableTrips',
        'tpl'=> 'table-items'
        );
$day = $modx->runSnippet('getImageList', $d);
$all = $modx->runSnippet('getImageList', $a);
return '
<td class="day">[[+tv.tableTrips.day]]'.$day.'</td>
'.$all.'
</tr>
';
и вызывать в чанке:
[[!snippetName? &id=`[[+id]]`]]
Сергей Шлоков
03 апреля 2015, 18:54
1
0
Для описанной выше задачи (3-уровня, 3-й уровень — документ) можно сделать все проще.
Алгоритм следующий:
1-й уровень — isfolder=1, parent=0
2-й уровень — isflolder=1, parent !=0
3-й уровень — isfolder=0.
Ну а составить правильный фильтр дело техники.
П.С. Я думаю, это решение будет пошустрее, чем предложенное выше.