Василий Столейков

Василий Столейков

С нами с 19 декабря 2012; Место в рейтинге пользователей: #25
Отправить деньги
Василий Наумкин
02 июня 2015, 18:40
1
+1
Если на новом pdoTools с Fenom, то очень просто:
{if $tv != 'stati' && $tv != 'mednews'}
	{set $tv = 'video'}
{/if}

{if $tv != 'stati' && $tv != 'mednews' && $tv != 'video'}
	{set $tv = 'news'}
{/if}

Результат: {$tv}
Ну или как-то так, потому что логика задачи не ясна.
Пётр Молчанов
25 мая 2015, 10:55
5
+2
Лучше такое сделать плагином на событие OnUserRegister. Что-то типа такого:
if ($modx->event->name == 'OnUserSave' && $mode=='new') {
    // генерим пароль
    $pass = $modx->user->generatePassword();
    $user->set('password',$pass);
    $user->set('active','1');
    $user->save();
    // получаем мыло
    $profile = $user->getOne('Profile');
    $email = $profile->get('email');
    // отправляем письмо
		$messageFields = [массив каких-то данных, например, логин и пароль];
                $message = $modx->getChunk('UserRegEmailTpl', $messageFields);
                $modx->getService('mail', 'mail.modPHPMailer');
                $modx->mail->set(modMail::MAIL_BODY,$message);
                $modx->mail->set(modMail::MAIL_FROM,$modx->getOption('emailsender'));
                $modx->mail->set(modMail::MAIL_FROM_NAME,$modx->getOption('site_name'));
                $modx->mail->set(modMail::MAIL_SENDER,$modx->getOption('site_name'));
                $modx->mail->set(modMail::MAIL_SUBJECT,'Благодарим за регистрацию');
                $modx->mail->address('to',$email);
                $modx->mail->address('reply-to',$modx->getOption('emailsender'));
                $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);
                  return false;
                }
                $modx->mail->reset();
}
Василий Наумкин
24 мая 2015, 15:03
4
+2
Сделай сниппет
<?php
echo '<pre>';
print_r($modx->placeholders);
die;
и вызови его на странице после mFilter2 — увидишь все выставленные плейсхолдеры.
Василий Столейков
24 мая 2015, 11:43
1
0
Ну и я вообще не понимаю, как именно могут фильтроваться результаты сниппетов TicketLatest (смысл которого выводить последние тикеты или комменты, в порядке их появления)
Почему использовал его, т.к. в его чанке легко вызываются плейсхолдеры [[+comments]], [[+date_ago]] и [[+fullname]] автора (или тогда как вывести кол-во комментариев тикета в pdoResoruces?)

Конечный результат: фильтр должен фильтровать статьи по категории (TV) и тегам (TV), и всё должно быть на Ajax-e, поэтому и был выбран mFilter2.

Про фильтрацию хлебных крошек я вообще молчу.
Просто вёрстка сложная, и между фильтром и выводом статей должны выводиться хлебные крошки, поэтому я и вызвал там чанк [[$breadcrumbs]], который выводится на всех других страницах, но пришлось отказаться от такого варианта.
Павел Романов
19 мая 2015, 17:47
7
+3
На одном форуме народ соревновался в самом «компактном» решении этой задачи ))
Победило такое решение:
<?php
if($n!=''){
return= $n%10==1&&$n%100!=11?$w1:($n%10>=2&&$n%10<=4&&($n%100<10||$n%100>=20)?$w2:$w3);
}
Ну и вызываем:
[[Snippet? &n=`123` &w1=`год` &w2=`года` &w3=`лет` ]]
Сергей Скат
14 мая 2015, 00:58
1
+1
Пример калькулятора — бери его за основу, потом возьми какое нибудь поле formit и запиши в него результат, типа
var result = ('Переменная с результатом');
$('input').text(result);
Wassi Wassinen
10 мая 2015, 18:43
1
+2
Используй miniShop2 вместо тикетов и ms2form для создания объявлений и прикрепления фотографий.
Василий Наумкин
01 мая 2015, 20:31
2
+1
<?php
$pls = array();

$c = $modx->newQuery('TicketAuthor');
$c->select('MAX(votes_tickets_up + votes_tickets_down)');
if ($c->prepare() && $c->stmt->execute()) {
	$pls['maxticketsvote'] = $c->stmt->fetchColumn();
}

$c = $modx->newQuery('TicketAuthor');
$c->select('MAX(votes_comments_up + votes_comments_down)');
if ($c->prepare() && $c->stmt->execute()) {
	$pls['maxcommvote'] = $c->stmt->fetchColumn();
}

$modx->setPlaceholders($pls);

После вызова можно использовать плейсхолдеры
[[+maxticketsvote]] и [[+maxcommvote]]
Воеводский Михаил
27 апреля 2015, 14:52
3
+1
Код плагина:

<?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;
}