pdoResources и сравнение ТВ с числом

Добрый день!

Необходимо отобрать ресурсы, у которых обычная цена и цена по акции меньше определенного числа. У некоторых ресурсов цена по акции не заполнена. У обоих ТВ указан тип число.

Версия pdoTools — 1.9.4

Делаю так:
$_GET['to'] = 300000;
$tvFilters .= 'projectPrice<='.$_GET['to'].'||';
$tvFilters .= 'action_price<='.$_GET['to'];

$output = $modx->runSnippet('pdoPage@search',array(
        'element' => 'pdoResources',
        'tpl' => 'project_item',
        'hideContainers' => '1',
        'parents' => 2,
        'includeTVs' => 'projectPrice,action_price',
        'limit' => '10',
        'tvFilters' => $tvFilters,
        'sortbyTV' => 'projectPrice',
));


Вот такой лог:
0.0001719: pdoTools loaded
0.0000341: xPDO query object created
0.0000699: Added TVs filters
0.0004590: Included list of tvs: action_price, projectPrice
0.0003588: leftJoined modTemplateVarResource as TVaction_price
0.0003102: leftJoined modTemplateVarResource as TVprojectprice
0.0011749: 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.0000219: Added selection of modTemplateVarResource: IFNULL(`value`, '0') AS `tv.action_price`
0.0000331: Added selection of modTemplateVarResource: IFNULL(`value`, '0') AS `tv.projectPrice`
0.0000870: Replaced TV conditions
0.0017989: Processed additional conditions
0.0024650: Added where condition: 0=((`TVprojectprice`.`value` <= '300000') OR (`TVaction_price`.`value` <= '300000')), modResource.parent:IN(2,3,4,300,5,372,301,302,53,59,65,71,77,83,89,95,101,107,113,125,131,161,167,173,75,117,141,147,153,159,165,177,183,191,397,394,361,461,34,43,47,415,416,417,418,428,454,419,445,420,423,11,202,401,212,222,217,400,238,489,483,297,199,204,209,214,219,476,224,229,235,240,313,465,466,467,468,469,470,471,472,473,474,73,127,139,331,200,205,210,215,225,230,236,241,185,186,6,196,242,245,246,247,248,249,254,259,265,197,269,270,271,272,273,274,275,276,277,365,279,280,243,244,250,251,252,253,255,256,257,258,260,261,262,263,264,266,267,268,354,446,281,282,283,284,285,286,287,288,289,290,291), modResource.published=1, modResource.deleted=0, modResource.isfolder=0
0.0001020: Replaced TV conditions
0.0005360: Sorted by CAST(`TVprojectprice`.`value` AS DECIMAL(13,3)), ASC
0.0000110: Sorted by modResource.publishedon, DESC
0.0000060: Limited to 10, offset 40
0.0003431: 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(`TVaction_price`.`value`, '0') AS `tv.action_price`, IFNULL(`TVprojectprice`.`value`, '0') AS `tv.projectPrice` FROM `modx_site_content` AS `modResource` LEFT JOIN `modx_site_tmplvar_contentvalues` `TVaction_price` ON `TVaction_price`.`contentid` = `modResource`.`id` AND `TVaction_price`.`tmplvarid` = 27 LEFT JOIN `modx_site_tmplvar_contentvalues` `TVprojectprice` ON `TVprojectprice`.`contentid` = `modResource`.`id` AND `TVprojectprice`.`tmplvarid` = 6 WHERE  ( ((`TVprojectprice`.`value` <= '300000') OR (`TVaction_price`.`value` <= '300000')) AND `modResource`.`parent` IN (2,3,4,300,5,372,301,302,53,59,65,71,77,83,89,95,101,107,113,125,131,161,167,173,75,117,141,147,153,159,165,177,183,191,397,394,361,461,34,43,47,415,416,417,418,428,454,419,445,420,423,11,202,401,212,222,217,400,238,489,483,297,199,204,209,214,219,476,224,229,235,240,313,465,466,467,468,469,470,471,472,473,474,73,127,139,331,200,205,210,215,225,230,236,241,185,186,6,196,242,245,246,247,248,249,254,259,265,197,269,270,271,272,273,274,275,276,277,365,279,280,243,244,250,251,252,253,255,256,257,258,260,261,262,263,264,266,267,268,354,446,281,282,283,284,285,286,287,288,289,290,291) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 AND `modResource`.`isfolder` = 0 )  ORDER BY CAST(`TVprojectprice`.`value` AS DECIMAL(13,3)) ASC, modResource.publishedon DESC LIMIT 40, 10 "
0.0001369: SQL executed
0.0001581: Total rows: 42
0.0000391: Rows fetched
0.0035081: Prepared and processed TVs
0.0010271: Loaded chunk "project_item"
0.0117111: Returning processed chunks
0.0218921: Total time
7 602 176: Memory usage
В итоге выводятся ресурсы, у которых цена намного выше, чем необходима. Пытался и where чистый SQL писать, но ничего не добился.
Читал вот эти темы, но не получается применить правильно к своей проблеме. Темы похожи, но не помогают.
Михаил
03 октября 2014, 07:50
modx.pro
2 251
0

