Nikita

Nikita

С нами с 18 февраля 2013; Место в рейтинге пользователей: #388
Володя
20 февраля 2016, 14:28
1
0
если у вас динамические страницы, то можно поступить так.
создать плагин на vpOnResourceAfterCreate
в нем проверяйте актуальность своих данных и если их нет то просто отправляете пользоваетля на страницу ошибок.
<?php
switch ($modx->event->name) {
	case 'vpOnResourceAfterCreate':

	    $fastrouter = $modx->getOption('fastrouter', $_REQUEST, array());
	    /* ваша проверка */
	    if (false) {
	        $modx->sendErrorPage();
	    }
	    
        break;	    
}
Petro
04 февраля 2016, 00:52
1
0
Нашел

Параметр &prepareTVs нужен для ТВ типов file и image, которые содержат ссылку на файл и могут быть связаны с источником медиа.
В него нужно указывать список ТВ, или цифру 1 — если вы хотите включить подготовку всех ТВ из includeTVs.

Но чего-то с источником &prepareTVs работает не так как написано. Так должно быть? Или я что-то не так понимаю?
Rootiys
05 ноября 2015, 15:56
1
0
В системной настройке ms2_order_product_fields допишите нужные вам поля.
Андрей Копп
15 октября 2015, 20:07
2
0
Рабочий вариант плагина:

<?php
switch ($modx->event->name) {
    case 'msOnChangeInCart': case 'msOnAddToCart': case 'msOnRemoveFromCart':
        $miniShop2 = $modx->getService('minishop2','miniShop2',
        	MODX_CORE_PATH . 'components/minishop2/model/minishop2/', $scriptProperties);
        if (!($miniShop2 instanceof miniShop2)) return '';
        
        // Инициализируем класс в текущий контекст
        $miniShop2->initialize($modx->context->key, $scriptProperties);
        $total_count = $miniShop2->cart->status()['total_count'];
        $tmp = $miniShop2->cart->get();
        if ($total_count > 499) { // если 5 и более товаров - оптовые цены, в интернет-магазине оптовые цены забиваются в поле article
            foreach ($tmp as $key1 => $value) {
                if ($product = $modx->getObject('msProduct', $value['id'])) {
                	$realPrice = $product->get('price');
                	$discount5 = $product->get('discount5');
                	$opt = $realPrice*$discount5/100;
                    $optPrice = $realPrice-$opt;
                	$tmp[$key1]['price'] = $optPrice;
                }
            }
        }
        elseif ($total_count > 99) { // если 10 и более товаров - оптовые цены, в интернет-магазине оптовые цены забиваются в поле article
            foreach ($tmp as $key1 => $value) {
                if ($product = $modx->getObject('msProduct', $value['id'])) {
                	$realPrice = $product->get('price');
                	$discount4 = $product->get('discount4');
                	$opt = $realPrice*$discount4/100;
                    $optPrice = $realPrice-$opt;
                	$tmp[$key1]['price'] = $optPrice;
                }
            }
        }
        elseif ($total_count > 29) { // если 30 и более товаров - оптовые цены, в интернет-магазине оптовые цены забиваются в поле article
            foreach ($tmp as $key1 => $value) {
                if ($product = $modx->getObject('msProduct', $value['id'])) {
                	$realPrice = $product->get('price');
                	$discount3 = $product->get('discount3');
                	$opt = $realPrice*$discount3/100;
                    $optPrice = $realPrice-$opt;
                	$tmp[$key1]['price'] = $optPrice;
                }
            }
        }
        elseif ($total_count > 9) { // если 100 и более товаров - оптовые цены, в интернет-магазине оптовые цены забиваются в поле article
            foreach ($tmp as $key1 => $value) {
                if ($product = $modx->getObject('msProduct', $value['id'])) {
                	$realPrice = $product->get('price');
                	$discount2 = $product->get('discount2');
                	$opt = $realPrice*$discount2/100;
                    $optPrice = $realPrice-$opt;
                	$tmp[$key1]['price'] = $optPrice;
                }
            }
        }
        elseif ($total_count > 4) { // если 500 и более товаров - оптовые цены, в интернет-магазине оптовые цены забиваются в поле article
            foreach ($tmp as $key1 => $value) {
                if ($product = $modx->getObject('msProduct', $value['id'])) {
                	$realPrice = $product->get('price');
                	$discount1 = $product->get('discount1');
                	$opt = $realPrice*$discount1/100;
                    $optPrice = $realPrice-$opt;
                	$tmp[$key1]['price'] = $optPrice;
                }
            }
        }
        else {
            foreach ($tmp as $key1 => $value) {
                if ($product = $modx->getObject('msProduct', $value['id'])) {
                	$realPrice = $product->get('price');
                	$tmp[$key1]['price'] = $realPrice;
                }
            }
        }
        $miniShop2->cart->set($tmp);
        break;
}
Осталось теперь придумать как это всё менять на лету, на странице с товаром и в корзине при оформлении заказа, может кто-нибудь в курсе как дописать этот скрипт, чтобы считалось всё на лету?

<script type="text/javascript">
$('#msCart input[name="count"]').change(function(){
	var count = $(this).val(); 
	var singlePrice = parseInt($(this).closest('.tab_row').children(".tab_sum").text());

	$(this).closest('.tab_row').children(".tab_pr").children("span").html(count * singlePrice);
});
</script>
Василий Наумкин
07 августа 2015, 12:16
1
0
хотя они соответствуют условию фильтра,
Если речь о значении ТВ «по умолчанию» — то их нет в БД физически, так что pdoResources их не выберет.

А в остальном должно всё работать.
nekto
05 марта 2015, 23:42
1
0
Пишу
public function prepareListObject(xPDOObject $object) {
        $data = array();
        $data['id'] = $object->id;
        $data['pagetitle'] = $object->pagetitle;
        $data['content'] = $object->content;
        return $data;
    }
Не выводит…
Василий Наумкин
20 октября 2014, 12:08
4
0
С версии MODX 2.3 у ресурса есть свой метод clearCache.
if ($resource = $modx->getObject('modResource', 15)) {
	$resource->clearCache();
}
Рустам С
08 сентября 2014, 02:29
1
0
А ни как не могу понять, как правильно написать контроллер, чтоб он брал из таблицы через where условие status=1
class MyControllerVideolast extends modRestController {
    public $classKey = 'lfvideoItem';
    public $defaultSortField = 'id';
    public $defaultSortDirection = 'DESC';
    public $defaultLimit = '1';
}
вот такой код выдает последний загруженный файл, а еще необходимо фильтровать по статусу…

пробывал так, как в процессорах, но не вышло
public function prepareQueryBeforeCount(xPDOQuery $c) {
           $c = parent::prepareQueryBeforeCount($c);

            $c->where(array(
                'status' => '1'
            ));
        
        return $c;
    }
Алексей Карташов
29 декабря 2013, 23:58
1
0
location / {
	try_files			$uri $uri/ @rewrite;
}
location @rewrite {
	# добавить слэш в конце
	rewrite			(.*[^/])$ $scheme://$host$1/ permanent;
	# удалить слэш в конце
	#rewrite		(.*)/$ $scheme://$host$1 permanent;
	rewrite			^/(.*)$ /index.php?q=$1 last;
}
Только имейте в виду, что в самом modx настройка для html в «Типах файлов» должна быть пустой. Иначе, если у вас добавляется, к примеру, ".html" к адресам страниц, то nginx исправит его на ".html/", а вы получите 404. Так что аккуратнее.