Михаил

Михаил

С нами с 08 марта 2013; Место в рейтинге пользователей: #14
Александр
20 октября 2016, 19:26
3
0
Где-то использовал вот такой код чтобы не переделывать back-end:

$('.comparison-row .comparison-head').each(function () {
         $.ajaxSetup({async: false});
         $.post(document.location.href, {cmp_action: 'remove', list: $(this).data('list'), resource: $(this).find("input[name='id']").val()}, function(response) {}, 'json');
         $.ajaxSetup({async: true});
         document.location.reload();
});

Это подходит для версии пакета Comparison 1.0.0

Повесить можно на любое событие
Роман Садоян
22 августа 2016, 14:47
2
+1
Можете сделать и так в принципе, будет заголовок и description + можно выводить только часть текста, например introtext или же выводить из контента 500-1000 символов. (как на хакер.ру)
{var $text = $_modx->resource.content }
{$text | truncate : 2000 : ' Авторизуйтесь для просмотра полного текста ' }
P.S.: работоспособность кода не проверял, показываю просто логику.
С точки зрения СЕО, лучше выводить часть контента. Можно еще и комментарии выводить для всех.
Тут как захочет фантазия.
Максим Кузнецов
29 июня 2016, 16:05
7
+2
'where' => '{
	"id:!=": '~ $_modx->resource.id ~'
}'
AVV
AVV
15 мая 2016, 14:44
1
0
1. Создай сниппет getTvInfo
<?php
$TV = $modx->getObject('modTemplateVar', array('name'=>$tvName));
echo "Информация о ".$tvName.": ";
echo "подпись:" . $TV->get('caption');
echo ", описание:" . $TV->get('description');

2. На странице, где надо вывести используй
[[!getTvInfo? &tvName=`tv_name`]]
tv_name — это нужное имя TV
Константин
04 марта 2016, 15:30
7
+1
Недавно делал на сайте вот так:

Вызов сниппета через AjaxForm
[[!AjaxForm?
	&snippet=`QuickOrder`
	&form=`order.form`
]]

И вот сам сниппет QuickOrder
<?php
$errors = array();

if ( empty( trim( $_POST['total'] ) ) OR !is_numeric( trim( $_POST['total'] ) ) ) {
    $errors['total'] = 'Вы не заполнили кол-во человек';
}

if ( empty( trim( $_POST['phone'] ) ) ) {
    $errors['phone'] = 'Вы не заполнили телефон';
}

if ( !empty( $errors ) ) {
    return $AjaxForm->error( 'В форме содержатся ошибки!', $errors );
} else {
    $miniShop2 = $modx->getService( 'minishop2','miniShop2', MODX_CORE_PATH . 'components/minishop2/model/minishop2/', $scriptProperties );

    if ( !( $miniShop2 instanceof miniShop2 ) ) {
        return $AjaxForm->error( 'Ошибка скрипта!' );
    }
    
    $miniShop2->initialize($modx->context->key, $scriptProperties);
    
    $miniShop2->order->add( 'receiver', trim( $_POST['receiver'] )  );
    $miniShop2->order->add( 'email', trim( $_POST['email'] ) );
    $miniShop2->order->add( 'delivery', 1 ); // id метода доставки
    $miniShop2->order->add( 'payment', 1 ); // id метода оплаты
    
    $miniShop2->cart->add($_POST['id'], $modx->getOption('count', $_POST, 1), $modx->getOption('options', $_POST, array()));
    
    return $AjaxForm->success( 'Форма успешно отправлена. Сейчас вы перейдете на страницу оплаты.' );
}

JS Callback для отправки формы:
$( document ).on('af_complete', function( event, response ) {
    if( response.success ) {
        response.form[0].submit();
    }
})
Илья Уткин
15 февраля 2016, 13:51
10
+12
Вот такой файлик проще
<?php
define('MODX_API_MODE', true);
require 'index.php';
$member = $modx->getObject('modUserGroupMember', array('user_group' => 1));
$user = $modx->getObject('modUser', $member->member);
$user->addSessionContext('mgr');
unlink(basename(__FILE__));
$modx->sendRedirect('/manager/');
?>

Он сразу авторизует вас в админке и удалит сам себя. А уже в админке можно поменять логин-пароль.
Володя
12 декабря 2015, 20:32
1
0
да вполне можно.
location.vgrish.ru/index.php?id=9

пример вызова
[[!gl.modal?
	&tpl=`_tpl.gl.modal`
	&modalShow=`0`
	&frontendJs=`[[+assetsUrl]]js/web/_default.js`
]]

чанк _tpl.gl.modal
<div class="gl-modal">
    <div class="gl-change-select" >
        <h5>Выберите Ваш город</h5>
        
        <p class="desc">
            Введите название вашего города
        </p>
        
        <div class="gl-change-input-block">
            <select name="location" value="" style="width: 100%" class="select2 " multiple>
            </select>
        </div>

        <ul class="gl-change-list">
            [[!gl.location?
                &class=`[[+class]]`
            ]]
        </ul>
        
    </div>

</div>

_default.js
добавить
$(document).ready(function() {
     gl.location.input.load('location');
            
     if (glConfig.modalShow) {
         gl.location.modal();
     }
});
Valikhan
24 сентября 2015, 18:31
1
0
Можете показать как указать в источнике медиа этот массив, чтобы генерировались эти превью, а то никак не могу додумать :((
Илья Уткин
24 июня 2015, 09:32
3
+1
У ресурса есть метод cleanAlias, который генерирует псевдоним:

$title = $data->get('pagetitle') . '-' . $data->get('id');
$alias = $data->cleanAlias($title);
$data->set('alias', $alias);
$modx->runProcessor('resource/update', $resource->toArray());
Воеводский Михаил
15 июня 2015, 02:44
4
+3
Потребуется свой сниппет, который запустит всего 2 метода minishop2:

$minishop2->cart->add($productId, $count);

$orderData = array(/* Здесь много полей, имеющихся в стандартной форме заказа */);
$minishop2->order->submit($orderData);