Динамическое обновление основной корзины

Добрый день! У меня к вам такой вопрос профессионалы, столкнулся с тем, что стандартного функционала корзины оказалось недостаточно. Дело в том что на странице корзины, у меня внизу выводятся еще каталог подарков, которые можно добавлять к в корзину к основным покупкам. Когда я щелкаю на добавление какого-то подарка, мини-корзина обновляется, а сама корзина не отображает нового подарка, который также был включен в корзину. Что можете посоветовать для решения этой проблемы? Как сделать динамичным код добавления товаров корзину. Пока у меня в чанке tpl.msCart.outer выглядит так это все:

<div id="msCart">
  <table class="table table-striped">
	<tr>
	  <th></th>
	  <th class="kv">Количество</th>
	  <th>Стоимость</th>
	</tr>
	[[+goods]]
   </table>
   <div class="promo"><span>У меня есть промокод <input type="text" /></span></div>
   <p class="full-summ"><strong>Итого:</strong> <span class="ms2_total_count">[[+total_count]]</span> <span>штук</span> стоимостью на <span class="ms2_total_cost">[[+total_cost]]</span> <span>руб.</span></p>
   <a class="back" href="[[++site_url]]">НАЗАд В КАТАЛОГ</a>   
   <a class="next-step" href="/index.php?id=7">Перейти к доставке</a>
   <!--<form method="post">
	 <button class="btn btn-default" type="submit" name="ms2_action" value="cart/clean" title="[[%ms2_cart_clean]]"><i class="glyphicon glyphicon-remove"></i>[[%ms2_cart_clean]]</button>
   </form>-->
</div>
В данном случае я так понимаю, надо вызов [[+goods]] как-то обернуть в динамический вызов, как это делается с такими элементами, как [[+total_cost]] или [[+total_count]].
Андрей
03 октября 2014, 07:40
modx.pro
1
4 442
+1

Как сделать свою форму в modx revo

Здравствуйте подскажите как сделать свою форму в ресурсе. Форма должна делать запрос к базе данных я ее сделал просто на php. теперь не знаю что писать в action ="" пишу путь она не видит скрипт вставляю скрипт тоже ничего как быть? И сразу второй вопрос подскажите статью хорошую как делать запрос к базе данных средствами modx revo?
mail
03 октября 2014, 03:05
modx.pro
947
0

minishop2 обновление стоимости доставки

Приветствую! В минишоп2 можно задать несколько вариантов доставки с различной стоимостью. При переключении доставки, итоговая стоимость соответственно должна меняться. Но у меня она меняется, только если обновить страницу корзины. Кто-нибудь сталкивался с подобным? Подскажите, плиз, как решить.
Иван Петров
02 октября 2014, 22:27
modx.pro
1 088
0

параметр mse2_search_split_words в msearch2

mse2_search_split_words — регулярное выражение для preg_split()
как бы я его не менял… в индекс набиваются слова по шаблону #\s#
В чем тонкость или секрет какой?
Володя
02 октября 2014, 20:43
modx.pro
1 430
0

Tickets вырезает тег ссылки - <a href=""><img></a>

Доброго вечера, уважаемые! Скажите, пожалуйста, как сделать так, чтобы Tickets не удалял мои ссылки из записей? Премного БлагоДарю за помощь!

А точнее надо вот такой код разрешить:
<a href=""><img src="" /></a>
и вот такой:
<object type="application/x-shockwave-flash" data="/player/dewplayer-playlist.swf" width="240" height="200" id="dewplayer1" name="dewplayer">
	<param name="wmode" value="transparent" />
	<param name="movie" value="/player/dewplayer-playlist.swf" />
	<param name="flashvars" value="showtime=true&autoreplay=true&xml=playlist1.xml" />
