Олег
С нами с 19 декабря 2016; Место в рейтинге пользователей: #496Покупка на ultron.pro! Не забудьте обновить ядро и компонент Gallery
            Пару месяцев назад была куплена сборка на сайте ultron.pro для знакомого который открыл кафе. 
Все было хорошо, пока сегодня не зашел на сайт и не обнаружил что он взломан.
Ядро было обновлено сразу до версии 2.7.3-pl. Но компоненты не стал обновлять.
Дак вот если собираетесь покупать не забудьте сразу обновить компонент Gallery, так как там стоит 1.7.0-pl который был взломан в 2018 году.
Почему то разработчик не позаботился проверить свои сборки на присутствие этого компонента, хотя прошло уже 2 года.
Собственно ответ тех поддержки был: сам дурак) А то что сборка с дырками по умолчанию продается, это нормально.
Да фиг с ним с моим сайтом. Но ожидать того что сборка по умолчанию пробита, как то даже в мысли не приходило. Советуешь еще потом зайти на этот сайт подобрать какой то шаблон себе. В итоге получаешь старую сборку, которая в принципе может не работать после обновления всех компонентов.
Вообще чтобы долго не замарачиваться проще скачать сайт целиком к себе на хостинг через команду:
        
        
        
        
    Все было хорошо, пока сегодня не зашел на сайт и не обнаружил что он взломан.
