Олег Захаров

Олег Захаров

С нами с 14 октября 2017; Место в рейтинге пользователей: #134
Сергей
23 мая 2016, 17:32
1
0
Вообщем подвожу итог.
Самый простой и удобный способ сделать цель на успешную отправку формы, это добавить
&successMessage=`Сообщение успешно отправлено
     <script>yaCounterXXXXXXX.reachGoal('myModalbuy_lid', goalParams, goalCallback);</script>`
Так-же попробовал добавить параметры цены цели
<script type="text/javascript">
        var goalParams1 = {order_price: 999, currency: "RUB"};
        function goalCallback1 () {
            console.log('запрос в Метрику успешно отправлен');
        }
</script>
Всем спасибо за помощь.
Василий Наумкин
21 января 2016, 09:09
3
0
На старой версии у меня работает, а в новой, похоже, что-то поменялось. Бронебойный вариант:
$("#cleanmincart").click(function(){
	$.post(document.location, {ms2_action: 'cart/clean'});
});
Пётр Молчанов
25 декабря 2015, 18:58
1
0
на событие 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');
                $message = $modx->getChunk('название чанка с шаблоном письма', массив данных);
                $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();
}
ck
ck
02 октября 2015, 02:49
1
0
Для пересчёта цены в зависимости от выбранной валюты автор добавил в сборку плагин crMSprice. К сожалению по-умолчанию на него не навешено вообще никакого события.
Подскажите, как заставить его пересчитывать цену при выборе валюты из списка, выводимого сниппетом CRlist?
Василий Наумкин
31 августа 2015, 05:54
4
0
Условия в виде массива в msProducts не принимаются, потому что он ожидает их всегда в виде JSON. Придётся так и указывать:
{$_modx->runSnippet('!msProducts', [
    'parents' => 3,
    'sortby' => '{
        "Data.new": "desc",
        "msProduct.editedon": "desc"
    }',
    'includeThumbs' => '150x150',
    'where' => '{
	"Data.price:>=": 0
    
    }',
    'limit' => 4,
    'showLog' => true,
    'tpl' => '@INLINE
		bla-bla-bla
	'
])}
У pdoResources такой проблемы нет.

Кстати, если очень хочется использовать именно массивы — то можно воспользоваться тем, что json_encode в Fenom является разрешённой PHP функцией:
{$_modx->runSnippet('!msProducts', [
    'parents' => 3,
    'sortby' => json_encode([
        "Data.new" => "desc",
        "msProduct.editedon" => "desc"
    ]),
    'includeThumbs' => '150x150',
    'where' => json_encode([
	    "Data.price:>=" => 0
    ]),
    'limit' => 4,
    'showLog' => true,
    'tpl' => '@INLINE
		bla-bla-bla
	'
])}
Dmitry Rodionov
13 августа 2015, 00:12
1
+2
Перевод действительно убогий, лучше переписать своими словами все и будет куда как понятнее, чем пытаться сохранить стиль предложений.

Кстати, по поводу самой статьи, сравнение с WP интересно, но WP бесплатен, у нас же в России присутствует другой опыт, многим навязывают платный битрикс или юми, которые стоят в некоторых редакциях дороже чем весь сайт на бесплатном движке. При этом пользователи привыкли платить деньги и не понимают как может быть качественный продукт бесплатным, а еще и легким.
Например интернет магазин на 20к товаров на MODX будет спокойно работать на хостинге за 150р в месяц и кушать 1,5-2гига места. При этом такой же магазин на битриксе без суровых оптимизаций (мало кто нынче заботится о них) будет кушать уже под 10 гигов и висеть на хостинге за 3к в месяц.
Некомпетенция пользователей и не желание их терять навязывая свой движок, идут друг за другом и проталкивают платные продукты и тормозя развитие бесплатных, в какой-то мере.
Ну и конечно как правильно было замечено в статье, удобство использования WP простыми людьми ничего не понимающими в html, но при этом занимающимися «разработкой сайтов» вытекает в большую популярность по сравнению с MODX.
Сергей Лим
25 июня 2015, 01:57
1
0
К сожалению у этого компонента нету истории изменения курса. На данный момент пользуюсь вот этим скриптом

