Владимир

Владимир

С нами с 28 декабря 2012; Место в рейтинге пользователей: #90
Максим Кузнецов
26 марта 2016, 22:05
1
0
1. Отключаете редактор «markItUp»
2. Ставите свой визуальный редактор и подключаете его к форме
3. Правите встроенные скрипты тикетсов, чтобы он корректно переваривал новый визуальный редактор

Вот таким способом, например, можно подключить Ckeditor к форме.
Илья Уткин
25 марта 2016, 12:20
2
+2
Я понимаю, что уже есть новая версия с дополнительными сниппетами. Но для истории сохраню код, как вывести тикеты по тегу
[[!pdoPage?
    &element=`getTickets`
    &parents=`0`
    &loadModels=`tvsuperselect`
    &select=`{
        "tvTags":"tvTags.value as tag"
    }`
    &leftJoin=`{
        "tvTags":{"class":"tvssOption", "on":"Ticket.id = tvTags.resource_id"}
    }`
    &where=`{ "tvTags.value":"[[!+vp.tag]]" }`
    &tpl=`tpl.Ticket`
    &includeContent=`1`
    &includeTVs=`img,tags`
    &tvPrefix=`tv.`
]]
[[!+page.nav]]
Илья Уткин
16 марта 2016, 16:42
1
+1
Вот так выведет id-шники нужных пользователей
$members = $modx->getCollection('modUserGroupMember', array('user_group' => 1));
foreach($members as $member) {
    echo $member->get('member') . "\n";
}
Максим Кузнецов
16 марта 2016, 05:42
1
+2
Что касается порядкового номера — просто создайте произвольную системную настройку, например «Всего отправлено сообщений» (formit_total) и дергайте ее непосредственно в хуке:

$formit_total = $modx->getObject('modSystemSetting', 'formit_total');
$new_total = intval($formit_total->get('value')) + 1;

$formit_total->set('value', $new_total);
$formit_total->save();
$modx->cacheManager->refresh(array('system_settings' => array()));
Константин
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();
    }
})
Максим Кузнецов
29 февраля 2016, 13:46
4
+2
Для fenom:
{set $canonical_url = $_modx->makeUrl($_modx->resource.id, '', '', 'full')}

<link rel="canonical" href="{$canonical_url}" />
<meta property="og:url" content="{$canonical_url}" />


Тегами modx:
<link rel="canonical" href="[[~[[*id]]? &scheme=`full`]]" />
<meta property="og:url" content="[[~[[*id]]? &scheme=`full`]]" />

Или, например, вот так (не помню для чего, но как-то возникла проблема с предыдущим вариантом, которая решилась нижеописанным примером):
[[++site_url]][[*id:isnot=`[[++site_start]]`:then=`[[~[[*id]]]]`]]
Максим Кузнецов
29 февраля 2016, 12:00
1
+2
Можно расписать плагин для такой ситуации:
<?php
	if ($modx->event->name != "OnHandleRequest" || $modx->context->key == 'mgr') {
		return;
	}
		
	if ($_SERVER['REQUEST_URI'] != '/') {
		$uri = strtok(substr($_SERVER['REQUEST_URI'], 1), '?');
		
		if ($uri == 'index.php') {
			//Заменяем страницы вида /index.php?id= на чпу-шные
			$id = intval($_GET['id']);
			
			if ($modx->getCount('modResource', array('id' => $id))) {
				$modx->sendRedirect($modx->makeUrl($id), array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
			}
			else {
				//Если url не чпу, то обработка OnPageNotFound не срабатывает и необходимо дублировать определение страницы переадресации
				$error_id = intval($modx->getOption('error_page'));
				
				if ($error_id > 0 && $modx->getCount('modResource', array('id' => $error_id))) {
					$redirect_page = $modx->makeUrl($error_id);
				}
				else {
					$start_id = intval($modx->getOption('site_start'));
					$redirect_page =$modx->makeUrl($start_id);
				}
				
				$modx->sendRedirect($redirect_page, array('responseCode'  => 'HTTP/1.1 404 Not Found'));
			}

		}
	}
— написал на скорую руку, если что — поправляйте %)
Евгений Шеронов
28 февраля 2016, 01:08
1
+3
Поле [[+price]], по умолчанию, разбивается на разряды через пробел.

Наверное так должно работать:
[[+price:stripString=` `:ge=`5000`:then=`<img src="#">`:else=``]]
Василий Наумкин
24 февраля 2016, 22:05
2
+3
Прикольно!

Ну и выкидывай нафиг этот default:
<img src="{$_pls['270x235'] ?: '/assets/components/minishop2/img/web/ms2_small.jpg'}"
	alt="{$pagetitle | Jevix}" />
Jevix нужно будет указать как модификатор Fenom.