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

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

С нами с 02 сентября 2016; Место в рейтинге пользователей: #64
Александр Мельник
14 июня 2017, 22:12
0
Вынес tplCurrent в отдельный чанк, там работает.
Странно это, но нужно будет запомнить что вызывать модификаторы и фильтры нельзя в строке @INLINE
Александр Мельник
14 июня 2017, 21:28
0
Это какие-то глюки pdoResources
getResources прекрасно фильтрует.
Александр Мельник
14 июня 2017, 21:15
0
Ни по одному из передаваемых TV фильтрация не идет, возвращает ноль строк.
При всем при этом tv поля отлично отображаются в шаблоне.
Александр Мельник
14 июня 2017, 19:56
0
вот полный showlog
0.0001380: pdoTools loaded
0.0000291: xPDO query object created
0.0000350: Added TVs filters
0.0004351: Included list of tvs: warehouse_for_collection, prestig_collection, img_block_collection, country_collection, price_collection, old_price_collection
0.0002379: leftJoined modTemplateVarResource as TVwarehouse_for_collection
0.0002091: leftJoined modTemplateVarResource as TVprestig_collection
0.0003119: leftJoined modTemplateVarResource as TVimg_block_collection
0.0002148: leftJoined modTemplateVarResource as TVcountry_collection
0.0002050: leftJoined modTemplateVarResource as TVprice_collection
0.0002019: leftJoined modTemplateVarResource as TVold_price_collection
0.0004241: Added selection of modResource: SQL_CALC_FOUND_ROWS `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties`
0.0000112: Added selection of modTemplateVarResource: IFNULL(`value`, 'На заказ') AS `tv.warehouse_for_collection`
0.0000081: Added selection of modTemplateVarResource: IFNULL(`value`, 'Бизнес-класс') AS `tv.prestig_collection`
0.0000069: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.img_block_collection`
0.0000072: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.country_collection`
0.0000072: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.price_collection`
0.0000069: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.old_price_collection`
0.0000410: Replaced TV conditions
0.0002632: Processed additional conditions
0.0005989: Added where condition: 0=`TVwarehouse_for_collection`.`value` LIKE 'На заказ', modResource.parent:IN(30), modResource.published=1, modResource.deleted=0
0.0000360: Replaced TV conditions
0.0001481: Sorted by modResource.publishedon, DESC
0.0000019: Limited to 9, offset 0
0.0002871: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `modResource`.`id`, `modResource`.`type`, `modResource`.`contentType`, `modResource`.`pagetitle`, `modResource`.`longtitle`, `modResource`.`description`, `modResource`.`alias`, `modResource`.`link_attributes`, `modResource`.`published`, `modResource`.`pub_date`, `modResource`.`unpub_date`, `modResource`.`parent`, `modResource`.`isfolder`, `modResource`.`introtext`, `modResource`.`richtext`, `modResource`.`template`, `modResource`.`menuindex`, `modResource`.`searchable`, `modResource`.`cacheable`, `modResource`.`createdby`, `modResource`.`createdon`, `modResource`.`editedby`, `modResource`.`editedon`, `modResource`.`deleted`, `modResource`.`deletedon`, `modResource`.`deletedby`, `modResource`.`publishedon`, `modResource`.`publishedby`, `modResource`.`menutitle`, `modResource`.`donthit`, `modResource`.`privateweb`, `modResource`.`privatemgr`, `modResource`.`content_dispo`, `modResource`.`hidemenu`, `modResource`.`class_key`, `modResource`.`context_key`, `modResource`.`content_type`, `modResource`.`uri`, `modResource`.`uri_override`, `modResource`.`hide_children_in_tree`, `modResource`.`show_in_tree`, `modResource`.`properties`, IFNULL(`TVwarehouse_for_collection`.`value`, 'На заказ') AS `tv.warehouse_for_collection`, IFNULL(`TVprestig_collection`.`value`, 'Бизнес-класс') AS `tv.prestig_collection`, IFNULL(`TVimg_block_collection`.`value`, '') AS `tv.img_block_collection`, IFNULL(`TVcountry_collection`.`value`, '') AS `tv.country_collection`, IFNULL(`TVprice_collection`.`value`, '') AS `tv.price_collection`, IFNULL(`TVold_price_collection`.`value`, '') AS `tv.old_price_collection` FROM `office_site_content` AS `modResource` LEFT JOIN `office_site_tmplvar_contentvalues` `TVwarehouse_for_collection` ON `TVwarehouse_for_collection`.`contentid` = `modResource`.`id` AND `TVwarehouse_for_collection`.`tmplvarid` = 7 LEFT JOIN `office_site_tmplvar_contentvalues` `TVprestig_collection` ON `TVprestig_collection`.`contentid` = `modResource`.`id` AND `TVprestig_collection`.`tmplvarid` = 5 LEFT JOIN `office_site_tmplvar_contentvalues` `TVimg_block_collection` ON `TVimg_block_collection`.`contentid` = `modResource`.`id` AND `TVimg_block_collection`.`tmplvarid` = 9 LEFT JOIN `office_site_tmplvar_contentvalues` `TVcountry_collection` ON `TVcountry_collection`.`contentid` = `modResource`.`id` AND `TVcountry_collection`.`tmplvarid` = 10 LEFT JOIN `office_site_tmplvar_contentvalues` `TVprice_collection` ON `TVprice_collection`.`contentid` = `modResource`.`id` AND `TVprice_collection`.`tmplvarid` = 11 LEFT JOIN `office_site_tmplvar_contentvalues` `TVold_price_collection` ON `TVold_price_collection`.`contentid` = `modResource`.`id` AND `TVold_price_collection`.`tmplvarid` = 12 WHERE  ( `TVwarehouse_for_collection`.`value` LIKE 'На заказ' AND `modResource`.`parent` IN (30) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 )  ORDER BY modResource.publishedon DESC LIMIT 9 "
0.0006509: SQL executed
0.0000570: Total rows: 0
0.0000091: Rows fetched
0.0000181: Prepared and processed TVs
0.0000012: Returning processed chunks
0.0044119: Total time
6 553 600: Memory usage
Выполнение данного SQL запроса в PMA вернул MySQL вернула пустой результат (т.е. ноль строк). (Запрос занял 0.0009 сек.)
Александр Мельник
14 июня 2017, 19:20
0
Кирилл, ну что-то совсем у меня руки не оттуда.
Сделал фильтрацию по &tvFilters и снова ничего.
Вот результат вызова pdoResources без фильтрации и с пустым tpl
[content_type] => 1
    [uri] => kabinetyi-rukovoditelya/kabinet-4/
    [uri_override] => 0
    [hide_children_in_tree] => 0
    [show_in_tree] => 1
    [properties] => 
    [tv.warehouse_for_collection] => На заказ
