Максим Кузнецов · 31 января 2015, 21:35 Помогу с решением. Вызываем сниппет Login: [[!Login? &loginTpl=`fastLoginTpl` &errTpl=`fastLoginError`]] Чанк формы для авторизации fastLoginTpl: <div style="display: none;" id="authErrors">[[+errors]]</div> <form class="loginForm" id="iWannaLogin" action="[[~[[*id]]]]" method="post"> <div class="login"> <input id="loginForm" name="username" class="roundInput" type="text" placeholder="Логин" title="Ваш логин"> </div> <div class="password"> <input id="passwordForm" name="password" class="roundInput" type="password" placeholder="Пароль" title="Ваш пароль"> </div> <input class="returnUrl" type="hidden" name="returnUrl" value="[[+request_uri]]" /> <input class="loginLoginValue" type="hidden" name="service" value="login" /> <div class="submit"> <a rel="nofollow" href="[[~17]]">Я - тупой, забыл пароль..</a> <input id="ajaxLoginButton" type="submit" name="Login" value="Войти" /> </div> </form> Чанк для вывода ошибки fastLoginError: [[+msg]] Скрипт js, обрабатывающий событие отправки формы (нужен подключенный jquery): <script type="text/javascript"> $(document).ready(function(){ $("#iWannaLogin").bind("submit", function() { $("#authErrors").text(""); //здесь можно допилить подсветку полей с ошибкой if ($("#loginForm").val().length < 1 && $("#passwordForm").val().length < 1) { $.jGrowl("Введите логин и пароль", {group: "m-Error"}); return false; } if ($("#loginForm").val().length < 1) { $.jGrowl("Введите логин", {group: "m-Error"}); return false; } if ($("#passwordForm").val().length < 1) { $.jGrowl("Введите пароль", {group: "m-Error"}); return false; } $.ajax({ type: "POST", cache: false, url: "[[~[[*id]]]]", data: $(this).serializeArray(), beforeSend: function(){ $("#ajaxAuth .closeBlock").css("display", "none"); $("#ajaxAuth .ajaxLoad").css("display", "block"); $("#ajaxLoginButton").prop("disabled", true); }, success: function(data) { $("#ajaxAuth .closeBlock").css("display", "block"); $("#ajaxAuth .ajaxLoad").css("display", "none"); var errMessage = $(data).find("#authErrors").text(); if(errMessage == ""){ window.location = "адрес для переадресации при успешной авторизации"; } else{ $("#authErrors").text(errMessage); $.jGrowl($("#authErrors").text(), {group: "m-Error"}); } }, complete: function(){ $("#ajaxLoginButton").prop("disabled", false); } }); return false; }); }); </script> — я еще подключил плагин jgrowl для отправления алертов. В его же вызове group: «m-Error» — класс для всплывающего бокса (красный, с ошибкой). Если jgrowl не нужен — то вместо него вставляем в поле для ошибок желаемый ответ. Пример: $("#authErrors").text("текст ошибки").css("display", "block"); #ajaxAuth .ajaxLoad — в моем примере форма с индикатором загрузки, которая появляется при обработке аякс-запроса. Вопросы / AjaxForm и Login 13 +3 5
Василий Наумкин · 27 января 2015, 21:47 bezumkin.ru/sections/tips_and_tricks/2439/ Вопросы / Контексты для разделения страниц 27 0 1
Василий Наумкин · 14 января 2015, 20:10 Шли спасибу =) [[!pdoResources? &class=`msVendor` &where=`{"id:IN":[1,2,3,4,5]}` &sortby=`name` &sortdir=`ASC` ]] Вопросы / Вывод производителей на отдельной странице 11 +1 2
Василий Наумкин · 12 января 2015, 10:33 Кэширование нужно только на слабых серверах, а у тебя должен быть нормальный VPS. Приличные url можно реализовать через настройку Nginx или вот так. можно ли к тебе обратиться за этими доработками?Напрямую — нет. На вопросы в сообществе я и так стараюсь отвечать. Вопросы / Minishop и 2 млн товаров, реально ли? 7 0 1
Володя · 31 декабря 2014, 15:36 vgrish@gmail.com Новые дополнения и их версии / [CurrencyRate] - курс валют 150 0 1
Андрей Сухомозгий · 19 октября 2014, 22:50 Василий, заказы смог вывести. Понял, что все просто было) Спасибо) Позволь еще спросить… Вот так например выводятся заказы залогиненого пользователя у него в личном кабинете: [[!pdoResources? &class=`msOrder` &showLog=`1` &sortby=`createdon` &tpl=`tpl.FastOrder` &where=`{"user_id:LIKE":"[[!stupid_user_id]]"}` ]]В чанке tpl.FastOrder вывожу параметры заказа. Например [[+num]] и прочее… Но вот понять не могу, почему если в этом же чанке вывести [[!orderPrint? &tpl=`orderPrint.LinkTpl` &orderId=`[[+id]]`]]То, выводятся ссылки на печать с пустым href. При этом даже если в &orderId подставить число, то все равно пусто… Вопросы / Заказы конкретного пользователя 6 0 1
Богдан · 13 октября 2014, 19:20 Я так понимаю, цены только в корзине нужно менять? Я сделал такой функционал через плагин. Создаем плагин cartProcessing, вешаем на него события msOnAddToCart, msOnChangeInCart, msOnRemoveFromCart. Текст плагина: <?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 > 4) { // если 5 и более товаров - оптовые цены, в интернет-магазине оптовые цены забиваются в поле article foreach ($tmp as $key1 => $value) { if ($product = $modx->getObject('msProduct', $value['id'])) { $realPrice = $product->get('price'); $optPrice = $product->get('article'); // вместо article можно указать любое другое поле товара $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; }В данном случае, если в корзине 5 и более товаров будут отображены оптовые цены, меньше 5 шт. — розничные. Оптовые цены будут браться из поля article (можно исправить под любое поле товара). Объявления о работе / Цена товара в зависимости от количества 20 +2 2
Василий Наумкин · 19 сентября 2014, 21:50 Забацай плагин, который будет редиректить с любой страницы сайта на корзину: if (!empty($_GET['msorder'])) { // ... } Вопросы / Отправить на нужную станицу после оформления заказ 11 0 1
Владимир · 24 августа 2014, 13:21 Посмотрите MetaTager — пакет для умного вывода Meta- заголовков github.com/ershov-ilya/xcontent и xContent — пакет для расстановки внутренней перелинковки в текстах сайта github.com/ershov-ilya/MetaTager этого разработчика Краудфандинг / SEO ПАК 17 +1 1
but1head · 24 августа 2014, 08:44 Не могу найти версию где берет родительские теги, если надо выложу. <title>[[!meta? &tag=`title`]]</title> <meta name="keywords" content="[[!meta? &tag=`keywords`]]" /> <meta name="description" content="[[!meta? &tag=`description`]]" />сниппет meta <?php $tag = $scriptProperties['tag']; if($tag == 'title'){ $page_title = $modx->resource->get("pagetitle"); $meta_title = $modx->resource->getTVValue("meta_title"); $title = ($meta_title != '' ? $meta_title : $page_title); } elseif($tag == 'description'){ $meta_description = $modx->resource->getTVValue("meta_description"); $site_description = $modx->getOption('site_description'); $description = ($meta_description != '' ? $meta_description : $site_description); } elseif($tag == 'keywords'){ $meta_keywords = $modx->resource->getTVValue("meta_keywords"); $site_keywords = $modx->getOption('site_keywords'); $keywords = ($meta_keywords != '' ? $meta_keywords : $site_keywords); } switch ($tag) { case 'title': return $title; break; case 'description': return $description; break; case 'keywords': return $keywords; break; }в системные настройки нужно добаить site_description & site_keywords, создать tv: meta_title, meta_description, meta_keywords Краудфандинг / SEO ПАК 17 +2 3
mxApi — быстрый внешний API для MODX Revolution Запрос: • зафиксировать публичный контракт EndpointInterface / метаданных по semver, чтобы наш провайдер не ломался на обновлениях; • паритет ядра между mxapi2 и mxapi3 (чтобы...
Как я использую mxBoard для работы с ИИ-агентами Немного непонятно, зачем здесь MODX. Агенты работают именно над этим сайтом или это какой-то общий оркестратор, и на доске могут быть карточки по разным сайтам? А ещё расскажи, ...
YaSmartCaptcha - защитите ваши формы от спама умной капчей от Яндекс Вообще не понял о чем речь) В системной настройке service_js сейчас указана ссылка smartcaptcha.cloud.yandex.ru/captcha.js Я предложил очистить эту настройку, тогда компонент н...
mxBackup — обезличенные копии MODX в пару кликов Ещё нет, я там разом почти полтора десятка пакетов выложил модератор, вероятно, а шоке.
Gallery3x 3.4.0 - вставка галерей прямо из визуального редактора (CKEditor и TinyMCE RTE) Здравствуйте. Есть консольный скрипт Вот почитайте: docs.ivan345.com/books/gallery3x/page/import-ms2galleryphp
[mSync] Новая версия синхронизации с 1С Всем привет. В какой то момент начали сыпаться ошибки: Error 23000 executing statement: INSERT INTO `modx_msync_products` (`product_id`, `uuid_1c`) VALUES ...
Checkbox для модального окна Они не отключены, они платные, чтобы писали только те, кому действительно очень надо. Когда бесплатно люди начинают думать, что я им должен.
Вызываем сниппет Login:
Чанк формы для авторизации fastLoginTpl:
Чанк для вывода ошибки fastLoginError:
Скрипт js, обрабатывающий событие отправки формы (нужен подключенный jquery):
— я еще подключил плагин jgrowl для отправления алертов. В его же вызове group: «m-Error» — класс для всплывающего бокса (красный, с ошибкой).
Если jgrowl не нужен — то вместо него вставляем в поле для ошибок желаемый ответ. Пример:
#ajaxAuth .ajaxLoad — в моем примере форма с индикатором загрузки, которая появляется при обработке аякс-запроса.
Приличные url можно реализовать через настройку Nginx или вот так.
Напрямую — нет. На вопросы в сообществе я и так стараюсь отвечать.
Позволь еще спросить…
Вот так например выводятся заказы залогиненого пользователя у него в личном кабинете:
В чанке tpl.FastOrder вывожу параметры заказа. Например [[+num]] и прочее… Но вот понять не могу, почему если в этом же чанке вывести
То, выводятся ссылки на печать с пустым href. При этом даже если в &orderId подставить число, то все равно пусто…
Текст плагина:
В данном случае, если в корзине 5 и более товаров будут отображены оптовые цены, меньше 5 шт. — розничные. Оптовые цены будут браться из поля article (можно исправить под любое поле товара).
сниппет meta
в системные настройки нужно добаить site_description & site_keywords, создать tv: meta_title, meta_description, meta_keywords