Александр Мельник

Александр Мельник

С нами с 02 сентября 2016; Место в рейтинге пользователей: #64

Хаотичное присвоение menuindex ресурсам

Добрый день.
Нужен совет более опытных.
Менеджеру нужно иметь возможность ручной сортировки ресурсов на странице.
Выводятся pdoResources в обертке pdoPage, сортировка стоит по menuindex и его убыванию.

Создаю три новых ресурса в каталоге и их menuindex 0,1,2
Соответственно, выводятся на странице они 2,1,0
Вроде бы отлично, хотя и честно говоря неудобно в том плане, что в дереве ресурсов в админке нет сортировки по menuindex и получается, что невозможно угадать, глядя на дерево как выведутся ресурсы на страницу.
Может кто знает, возможно ли рядом с идентификатором ресурса в админке вывести его menuindex?

Но это цветочки. При перемещении ресурсов мышкой в дереве, действительно меняются menuindex и соответственно порядок вывода на странице, но меняется несколько хаотически. Так к примеру после двух перемещений одного ресурса все индексы уже оказались переписаны на 4,3,2 вместо 2,1,0
Александр Мельник
14 июня 2017, 10:39
modx.pro
776
0

Разные результат [[!pdoPage]] и $modx->runSnippet

Вопрос.
Вызываю в шаблоне
[[!pdoPage?
            &parents=`[[*id]]`
             &ajaxMode=`default`
    &element=`msProducts`
получаю как и ожидалось все товары этого родителя. Обратите внимание что вызываю с параметром &ajaxMode

Вызываю в снипете
$params['parents'] = $id;
		    $params['element'] = 'msProducts';	   
		    $params['ajaxMode'] = 'default';
		$res = $modx->runSnippet('pdoPage', $params);
		
		
		if ($res=='') {$res="Ничего не найдено";}
Тоесть тот же сниппет с теми же параметрами и получаю — ничего не найдено! Стоит заккоментировать строку $params['ajaxMode'] = 'default'; и сразу находятся все товары.
Но для меня важно чтобы пагинация работала без перезагрузки страницы.

Спасибо за ранее если кто то поможет.
Александр Мельник
08 июня 2017, 10:49
modx.pro
1 837
0

Пагинация при обновлении через Jquery.Ajax

Добрый день.
Уважаемые опытные коллеги, нужна Ваша помощь.
На сайте выводятся ресурсы через pdoPage.
В самом простом случае вот так
<div id="result">
       
[[!pdoPage?
&parents=`[[*id]]`
  &sortby=`Data.price`
    &sortdir=`desc`
    &element=`msProducts`
    &limit=`1`
    
]]
[[!+page.nav]]  
    </div>
Выборка того что вывести происходит через передачу данных через Jquery.ajax в снипет, где происходит обработка.
// обработка ссылок если они служат для аякс загрузки
	$('.ajax_link').click(function() {
		
	var action = $(this).data('action');
	var id_resource = $(this).data('id');
	alert('Action '+action);	
	$.post(document.location.href, {action: action, id_resource: id_resource}, function(data) {
		
		$('#result').html(data);
	})
	
	return false;
  })
На странице вставлен снипет, вот его фрагмент
//******************************************************************************
		case 'show_price_down': // показ товаров по цене от большей к меньшей
		    $params['element'] = 'msProducts';
		    $params['parents'] = $id;
		    $params['sortby'] = 'Data.price';
		    $params['sortdir'] = 'DESC';
		    $params['limit'] = 1;
            
		$res = $modx->runSnippet('pdoPage', $params);
	
		if ($res=='') {$res="Ничего не найдено";}
		    
		break;
Александр Мельник
08 июня 2017, 07:52
modx.pro
807
0

Добавить index.php в URL при включенном ЧПУ

Добрый день.
После включения ЧПУ ссылки принимают вид
site/novaya.html

Можно ли настройками MODX добиться вот такого вида?

site/index.php/novaya.html

Спасибо!
Александр Мельник
26 мая 2017, 16:26
modx.pro
1 305
-1

Как использовать две ReCaptchaV2 на странице?

Господа и дамы.
Нужен совет и помощь.
Как Вы используете капчу, если на странице одновременно существует несколько форм?
Пользуюсь дополнением ReCaptcha, зарегистрировал ключи, внес хук и так далее — все работает.
Но у меня на странице одновременно может быть до 4 форм в модальных окнах а тут уже проблема. Капча отображается только в одной.
Попробовал это решение www.createit.ru/blog/modx/2017/recaptchav2-i-neskolko-form-na-odnoj-stranicze/
Не помогло.
Буду рад подсказкам очень.
Может подскажите другие приличные капчи, работающие в связке с FormIt AjaxForm?
На днях увидел, что гугл сделал новый вид капчи — невидимая.
Никто не пытался прикрутить ее к MODX? А то есть проект один, где внедрение любой капчи приводит к проблемам верстки, нужно только что-то невидимое. В форме используется пустое скрытое поле и идет проверка на его пустоту — не помогает. Видимо роботы научились обходить эту проверку.
Заранее спасибо.
Александр Мельник
04 апреля 2017, 12:38
modx.pro
2 314
0

PdoResources стал игнорировать where

Вот такое странное поведение заметил у PdoResources, он стал игнорировать условия из параметра where.
Вот такой вот вызов ранее прекрасно отбирал один элемент, у которого TV in_home равнялось Да.
[[!pdoResources?
    &parents=`14`
    &depth=`1`
    &limit=`1`
    &sortby=`id`
    &sortdir=`ASC`
    &tpl=`tpl.mainVideo`
    &includeTVs=`img,in_home` 
    &tvPrefix=``
    &where=`{"in_home":"Да"}`
    
]]
Ничего не менялось, но теперь он совершенно игнорит условие. Сортирует по ID, выдает один вариант, но при этом плевать хотел на условие. К примеру при отключенном чанке выдает
Александр Мельник
28 февраля 2017, 09:14
modx.pro
2 507
0

Поругайте код, мне будет полезно

Господа, буду рад любым предложениям по улучшению этого написанного мною кода.
Поскольку я дилетант, то наверняка делаю это топорно и не изящно.
Поставил себе цель написать сниппет, который будет выводить на экран значения MIGX TV для всех ресурсов, которые будут дочерними к ресурсу родителю, чей id будет задаваться как параметр сниппета.
<?php
// получаем id родительского каталога как параметр
$p=$parent;
// выборка всех ресурсов, у кого родитель имеет переданный id 
// и формируем массив с id ресурсов-детей.
$g=$modx->getCollection('modResource',array('parent'=>$p));
foreach ($g as $g1){
    $where[]=$g1->get('id');
}
// проходим по всем элементам нашего массива, делая выборку одного объекта
// значение contentid которого совпадает с id из массива
// поскольку я задался целью получить только MIGX то прописываю id этого объекта
foreach ($where as $nowhere){
    $result=$modx->getObject('modTemplateVarResource',array('contentid'=>$nowhere,'tmplvarid'=>1));
// добавил сюда проверку на существование $result поскольку не все ресурсы могут иметь заполненные
// MIGX поля
    if ($result){
// $res становится строкой, в которой лежит JSON
    $res=$result->get('value');
//$r становится массивом
    $r=$modx->fromJSON($res);
// перебираем все елементы массива, чтобы добраться до содержимого. 
// У меня поле имеет название text
// в результате получаем вывод на экран перечня значений всех MIGX для всех ресурсов
// дочерних к тому, чей id мы передали в сниппет
    foreach ($r as $r1){ echo $r1['text']."
";}
 } //end if
} // end foreach
Спасибо.
Александр Мельник
25 февраля 2017, 10:25
modx.pro
2
1 987
0

Проблемы с AjaxForm.

Буду рад помощи.
Организовываю отправку форм на почту на MODX. И решил воспользоваться FormIt в связке с AjaxForm. Проблема в следующем. FormIt отправляет на раз, AjaxForm — не отправляет совсем.
Вот вызов ajax
[[!AjaxForm? 
   &snippet=`FormIt`
   &hooks=`email`
     &emailFrom=`noreply@mail.ru`
   &form=`tpl.AjaxForm`
   &emailTpl=`email_tpl`
   &emailTo=`robota.melnik@yandex.ru`
   &emailSubject=`Заказ звонка с сайта`
   &validate=`name:required`
   &validationErrorMessage=`Пожалуйста, заполните поля помеченные *`

   &successMessage=`Сообщение успешно отправлено`
	]]
Сама форма tpl.AjaxForm
<form action="[[~[[*id]]]]" method="post" class="form">
    	<input type="text" name="name" id="name"/>
          <button name="submit" class="form_btn">ПЕРЕЗВОНИТЕ МНЕ</button>   
</form>
Шаблон письма email_tpl
<p>От кого: [[+name]]</p>
Все упрощено чтобы понять в чем ошибка.
Сначала AjaxForm совсем не работал, по ошибкам в консоли я понял, что версия JQuery
не подходит, понизил версию с 3.1 до 1.7 и о чудо, ошибки в консоле пропали и стали появляться
Александр Мельник
11 февраля 2017, 14:09
modx.pro
1
3 744
0

Как собрать MIGX с разных ресурсов?

Добрый вечер.
Подскажите пожалуйста, как решить такую задачку.
Есть группа ресурсов, для которых заданы дополнительные поля типа migx.
Данные из этих полей необходимы на всех страницах сайта, по ним калькулятор рассчитывает стоимости и так далее.
GetImageList позволяет получить эти записи не находясь непосредственно на этом ресурсе, при помощи docid.
Однако так можно получить данные лишь из одного ресурса. Ну пусть даже можно записать через запятую перечень ID (каюсь, не попробовал работает ли через запятую), но что если менеджер добавит новый ресурс, а данные из него не будут попадать в выборку, потому как его ID не указан.
Есть ли возможность указать родительский контейнер для getImageList?
И какая вообще есть в MODX возможность собрать данные TV из совершенно разных ресурсов в один сниппет для обработки?
Спасибо.
Александр Мельник
08 февраля 2017, 17:49
modx.pro
1 760
0

Время выполнения скрипта

Добрый день.
Буду рад подсказке.
Есть скрипт, который формирует прайс-лист для яндекс Маркета.
Когда задается ему на обработку часть каталога магазина, он справляется.
Когда весь товар, ему не хватает времени — выходит 504 ошибка. gateway time-out
Ровно через 60 секунд выскакивает.
Что я пытался сделать —
вписывал в скрипт -set_time_limit(0);
указывал вместо нуля большие значения;
в настройках хостинга указал время выполнения скриптов огромным — 1800 секунд.
И все совершенно безрезультатно — ровно через минуту выходит 504 ошибка.

Куда еще глянуть или где я протупил?
Спасибо.
Александр Мельник
06 ноября 2016, 10:39
modx.pro
1 835
0