Ядро было обновлено сразу до версии 2.7.3-pl. Но компоненты не стал обновлять.
Дак вот если собираетесь покупать не забудьте сразу обновить компонент Gallery, так как там стоит 1.7.0-pl который был взломан в 2018 году.
Почему то разработчик не позаботился проверить свои сборки на присутствие этого компонента, хотя прошло уже 2 года.
Собственно ответ тех поддержки был: сам дурак) А то что сборка с дырками по умолчанию продается, это нормально.
Да фиг с ним с моим сайтом. Но ожидать того что сборка по умолчанию пробита, как то даже в мысли не приходило. Советуешь еще потом зайти на этот сайт подобрать какой то шаблон себе. В итоге получаешь старую сборку, которая в принципе может не работать после обновления всех компонентов.
Вообще чтобы долго не замарачиваться проще скачать сайт целиком к себе на хостинг через команду:
wget -r -k -l 7 -p -E -nc http://site.com/и посадить его на свою сборку.Женим mFilter2 и Gallery
msProductOptions глюк
[[msProductOptions? &hideEmpty=`1`]]в итоге на странице получаю характеристики товара в таком видеПовреждения: ROLLOVER 
Привод: privod, , default, , listbox 
Пробег: probeg, , default, , number 
Розничная цена: roznicaprice, , default, , number 
Состояние: sostoyanie, , default, , listbox 
Статус ставки: statusstavki, Never Bid, default, , listbox 
Стоимость ремонта: stoimostremonta, , default, , number 
Аукцион: auction, Manheim, default, , listbox 
Тип кузова: tipkuzova, , default, , listbox 
Цилиндры: cilindri, , default, , number : tipprodazi, s1, default, , listbox : colorinto, , default, , listbox 
Тип топлива: tiptopliva, бензин, default, , listbox 
Цвет кузова: colorext, черный, default, , listbox 
Вид транспорта: vidtransporta, 
Автомобиль, default, , listbox : datesale, , default, , date 
ВИН номер: vin, , default, , text 
Расположение: location, TX - DALLAS, default, , listbox 
Марка: make, Acura, default, , listbox 
Лот: lotid, , default, , text 
Год: year, , default, , number : model, ESCAPE SE, default, , listbox 
Текущая ставка: 200 
Объем двигателя: obemdvigatel, , default, , textКонструкция вида <pre>[[msProductOptions? &tpl=``]]</pre> выводит следующее:
Array
(
    [options] => Array
        (
            [obemdvigatel] => Array
                (
                    [id] => 10
                    [caption] => Объем двигателя
                    [description] => 
                    [measure_unit] => 
                    [category] => 47
                    [type] => textfield
                    [properties] => 
                    [product_id] => 51
                    [key] => obemdvigatel
                    [value] => Array
                        (
                            [0] => obemdvigatel
                            [1] => 
                            [2] => default
                            [3] => 
                            [4] => text
                        )
                    [category_name] => 1 - Характеристики
                )
            [povrezdenia] => Array
                (
                    [id] => 11
                    [caption] => Повреждения
                    [description] => 
                    [measure_unit] => 
                    [category] => 47
                    [type] => textfield
                    [properties] => 
                    [product_id] => 51
                    [key] => povrezdenia
                    [value] => Array
                        (
                            [0] => ROLLOVER
                        )
                    [category_name] => 1 - Характеристики
                )
            [privod] => Array
                (
                    [id] => 12
                    [caption] => Привод
                    [description] => 
                    [measure_unit] => 
                    [category] => 47
                    [type] => textfield
                    [properties] => 
                    [product_id] => 51
                    [key] => privod
                    [value] => Array
                        (
                            [0] => privod
                            [1] => 
                            [2] => default
                            [3] => 
                            [4] => listbox
                        )
                    [category_name] => 1 - Характеристики
                )
            [probeg] => Array
                (
                    [id] => 13
                    [caption] => Пробег
                    [description] => 
                    [measure_unit] => 
                    [category] => 47
                    [type] => numberfield
                    [properties] => 
                    [product_id] => 51
                    [key] => probeg
                    [value] => Array
                        (
                            [0] => probeg
                            [1] => 
                            [2] => default
                            [3] => 
                            [4] => number
                        )
                    [category_name] => 1 - Характеристики
                )        Страницы - поддомены
            Всем привет!
Возникла потребность показывать страницы в качестве поддоменов, причем сохраняя возможность вложенности страниц.
Не нашел готового решения, потому результатом стал плагин, который можно увидеть под катом.
Позволяет использовать обычные страницы в качестве поддоменов, примеры:
mysite.ru/test — Изначальный адрес.
test.mysite.ru — Новый адрес с поддоменом.
Также работает и с дочерними страницами, примеры:
mysite.ru/test/page.html — Изначальный адрес.
test.mysite.ru/page.html — Новый адрес с поддоменом.
        
        
        
        
    Возникла потребность показывать страницы в качестве поддоменов, причем сохраняя возможность вложенности страниц.
Не нашел готового решения, потому результатом стал плагин, который можно увидеть под катом.
Позволяет использовать обычные страницы в качестве поддоменов, примеры:
mysite.ru/test — Изначальный адрес.
test.mysite.ru — Новый адрес с поддоменом.
Также работает и с дочерними страницами, примеры:
mysite.ru/test/page.html — Изначальный адрес.
test.mysite.ru/page.html — Новый адрес с поддоменом.
Скрипт для создания менеджера
            Скрипт для создания пользователей с определенными правами и своим источником файлов для админки.
По умолчанию будет создан менеджер с логинам и паролем manager и медиа источником с корневым каталогам assets/uploads из прав у пользователя будет только возможность работать с ресурсами, а c пунктов меню доступ только к «Приложения»
Для настройки политики доступа необходимо в массив $accessPolicy добавить название определенной политики с значение 0 или 1
        
        
        
        
    По умолчанию будет создан менеджер с логинам и паролем manager и медиа источником с корневым каталогам assets/uploads из прав у пользователя будет только возможность работать с ресурсами, а c пунктов меню доступ только к «Приложения»
Для настройки политики доступа необходимо в массив $accessPolicy добавить название определенной политики с значение 0 или 1
Динамическая кнопка Купить / В корзине
            Появилась необходимость реализовать динамическую кнопку Купить / В корзине. 
Может кому-то пригодится.
Спасибо Алексею Наумову, Василию Наумкину за помощь в реализации.
Чанк Купить tplOut:
Чанк В корзине tplIn:
Скрипт (требуется подключенный jQuery)
Сниппет myButton:
Кнопка вызывается таким образом:
        
        
        
    Может кому-то пригодится.
Спасибо Алексею Наумову, Василию Наумкину за помощь в реализации.
Чанк Купить tplOut:
<button type="submit" class="btn btn-cart btn-primary" name="ms2_action" value="cart/add">
	Купить
</button>
<button type="submit" class="btn btn-checkout btn-success hidden" name="ms2_action" value="cart/add">
	В корзине
</button>Чанк В корзине tplIn:
<button type="submit" class="btn btn-checkout btn-success" name="ms2_action" value="cart/add">
    В корзине
</button>Скрипт (требуется подключенный jQuery)
if (typeof(miniShop2) != 'undefined') {
    // кнопки В корзину/Оформить
    miniShop2.Callbacks.Cart.add.response.success = function(response) {
        miniShop2.Order.getcost();
        miniShop2.sendData.$form.find('.btn-cart').addClass('hidden');
        miniShop2.sendData.$form.find('.btn-checkout').removeClass('hidden');
    };
    miniShop2.Callbacks.Cart.remove.response.success = function() {
        miniShop2.sendData.$form.find('.btn-cart').removeClass('hidden');
        miniShop2.sendData.$form.find('.btn-checkout').addClass('hidden');
    };
}Сниппет myButton:
<?php
// Параметры
$idd = $modx->getOption('idd', $scriptProperties, $modx->resource->id);
$tplIn = $modx->getOption('tplIn', $scriptProperties, 'tplIn'); //Можно писать так: ('tplIn', $scriptProperties,  '@INLINE Товар в корзине, кол-во – [[+count]], цена = [[+price]].');
$tplOut = $modx->getOption('tplOut', $scriptProperties, 'tplOut'); // '@INLINE Товара нет в корзине.'
// Классы для работы
$pdo = $modx->getService('pdoTools');
$miniShop2 = $modx->getService('minishop2');
$miniShop2->initialize($modx->context->key, $scriptProperties);
$cart = $miniShop2->cart->get();
// Поехали
$found = false;
foreach($cart as $product) {
	if ($product['id'] == $idd) {
		$found = $product;
		break;
	}
}
return $found
	? $pdo->getChunk($tplIn, $found)
	: $pdo->getChunk($tplOut); Кнопка вызывается таким образом:
[[!myButton? &idd=`[[+id]]`]]        
            
                    
                    
                