Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 147 комментариев

Виталий Валерьевич
Виталий Валерьевич
Лови, замени данную часть кода начиная с 78 строки, собственно все. Удачи.
else {
	$class = !empty($includeMS) ? 'msProduct' : 'modResource';
    $i = $offset;
	$result = array();
    $includeTVListArr = array();
	foreach ($res as $v) {
		if ($tmp = $modx->getObject($class, $v['rid'])) {
			$arr = $tmp->toArray();
			$arr['num'] = 1+$i++;
			$arr['intro'] = $mSearch->Highlight($v['resource'], $query);
			if (!empty($includeTVs) && !empty($includeTVList)) {
                $includeTVListArr = explode(',',$includeTVList);
                foreach ($includeTVListArr as $v2) {
					$arr[$tvPrefix.$v2] = $tmp->getTVValue($v2);
				}
			}
			$result[] = $modx->getChunk($tpl, $arr);
		}
	}
    
    $modx->setPlaceholder($plPrefix.'count', (($i != 0) ? $arr['num'] : 0));
	$modx->setPlaceholder($plPrefix.'render_time', $mSearch->get_execution_time() - $modx->getPlaceholder($plPrefix.'query_time'));

	if ($i == 0) {
		$modx->setPlaceholder($plPrefix.'error', $modx->lexicon('mse.err_no_results'));
		return;
	}
	return implode($outputSeparator, $result);
}
marked
marked
C задачей справился и, как здесь принято, решил поделиться наработкой из плагина.

Userful:
// Если событие - "msOnChangeOrderStatus"
case 'msOnChangeOrderStatus':

    // Если статус - "Отправлен"
    if ($status == 3) {

        // Настройка
        $modx->getService('error','error.modError');
        $modx->getService('mail', 'mail.modPHPMailer');
        
        // Лог ведется в "Отчёты" > "Журнал ошибок"
        $modx->setLogLevel(modX::LOG_LEVEL_INFO);
        $modx->setLogTarget('FILE');

        // Переменные
        $id = $order->get('id');
        $products = $order->getMany('Products');

        // Информация о заказе
        $modx->log(modX::LOG_LEVEL_INFO, '==============================');
        $modx->log(modX::LOG_LEVEL_INFO, '            Заказ #' . $id);
        $modx->log(modX::LOG_LEVEL_INFO, '==============================');

        // Вывод списка покупок из заказа
        foreach ($products as $item) {

            // Переменные
            $product = $item->getOne('Product');
            $count = $item->get('count');

            // Информация о товаре
            $modx->log(modX::LOG_LEVEL_INFO, 'Товар: "' . $product->get('pagetitle') . '" (#' . $product->get('id') . ')');
            $modx->log(modX::LOG_LEVEL_INFO, 'Цена: ' . $product->get('price') . ' руб.');
            $modx->log(modX::LOG_LEVEL_INFO, 'Количество: ' . $count . ' шт.');

            // Отправка письма
            $email = 'E-mail';
            $subject = 'Тема письма';
            $body = 'Содержимое письма';
            $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_SUBJECT, trim($subject));
            $modx->mail->set(modMail::MAIL_BODY, $body);
            $modx->mail->setHTML(true);
            $modx->mail->address('to', trim($email));
            $modx->mail->send();
            $modx->mail->reset();    
    }
    // Сброс
    die();
}

Тему можно считать «закрытой».
Перетягин Илья
Перетягин Илья
Встречал на сайтах такую систему — пользователь выделяет текст и нажимает определенную комбинацию клавиш, эти данные по видимому идут на почту (тут не важно), тем самым орфографически сайт становиться лучше без подобных топиков. Ну и человек возможно просто помочь хотел…
Антон Мамрашев
Антон Мамрашев
я себе такой поставил, действительно удобно, но самое приятное это как редактор очищает текст при вставке — убираются все font теги, style атрибуты и прочее. Пожалуй не хватает только интеграции с phpthumb из коробки.
Павел Левин
Павел Левин
Сделал, правда использовал другую вашу статью.

Сниппет LastUpdate:
<?php
$pubTime = strtotime(date("Y-m-d"));//текущая дата в секунадах
$pubTimeEnd = $pubTime+(24*60*60);//следующий день
$ids = $modx->getChildIds($input);
$count = 0;
$value = 0;

if (!empty($ids)) {//проверяем дочерние ресурсы
    $count = $modx->getCount('modResource', array(
		'id:IN' => $ids
		,'isfolder' => 0
        ,'publishedon:>' => $pubTime
        ,'publishedon:<=' => $pubTimeEnd
	));
} else {//проверяем текущий ресурс
    $count = $modx->getCount('modResource', array(
    	'id:IN' => array($input)
		,'isfolder' => 0
        ,'publishedon:>' => $pubTime
        ,'publishedon:<=' => $pubTimeEnd
	));
    $value = 'new';
}

if($count) {return '<span class="last-update">'.($value?$value:$count).'</span>';} else {return ' ';}

Вызов в чанке/шаблоне:
[[+id:LastUpdate]]

Результат:
Вывод шильдика с количеством новых статей в категории, или помечает шильдиком "new".


Василий Наумкин
Василий Наумкин
Іван Клімчук
Іван Клімчук
voo делался, когда imperavi еще был бесплатным, но там версия настолько старая, что я решил не продолжать. А за новые версии нужно платить. Марк заплатил, но при этом сильно доработал этот редактор для modx и честно продает.
Он еще обещал скоро выпустить новый компонент — Visual Content, там вообще будет улет. Можно будет настраивать прямо блоки на странице в виде большой формы в админке, чтобы не пускать авторов добавлять свои красные и зеленые цвета к текстам. :)
Peter Zenin
Peter Zenin
Пробую в простом php файле воспользоваться pdoFetch::getCollection(), но почему-то pdoFetch совсем не видит miniShop2

define('MODX_API_MODE', true);
require dirname(dirname(dirname(dirname(dirname(__FILE__))))) . '/index.php';
$pdo = $modx->getService('pdoFetch');

$parent = 140;
$allChild = $modx->getChildIds($parent,6,array('context'=>'web','class_key'=>'msCategory'));

$objects = $pdo->getCollection('msProduct', array('parent:IN'=>$allChild)); // Так не видит...

$objects = $pdo->getCollection('modResource', array('parent:IN'=>$allChild)); // Видит только так...
Сам MODX видит miniShop2:

$objects = $modx->getCollection('msProduct', array('parent:IN'=>$allChild));
Василий не подскажешь, как заставить pdoFetch видеть минишоп?