</object>
Пашок
02 октября 2014, 18:08
modx.pro
2 527
0

Создание галлереи

1.Необходимо на сайте создать страницу в меню с фотоальбомом: в ряду 4-5 фоток(тумб), в рамке, с названием фотки и ссылкой, размер рамки например 200 на 150, при нажатии на фотку она бы открывалась в модальном окне и в нём же добавления коммента,(или без).
2. На главной странице под колличеством страниц, установить модуль, чтобы в нём отражались в произвольном порядке 3 фото из галлереи. Сама галлерея уже устанновлена на сайте.
Сайт:Timelapseart.com

dimasik-nl@mail.ru
dimasik-nl
02 октября 2014, 10:55
modx.pro
620
0

msearch2: поиск в другой таблице и индексация

1. Можно ли настроить msearch2 так, чтобы он индексировал и искал данные также в другой таблице — компонент lingua (мультиязычность) сохраняет перевод стандартных полей в своей таблице бд, соответственно в индекс и результаты поиска попадает только основной язык, который хранится в таблице ресурсов.

2. Вопрос по работе самого msearch2. Почему некоторые слова не попадают в индекс? Например, название компании — три слова, на одном языке, 4-5 букв в каждом. По второму или третьему — находит, по первому — нет. (Удалял индекс и создавал заново). Аналогично с другой компанией — два слова на другом языке, 7 и 11 букв — первое не находит, второе — находит. Может дело в том, что эти слова уникальные и их нет в словарях? Тогда как помочь компоненту их «увидеть» и проиндексировать?
Aleksandr PL
02 октября 2014, 09:12
modx.pro
1 602
+1

[HybridAuth] Версия 1.0.0-rc без объекта haUser


На днях Николай Ланец выпустил свой компонент социальной авторизации modHybridAuth, и объяснил, зачем:

Во-первых, HybridAuth не умеет работать с родным для MODX-а компонентом Login.

Во-вторых, HybridAuth использует расширенные классы modUser, что ИМХО не есть круто, о чем я говорил уже не раз. Чем не круто? Как минимум тем, что объект пользователя не может быть инстансом сразу двух расширяющих классов. То есть если в какой-то момент появится желание использовать еще один пакет, расширяющий класс modUser, вам придется выбирать какой из этих двух пакетов использовать, так как одновременно они работать не смогут.

Первый пункт не совсем понятен. HybridAuth — самостоятельное дополнение, а не hook для Login. Они прекрасно работают вместе, и юзер, созданный через Login, может привязать к своему профилю соцсети и входить через них.
И без Login всё отлично работает — есть все нужные функции, включая редактирование профиля. Зачем устанавливать Login, если у вас на сайте вход только через соцсети?

Так что, первый пункт — скорее достоинство, а вот по поводу второго я согласен полностью.

Моя версия HybridAuth была выпущена давно, аж в 2012 году и расширение класса modUser я использовал для изменения алгоритма проверки пароля.
В то время я просто не знал, что это можно сделать через плагин вот таким способом:
case 'OnWebAuthentication':
	$modx->event->_output = !empty($_SESSION['HybridAuth']['verified']);
	unset($_SESSION['HybridAuth']['verified']);
	break;
Ну а сегодня этот метод давно проверен в Office, так что необходимость в haUser отпала и я рад предложить вам версию 1.0.0, в которой этот недостаток исправлен.

Что изменилось?
Василий Наумкин
02 октября 2014, 05:10
modx.pro
3 679
+10

Механизм ajax в MiniShop2

Добрый день! У меня вопрос такой к вам профессионалы, как реализуется все же механизм динамического обновления данных в MiniShop2? Изучая стандартные чанки, я заметил что они оборачиваются в определенные блоки. Например, для того чтобы динамически обновлялась общая стоимость покупок при изменении корзины делают так:
<span class="ms2_total_cost">[[+total_cost]]</span>
. И таким образом делаются аналогично другие поля. Где эта прописана логика, что делают контент динамичным? И пробовал я вывести общую стоимость конкретного товара в корзине, но обновления не происходило по той причине, что он не был обернут в блок. Где это можно допилить? Что-то типа такого чтобы получалось
<span class="ms2_good_cost">[[+cost]]</span>
. Кто подскажет?)
solar-wind
02 октября 2014, 02:49
modx.pro
1
5 170
0