function get_rate($currency) {

$date = getdate();  // получаем ассоциативный массив с данными по дате

$day_of_the_week = $date['wday']; // день недели

    //расчет коэффициента смещения
    switch ($day_of_the_week) {
    case 0:  $k1 = 2 ;  $k2 = 1;  break;   // воскресенье
    case 1:  $k1 = 3 ;  $k2 = 2;  break;   // понедельник
    case 2:  $k1 = 3 ;  $k2 = 0;  break;  // вторник
    default: $k1 = 1 ;  $k2 = 0;  break;   // среда, четверг, пятница, суббота
    }

$month = $date['mon'] ;    // месяц
$day = $date['mday'] ;     // число сегодня
$yesterday = $day - $k1 ;  // число для получения курса на предыдущий день
$today = $day - $k2 ;      // число для получения курса на сегодня
$year = $date['year'] ;    // год


$date_yesterday = date("d/m/Y", mktime(0, 0, 0, $month, $yesterday, $year )); // Генерация даты для курса предыдущего дня
$date_today = date("d/m/Y", mktime(0, 0, 0, $month, $today, $year )); // Генерация даты для курса на сегодня

$rate = array() ;

foreach($currency as $key => $value) {
$url = 'http://www.cbr.ru/scripts/XML_dynamic.asp?date_req1='.$date_yesterday.'&date_req2='.$date_today.'&VAL_NM_RQ='.$value ;
$xml = simplexml_load_file($url);
$rate_today = round(str_replace(',','.',$xml->Record[1]->Value), 2);
$rate_yesterday = round(str_replace(',','.',$xml->Record[0]->Value), 2);
$range = round($rate_today - $rate_yesterday, 2) ;

if ($range > 0) {
$range = '+' . $range;
$img = 'up' ;
} elseif ($range == 0) {
$range = 0 ;
$img = 0 ;
} else {
$img = 'down' ;
}

$rate[$key] = array(
 'today' => $rate_today,
 'change' => $range,
 'img' => $img
);

}

return $rate ;

}



$currency = array(
'dollar' => 'R01235',
'euro' => 'R01239'
);

$rate = get_rate($currency);

foreach ($rate as $key => $value) { ?>

<div class="valuta-logo"><img src="/assets/images/valuta/<?php echo $key; ?>.png" alt="" /></div>

<strong><?php echo $value['today']; ?></strong>

<?php if($value['change']) { ?>

<img src="/assets/images/valuta/<?php echo $value['img']; ?>.png" alt="" /> <?php echo $value['change']; ?>

<?php } ?>

<div style="clear: both"></div>

<?php }

Скажите, насколько он кривой? И я так понимаю, что надо сделать кэшируемость + крон? Я просто в пхп только начинаю разбираться. Автор если направишь меня в нужное направление, то хотел бы помочь усовершенствовать твой компонент на основе этого. Я знаю, что ты это сам можешь, но я хотел бы научиться)
An Si
17 апреля 2015, 11:02
2
+2
мда, логично… затупил с утра. В общем, чтобы обновлять раз в день без крона можно создать плагин на событие OnLoadWebDocument. В плагине просто сравнивать день последнего обновления и сегодняшний день. Если они отличаются, то обновляем, иначе нет.

$lastDayUpdate = strftime('%d',strtotime($modx->getOption('currencyrate_last_date')));
if ($lastDayUpdate!=date('d')) {
    $currencyrate = $modx->getService('currencyrate', 'currencyrate', $modx->getOption('currencyrate_core_path', null, $modx->getOption('core_path') . 'components/currencyrate/') . 'model/currencyrate/');
    if (!($currencyrate instanceof currencyrate)) return '';
    $currencyrate->rateIntoDb();
}
return;
Владимир Дремучий
08 декабря 2014, 22:25
1
0
Можно почитать manifest.php

1. Требования
Для использования вам необходим Shopkeeper с использованием FormIt
Тестировалось на Shopkeeper 2.3.5
2. Установка
а) Установить пакет в  "система - управление пакетами".
а)
В чанке формы заказа, в списке способов оплаты указать [[!YandexMoney? &action=`showMethods` ]]
Т.е., например, в чанке shopOrderForm будет:
<select name="payment" style="width:200px;">
	<option value="При получении" [[!+fi.payment:FormItIsSelected=`При получении`]]>При получении</option>
        [[!YandexMoney? &action=`showMethods` ]]
</select>
б)
В чанке страницы заказа, в список хуков FormIt добавить YandexMoneyHook
Т.е., например, чанк orderform_page
[[!FormIt?
&hooks=`spam,shk_fihook,YandexMoneyHook,email,FormItAutoResponder,redirect`
&submitVar=`order`
&emailTpl=`shopOrderReport`
&fiarTpl=`shopOrderReport`
&emailSubject=`В интернет-магазине "[[++site_name]]" сделан новый заказ`
&fiarSubject=`Вы сделали заказ в интернет-магазине "[[++site_name]]"`
&emailTo=`[[++emailsender]]`
&redirectTo=`25`
&validate=`address:required,fullname:required,email:email:required,phone:required`
&errTpl=`<br /><span class="error">[[+error]]</span>`
]]
в) Создать 2 страницы: для успешно завершенного платежа и неуспешно завершенного.
3) Настройка
Перейти в параметры сниппета YandexMoney (Элементы -> сниппеты -> YandexMoney - >YandexMoney)
Разблокировать параметры по умолчанию.
Заполнить параметры в соответствии со своими задачами.
Сохранить.
4) Profit.
Ну это по использованию, видимо надо создать транспотрный пакет, типа yandexmoney_modx.transport.zip
Сергей Шлоков
16 октября 2014, 12:38
6
0
Вот важная информация для админов сайтов — Как защитить MODX Revolution от взлома
Вот еще от себя могу добавить —