То есть лежит в warehouse_for_collection строка На заказ
Вызываю тот же pdoResources с условием
[[!pdoResources?
                    
                    &parents=`[[*id]]`
                    &depth=`0`
                    &tpl=`tpl.products_office_collection`
                    &includeTVs=`warehouse_for_collection`
                    &limit=`9`
                    &tvFilters=`warehouse_for_collection==На заказ`
                    
                    
                ]]
и результат 0 строк.

Ткните носом где я еще туплю. Строковые значения на складе и на заказ заменял на числовые 0 и 1, не помоголо.

Александр Мельник
14 июня 2017, 19:08
0
Да, Вы правы.
Спасибо.
Александр Мельник
14 июня 2017, 18:28
0
А с обычным TV как быть не подскажите?
modx.pro/users/4812/tickets/
Уже пробовал и заменить строковую переменную на число, попробовал метод с LIKE и совершенно пустой результат приходит.
Спасибо.
Александр Мельник
14 июня 2017, 14:34
0
спасибо, делал так. Разве это сортировка по menuindex? Я этого не увидел, но еще раз попробую.
Александр Мельник
08 июня 2017, 22:53
0
Использовал такой же подход, он не единажды описан на просторах интернета.
А вот кто-то пробовал работать с новой невидимой каптчей гугла?
Есть опыт относительно MODX, AjaxForm и FormIt?

