mFilter1 и КЭШ
Добрый день!
Пытаюсь организовать поиск на сайте с помощью mSearch1 +mFilter1. Все прекрасно работает, но есть один момент:
я хочу дать возможность пользователю выбрать с помощью выпадающего списка, в каком городе будет осуществляться поиск. Реализовал с помощью конструкции:
Направьте, пожалуйста, на путь истинный, уже несколько дней бьюсь — безрезультатно!
Пытаюсь организовать поиск на сайте с помощью mSearch1 +mFilter1. Все прекрасно работает, но есть один момент:
я хочу дать возможность пользователю выбрать с помощью выпадающего списка, в каком городе будет осуществляться поиск. Реализовал с помощью конструкции:
<form action="[[~[[*id]]]]" method="post" id="mFilter">
[[!mFilter?
&templates=`[[obrabotchik]]`
&includeTVs=`1`
&includeTVList=`adress,area,city,email,fax,logo,phone,site,recomend`
&excludeTVList=`adress,email,fax,logo,phone,site`
&tvPrefix=``
&limit=`5`
&pageLimit=`1`
&tpl=`tpl_mFilter_list`
&sortFilters=`tv_city,tv_area,tv_recomend`
]]
<input type="hidden" name="query" value="[[+mse.query]]">
<input type="hidden" name="page" value=1">
<input type="hidden" name="limit" value="5">
<input type="hidden" name="action" value="filter" />
<input type="hidden" name="sort" value="id,asc">
</form>Код сниппета obrabotchik:$name = $_POST["city_region"];
echo $name;Такая конструкция работает, но только один раз, т.к. сниппет obrabotchik кэшируется. Если же его вызвать некэшируемым [[!obrabotchik]], то в результатах поиска «ничего не найдено». Направьте, пожалуйста, на путь истинный, уже несколько дней бьюсь — безрезультатно!
Привязка метода доставки в способу оплаты
Василий, друзья, приветствую!
Собственно вопрос по существу — есть кастомная страница с заказом, из стандартных полей там есть оплата и доставка.Я не нашел мануала и не стал копаться в коде дабы проверить факт наличия JS скрипта, который при выборе определенного метода доставки убирал бы метод оплаты и написал по старинке на JS простейшие функции управления видимостью.
Собственно вопрос — есть ли в дефолтном MS2 какая-либо удобная реализация этого функционала?
Т.е например если я выбрал «Отправка почтой» то вариант с «Оплата наличными» должен спрятаться, а вместо этого выехать например «Оплата картой». Ведь по идее такая штука быть должна, не даром в админке есть удобная привязка, которую можно вполне было задействовать..?
Собственно вопрос по существу — есть кастомная страница с заказом, из стандартных полей там есть оплата и доставка.Я не нашел мануала и не стал копаться в коде дабы проверить факт наличия JS скрипта, который при выборе определенного метода доставки убирал бы метод оплаты и написал по старинке на JS простейшие функции управления видимостью.
Собственно вопрос — есть ли в дефолтном MS2 какая-либо удобная реализация этого функционала?
Т.е например если я выбрал «Отправка почтой» то вариант с «Оплата наличными» должен спрятаться, а вместо этого выехать например «Оплата картой». Ведь по идее такая штука быть должна, не даром в админке есть удобная привязка, которую можно вполне было задействовать..?
UniSender и "Could not load controller request..."
Добрый день! Установил UniSender, а при входе в компонент в админке мне пишет такую гадость «Could not load controller request handler»… подскажите пожалуйста, в какую сторону копать?
Через runProcessor обновляется только ресурс id=1
Подскажите пожалуйста.
Есть сниппет для редактирования ресурса с фронта, данные отправляю через FornIt.
Но работает только с ресурсом id=1, в остальных случаях ресурс не обновляется а логи пусты.
Есть сниппет для редактирования ресурса с фронта, данные отправляю через FornIt.
Но работает только с ресурсом id=1, в остальных случаях ресурс не обновляется а логи пусты.
Сортировка по дате в рамках дня в eventscalendar2
Добрый день, Василий.
Отличный календарь. Спасибо.
Для сортировки событий по дате в рамках дня можно было бы в eventscalendar2.class.php в getEvents() в самом конце, перед return $content добавить:
Отличный календарь. Спасибо.
Для сортировки событий по дате в рамках дня можно было бы в eventscalendar2.class.php в getEvents() в самом конце, перед return $content добавить:
if (!function_exists('compare')) {
function compare($v1, $v2) {
if ($v1["date"] == $v2["date"]) return 0;
return ($v1["date"] < $v2["date"])? -1: 1;
}
}
usort($content, "compare");Возможно, кому-то будет полезно Javascript ошибка в MS2 Images в thumbnails
Захожу в Источник файлов: MS2 Images и пробую поменять размеры превьюшек (thumbnails — редактировать), но ничего не сохраняет — в консоли ошибка:
Uncaught TypeError: Cannot read property '4' of undefined
в файле:
modx.grid.source.properties.js:137
В журнале ошибок только одна запись:
[2013-10-30 13:05:02] (ERROR @ /connectors/layout/modx.config.js.php) Error caching lexicon topic lexicon/ru/core/resource
Uncaught TypeError: Cannot read property '4' of undefined
в файле:
modx.grid.source.properties.js:137
В журнале ошибок только одна запись:
[2013-10-30 13:05:02] (ERROR @ /connectors/layout/modx.config.js.php) Error caching lexicon topic lexicon/ru/core/resource
Ajax - getPage
Здравствуйте. Есть обычный обработчик ajax запросов. Там вызывается сниппет getPage и выскакивает ошибка
<b>Fatal error</b>: Call to a member function getParameters() on a non-object in <b>M:\OpenServer\domains\localhost\API\core\cache\includes\elements\modsnippet\1.include.cache.php</b> on line <b>75</b>Нарыл в руководстве Боба Рэя ответОбычно это означает, что объект $modx не доступен в данном месте вашего кода. Если это код внутри функции, вам следует передать данный объект как:
global $modx;
в начале функции для того, чтобы дать PHP знать, что вы хотите использовать объект $modx извне функции, вместо создания нового.
Если это не сработало, иногда нужно передать $modx в функцию в качестве аргумента.Вот мой код, куда это вставить? Пробовал в самом начале — не работает.<?php
header('Content-Type: text/html; charset=utf-8');
function getData($action, $id){
// global $modx;
$res;
$mtime = microtime();
$mtime = explode(" ", $mtime);
$mtime = $mtime[1] + $mtime[0];
$tstart = $mtime;
/* /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// */
if(!defined('MODX_API_MODE')){
define('MODX_API_MODE', true);
}
$modx_cache_disabled = true;
// подключаем настройки и определим базовый путь для MODX
require_once '../../config.core.php';
if(!defined('MODX_CORE_PATH')) define('MODX_CORE_PATH', $_SERVER['DOCUMENT_ROOT'].'/core/');
// подключаем класс modX
if(!include_once (MODX_CORE_PATH . "model/modx/modx.class.php")){
$errorMessage = 'Site temporarily unavailable';
include(MODX_CORE_PATH . 'error/unavailable.include.php');
header('HTTP/1.1 503 Service Unavailable');
echo "<html><title>Error 503: Site temporarily unavailable</title><body><h1>Error 503</h1><p>{$errorMessage}</p></body></html>";
exit();
}
// вывод данных из буфера
ob_start();
if(empty($options) || !is_array($options)) $options = array();
$modx = new modX('',$options);
if(!is_object($modx) || !($modx instanceof modX)){
ob_end_flush();
$errorMessage = '<a href="setup/">MODx not installed. Install now?</a>';
include(MODX_CORE_PATH . 'error/unavailable.include.php');
header('HTTP/1.1 503 Service Unavailable');
echo "<html><title>Error 503: Site temporarily unavailable</title><body><h1>Error 503</h1><p>{$errorMessage}</p></body></html>";
exit();
}
$modx -> startTime = $tstart;
$modx -> setLogLevel(modX::LOG_LEVEL_ERROR);
$modx -> setLogTarget('FILE');
$modx -> setDebug(E_ALL & ~E_NOTICE);
$modx -> initialize('web');
$modx -> resource = $modx -> getObject('modResource', $id); //ОЧЕНЬ ВАЖНЫЯ СТРОКА (ПОЛУЧАЕМ ССЫЛКУ НА ТЕКУЩИЙ ОБЪЕКТ ИЗ AJAX ВЫЗОВА)
/* /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// */
// Вызов нужного метода
switch($action){
case 'paging':
$params['parents'] = $id;
$params['tpl'] = 'ajaxResources';
$params['includeTVs'] = 1;
$params['processTVs'] = 1;
$params['showHidden'] = 1;
$params['element'] = 'getResources';
$params['limit'] = 1;
$res = $modx -> runSnippet('getPage', $params);
break;
}
if(!empty($res)) {
return $res;
}
}
// Откликаться будет ТОЛЬКО на ajax запросы
if($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest'){
return;
}
// сниппет будет обрабатывать не один вид запросов, поэтому работать будем по запрашиваемому действию
$action = $_GET['action'];
// Если в массиве POST нет действия - выход
if (empty($action)){
return;
}
else{
echo getData($action,(int) $_POST['id']);
}
?>