Stan Ezersky

Stan Ezersky

С нами с 18 февраля 2014; Место в рейтинге пользователей: #24
Глеб
11 апреля 2019, 13:38
3
0
вызов в чанке
{'@FILE snippets/discountPercent.php' | snippet : [
  'price' => $price,
  'old_price' => $old_price
]}
discountPercent.php
<?
$price = empty($price) ? 0 : str_replace(' ', '', $price);
$old_price = empty($old_price) ? 0 : str_replace(' ', '', $old_price);

if($old_price > 0){
  $percent = ceil(100 - ($price * 100 / $old_price));
  return '-'.$percent.'%';
} 
return '';
Баха Волков
22 марта 2019, 08:20
1
0
Во первых, вот это лишнее 'where' => '{"class_key":"msProduct"}',, а во вторых:

'where' => '{"атрибут:оператор":"значение"}',

т.е.

'where' => '{"название поля остатка:>":0}',

Если несколько условий, то:

'where' => '{"class_key":"msProduct","AND:quantity:>":0}',

Если не сработает, отпишись
Илья
07 августа 2018, 14:35
3
+5
В общем пишу инструкцию для «чайников» (таких как я, и как делал я):
1. Скачиваем PuTTY для SSH (putty.exe)
2. Запускаем putty.exe и подключаемся введя данные SSH из панели управления сайтом.

Пароль пишите руками или вставляйте нажатием правой кнопки мыши. Пароль не будет виден, нажимайте enter и подключение пойдет дальше.
3. После того как Вы подключились вводим команду скачать и распаковать архив ай-болита (она указана выше):
wget https://revisium.com/ai/index.php?q=715147663154063253513112476309509 -O ~/aibolit.zip
unzip ~/aibolit.zip -d ~/aibolit
php ~/aibolit/ai-bolit/ai-bolit.php -p ~/ --mode=1 -o ~/report.json --no-html --delay=5 --all
Не забудьте обновить ссылку на айболит, которую можно взять здесь: revisium.com/ai/
Нажимаем enter и получаем вот это:

4. Ещё раз нажимаем enter, ждем 2-3 секунды и пошла проверка, которая может продлится несколько минут.
5. После окончания проверки, когда вы увидите результат в 100%, вводим команду
cat ~/report.json
и нажимаем enter.
6. На экране появится отчёт, который копируем от одной до другой узоной скобки (включительно).

7. После чего вставляем его сюда bezumkin.ru/utils/json
Получаем расшифровку отчёта, в котором перечислены файлы.

8. Ищем подозрительные файлы, с незнакомым названием. Если файл вам незнаком, проверяем его наличие в чистом modx revo, сравнивая его с github.com/modxcms/revolution

Я проверил все свои сайты. На одном нашёл несколько файлов, которые удалил.
Надеюсь, кому-то будет полезно.
Evgeny
21 мая 2018, 09:12
2
+1
я так вывожу:

Бонусов: [[!GetUserBonuses]]

Снипет GetUserBonuses
<?php
$msCustomerProfile = $modx->getObject('msCustomerProfile', $modx->user->id);
return $msCustomerProfile->account;
Михаил
05 апреля 2018, 08:48
1
+1
Ребята, математика за 3-й класс:
{if $old_price}
    {set $percent = (($old_price - $price)/($price/100))}
{/if}
Михаил
05 марта 2018, 19:34
2
+1
<?php
switch ($modx->event->name) {
    // События на добавление товара
    case 'msOnBeforeAddToCart':  // получает $product, $count, $options и $cart
$new_price = $product->get('price') * $product->get('weight');
$product->set('price', $new_price);

break; 

}
Володя
13 ноября 2017, 15:00
1
+2
выполнить
$modx->removeExtensionPackage('hybridauth');
например в компоненте консоль.
Алексей П
04 ноября 2017, 23:57
4
+3
Немного доработанная версия. Чтобы не запускать скрипт по несколько раз. Оставлю здесь для себя. Может еще кому-то пригодится.
Перед использованием нужно заменить параметр parent.

<?php
$step = 10;
$offset = isset($_SESSION['galgenoffset']) && $_SESSION['galgenoffset'] ? $_SESSION['galgenoffset'] : 0;
$modx->setLogLevel(MODX_LOG_LEVEL_ERROR);
$q = $modx->newQuery('modResource', array('parent' => 6007));
$total = $modx->getCount("modResource", $q);
$q->limit($step,$offset);
foreach($modx->getIterator("modResource", $q) as $doc){
	$doc->remove();
}

$_SESSION['galgenoffset'] = $offset + $step;
if ($_SESSION['galgenoffset'] >= $total) {
  $sucsess = 100;
  $_SESSION['Console']['completed'] = true;
  unset($_SESSION['galgenoffset']);
} else {
  $sucsess = round($_SESSION['galgenoffset'] / $total, 2) * 100;
  $_SESSION['Console']['completed'] = false;
}
for ($i=0; $i<=100; $i++) {
    if ($i <= $sucsess) {
        print '=';
    } else {
        print '_';
    }
}
$current = $_SESSION['galgenoffset'] ?
           $_SESSION['galgenoffset'] :
           ($sucsess == 100 ? $total : 0);
print "\n";
print $sucsess.'% ('.$current.')'."\n\n";
Илья Уткин
31 октября 2017, 11:17
2
+4
Я делал так:

Чанк outer для фильтра:
<div id="mse2_[[+table]][[+delimeter]][[+filter]]">
    [[+rows]]
</div>

Чанк rows для фильтра:
{if $idx == 0}
      <label for="mse2_[[+table]][[+delimeter]][[+filter]]_[[+idx]]">
        <input type="checkbox" name="[[+filter_key]]"
          id="mse2_[[+table]][[+delimeter]][[+filter]]_[[+idx]]"
          value="[[+value]]" [[+checked]] [[+disabled]]/> [[+title]] <sup>[[+num]]</sup>
      </label>
{/if}

То есть, тупо не показываю вторую галочку.
Сергей Шлоков
24 октября 2017, 20:26
1
+1
А на счёт работы Fenom в админке, Володин вариант сделать настройку для тех кому это очень надо, по-моему неплохая идея.
Тем кому уж очень нужно могут создать плагин и отключить Fenom в админке
// Событие OnHandleRequest
if ($modx->context->key == 'mgr') $modx->getParser()->pdoTools->config['useFenom'] = false;