Александр Мельник
08 июня 2017, 20:58
0
Спасибо за направление, но уж простите не профессионала. Помогите и дальше, если не сложно.
Вот относительно моей ситуации.
Есть страница, в шаблоне которой есть div#result
Попадая на нее в первый раз внутри дива лежит вызов pdoPage, который выводит ну скажем 1 товар используя msProducts и пагинацию
<div id="result">
       
[[!pdoPage?
&parents=`[[*id]]`
  &sortby=`Data.price`
    &sortdir=`desc`
    &element=`msProducts`
    &limit=`1`
    
]]
[[!+page.nav]]  
    </div>
Попадаем на страницу и все отлично.
На странице есть ссылки, позволяющие отсортировать результаты и это происходит через JQuery.post
При клике на ссылку считываем из нее параметры, передаем их в сниппет и там через switch выбираем что запустить и что вернуть.
К примеру так
// обработка ссылок если они служат для аякс загрузки
	$('.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;
  })
при клике на ссылку получаем из нее id текущего ресурса и «указание» что делать и ajax ом передаем без перезагрузки на эту же страницу.
На странице есть снипет который ловит ajax запросы, получает значение и через свитч вызывает тот или иной сниппет с нужными параметрами.
К примеру так
//******************************************************************************
		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;
Тоесть получили с сылки значение show_price_down и вызвали сниппет pdoPage с настройками, которые вернут нам товары, отсортированные по убыванию цены.
Мой сниппет возвращает $res как строку.
В ней лежит код выводящий товары.
И этот код заменяет собой содержимое div#result
В случае если работать без pdoPage все работает чудно. Я задаю ссылкам нужные мне значения атрибутов, ловлю их в сниппете. вызываю либо msProducts или pdoResorces с нужными настройками, передаваемыми в массиве $params и все работает как часики. Но без пагинации.
Вызов pdoPage вызывает сложности.
Пагинация по умолчанию выводится в плейсхолдер [[!+page.nav]]
Если я указываю его за пределами div#result то пагинация корректно выводится только в первый заход на страницу, что логично. Когда я через аякс меняю выборку и вывожу уже не 100 товаров а 5, то я отлично переписываю содержимое div#result новыми пятью товарам, а строка с пагинацей остается не изменной. Она ведь за пределами контейнера и не сменилась при аякс запросе.
Вношу плейсхолдер [[!+page.nav]] внутрь контейнера и ожидаемый результат. При аякс запросе пагинация просто исчезает. Что логично ведь она не содержится в переменной $res, в которой лежит результат отработки вызова снипета pdoPage. Делаю свой снипет на основе pdoPage и в return кроме отработки снипета методом конкатенации добавляю значение переменной $pagination в которой как раз и лежит код пагинации. Почти радуюсь ибо теперь с каждый аякс запросом моим возвращаются и товары и новая пагинация. Чудно! НО.
При переходе по пагинации начинается вполне прогнозируемый сбой.
Ведь URL не изменяется когда я получаю данные через аякс и страница называется www.site.ru/collection независимо от того выведео у меня сейчас все 100 товаров коллекции или 5, которые отобраны по аякс запросу которые есть на складе. И стоит перейти по пагинации я попадаю на URL типа www.site.ru/collection?page=2
То есть пагинация идет по гет запросу и я вижу соверщенно не нужный мне результат. Я вижу вторую страницу не товаров которыя я отобрал а вторую страницу ВСЕХ товаров.
Надеюсь я понятно поясняю, простите за длину.
А вот попытка передать параметр ajaxMode при вызове снипета pdoPage внутри моего снипета приводит к тому, что он ничего не находит. Стоит убрать указание параметра ajaxMode и все работает чудно, но приводит к ошибкам указанным выше. Я вижу по коду снипета pdoPage что при передаче значения в него ajaxMode он просто вызывает пустой return? но пока не могу понять как с этим бороться.
Как сделать чтобы на одном URL менялось содержимое тега div#result по моему запросу а пагинация перемещала по отобранным результатам.
Спасибо всем, кто хотя бы прочел это до конца.
Александр Мельник
08 июня 2017, 18:17
0
Вечно я какие-то «не те» вопросы задаю)
Александр Мельник
08 июня 2017, 14:22
0
Поспешил я с позитивными выводами) так что все еще буду рад любым мыслям и идеям.
Александр Мельник
08 июня 2017, 14:12
0
Да, Владимир. Вы совершенно правы.
Александр Мельник
08 июня 2017, 11:50
0
Для себя я эту задачу решил, но настолько «некрасиво», что пока и не буду говорить как)
Может доработаю и напишу.
Александр Мельник
27 мая 2017, 17:31
0
Возможно я не совсем понимаю как работает заморозка в MODX.
Мне чтобы сохранить ссылочную массу с прошлого сайта нужно создать такую же структуру ссылки.
Тоесть сайт/index.php/раздел/название страницы
Включил ЧПУ, ссылки стали вида
сайт/название страницы.html
Отключил html
В системных настройках выставил параметр Использовать вложенные URL в ДА. Ссылки стали вида
сайт/index/раздел/название страницы.
Тоесть почти близко, но не index.php а просто index. Как я понимаю то это есть алиас главной страницы.
Добавляю в алиас вручную расширение php — ссылки перестают открываться идет 404 ошибка.
Нашел в системных настройках параметр — Использовать «замороженный» URI родителя. Ставклю его в да и иду на главную страницы и задаю ей «замороженный ури» index.php
Но эффект тот же — 404 и переадресация на главную.
Если Вы подскажите как при помощи заморозки задать нужную структуру — буду рад.
Спасибо.
Александр Мельник
04 апреля 2017, 16:06
0
Спасибо.
Только что сделал вот так — mycodde.blogspot.ru/2014/12/multiple-recaptcha-demo-same-page.html
Так работает.
Вроде смысл тот же, но без Jquery выборки.
Задумался. А я вот к своему стыду и не знаю — попадают ли в выборку Jquery элементы имеющие display:none
Может в этом причина, что у меня не заработал первый вариант. Ведь у меня формы в модальных окнах, которые изначально скрыты.
Александр Мельник
01 марта 2017, 15:36
0
Спасибо, Никита. Согласен, да и нет не лучшие варианты для логики компьютера, это наши человеческие аналоги 0 и 1. Так было сделано до меня и в общем-то работало.
tvfilters не использовалось, выборка шла по условию where.
Все таки прихожу ко мнению, что это глюки самого MODX.
pdoResources стал выдавать «странные» результаты, если менять порядок параметров.
Так к примеру в имена полей стали подмешиваться лишние символы.
Александр Мельник
28 февраля 2017, 13:56
0
Не выводит ничего, хотя вот данные из ресурса, который лежит в parents 14
Array
(
    [id] => 388
    [type] => document
    [contentType] => text/html
    [pagetitle] => «Сенат»: как защитить российских потребителей
    [longtitle] => 
    [description] => 
    [alias] => «senat»-kak-zashhitit-rossijskix-potrebitelej
    [link_attributes] => 
    [published] => 1
    [pub_date] => 0
    [unpub_date] => 0
    [parent] => 14
    [isfolder] => 0
    [introtext] =>  
    [richtext] => 1
    [template] => 7
    [menuindex] => 0
    [searchable] => 1
    [cacheable] => 1
    [createdby] => 1
    [createdon] => 1484129460
    [editedby] => 1
    [editedon] => 1488277887
    [deleted] => 0
    [deletedon] => 0
    [deletedby] => 0
    [publishedon] => 1484129340
    [publishedby] => 1
    [menutitle] => 
    [donthit] => 0
    [privateweb] => 0
    [privatemgr] => 0
    [content_dispo] => 0
    [hidemenu] => 0
    [class_key] => Ticket
    [context_key] => web
    [content_type] => 1
    [uri] => media/video/388.html
    [uri_override] => 1
    [hide_children_in_tree] => 0
    [show_in_tree] => 0
    [properties] => Array
        (
            [tickets] => Array
                (
                    [disable_jevix] => 
                    [process_tags] => 
                )

            [ms2gallery] => Array
                (
                    [media_source] => 2
                )

        )

    [in_home] => Да
    [idx] => 1
    [link] => 
)
Здесь виден TV [in_home] => Да