Algirdas

Algirdas

С нами с 23 июля 2019; Место в рейтинге пользователей: #586
03 августа 2021, 10:55
0
Если вы имели ввиду на сколько много будет ресурсов, поля в которых надо пересчитать, то на первое время не более 100 штук
03 августа 2021, 10:51
0
<?php
$values = array();
$type = "1";
$ids = $modx->runSnippet('pdoResources', array(
	 'parents' => $parents,
	 'limit' => 0,
	 'returnIds' => 1,
	 'includeTVs' => 'certificateBuildingType',
	 'tvFilters' => 'certificateBuildingType=='.$type

));
$resources = explode(',', $ids);
foreach($resources as $id){
	 $resource = $modx->getObject('modResource', $id);
	 $tv = $resource->getTVValue($tvname);
	 if(is_numeric($tv)) $values[] = $tv;
}
$out = array_sum($values); 
print_r($scriptProperties);
return $out;
Мне кажется я не правильно им воспользовался. Если так вставлять, то просто перестает считать и вместо цифры выводит NaN. Я чайник (facepalm)
03 августа 2021, 10:42
0
Неа, так тоже не сработало. Вот такая конструкция работает:

<?php

$values = array();
$type = "1";
$ids = $modx->runSnippet('pdoResources', array(
	 'parents' => $parents,
	 'limit' => 0,
	 'returnIds' => 1,
	 'includeTVs' => 'certificateBuildingType',
	 'tvFilters' => 'certificateBuildingType=='.$type

));
$resources = explode(',', $ids);
foreach($resources as $id){
	 $resource = $modx->getObject('modResource', $id);
	 $tv = $resource->getTVValue($tvname);
	 if(is_numeric($tv)) $values[] = $tv;
}
$out = array_sum($values); 

return $out;
То есть я так понимаю без разницы в каком виде передается цифра. Что интересно, значение $parents которое берется из вызова сниппета передается нормально, а вот с $type почему-то так же не работает. Это ломает мне мозг.
03 августа 2021, 10:38
0
У меня там всего около 5-6 тестовых ресурсов, у них у всех есть поле в котором находится цифра. Плагин эти цифры просто складывает и выводит сумму значений всех полей
02 августа 2021, 23:35
0
Чот вот так
$modx->log(1, print_r($array, 1),'HTML');
пробовал в начале конструкции вставлять, ничего не выводится дополнительно к тому что должно.

А так когда не срабатывает в целом, страница не загружается и ругается таким образом:

Fatal error: Uncaught Error: Call to a member function getTVValue() on null in C:\bla-bla\core\cache\includes\elements\modsnippet\34.include.cache.php:15 Stack trace: #0 C:\bla-bla\core\model\modx\modscript.class.php(76): include() #1 C:\bla-bla\core\model\modx\modparser.class.php(537): modScript->process(NULL) #2 C:\bla-bla\core\components\pdotools\model\pdotools\pdoparser.class.php(273): modParser->processTag(Array, true) #3 C:\bla-bla\core\model\modx\modparser.class.php(251): pdoParser->processTag(Array, true) #4 C:\bla-bla\core\components\pdotools\model\pdotools\pdoparser.class.php(65): modParser->processElementTags('', '<!DOCTYPE html>...', true, false, '[[', ']]', Array, 9) #5 C:\bla-bla\core\model\modx\modresource.class.php(546): pdoParser->processElementTags('', '<!DOCTYPE html>...', true, false, '[[', ']]', Array, 10) #6 C:\bla-bla\core\model\modx\modresou in C:\bla-bla\core\cache\includes\elements\modsnippet\34.include.cache.php on line 15
01 августа 2021, 15:47
0
Спасибо! Всё сработало. Чуть дописал сниппет для возможности фильтрации и снова затык

<?php
$values = array();
$ids = $modx->runSnippet('pdoResources', array(
	 'parents' => $parents,
	 'limit' => 0,
	 'returnIds' => 1,
	 'includeTVs' => 'certificateBuildingType',
	 'tvFilters' => 'certificateBuildingType=='. $type

));
$resources = explode(',', $ids);
foreach($resources as $id){
	 $resource = $modx->getObject('modResource', $id);
	 $tv = $resource->getTVValue($tvname);
	 if(is_numeric($tv)) $values[] = $tv;
}
$out = array_sum($values); 
return $out;
Вот эта строка не работает
'tvFilters' => 'certificateBuildingType=='. $type
Вызываю так:
[[!countArea?&parents=`5`&tvname=`certificateArea`&type=`1`]]
Если напрямую написать
'tvFilters' => 'certificateBuildingType=='.'1'
То работает. Если в самом начале написать
$type = '1';
то тоже работает

Я так понимаю дело в синтаксисе, но я его победить так и не смог, что только не перепробовал. Знаний не хватает, примеры похожие не нашел ((
28 июля 2021, 22:06
0
Хм. указал высоту в пикселях, всё равно блокирует
28 июля 2021, 15:45
0
Всё, сам допер )))

<li class="top-links-item"><a href="#">[[++cultureKey:is=`ru`:then=`<i class="flag flag-ru"></i> RU` :else=`<i class="flag flag-en"></i> EN`]]</a>
    <ul class="top-links-sub-menu">
        [[BabelLinks? &showCurrent=`1` &tpl=`babelLinksTpl`]]
    </ul>
</li>
28 июля 2021, 13:52
0
Спасибо, так и сделал по вашему совету. Откатил на 5.7
Я и до этого пробовал откат, но у меня modx посыпался. Оказалось надо было дамп сливать и на новую версию заливать ))
Вообще есть смысл стремиться к MySQL 8?
28 июля 2021, 10:43
0
Установил плагин, ничего не настраивал. Вкладка локализация -> добавить перевод, ловлю вот такую ошибку:

[2021-07-28 13:34:23] (ERROR @ C:\OpenServer\domains\kgbc.loc\core\xpdo\om\xpdoobject.class.php : 240)
Error 42000 executing statement: 
Array
(
    [0] => 42000
    [1] => 1064
    [2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ASC, category ASC' at line 1
)

MODX Revolution 2.8.3-pl
MySQL-8.0-Win-10
OpenServer 5.4.0
28 июля 2021, 10:00
0
Словил похожую ошибку. Вылечилось удалением плагина modDevTools
27 июля 2021, 23:50
0
Большое спасибо за подсказку! Сделал так в итоге:

[[pdoResources?
&parents=`3`
&resources=`[[mpResources? &limit=`3` &fromDate=`-14 days`]]`
&tpl=`mpArticlesMostPopularTpl`
&includeTVs=`image`
&sortby=`publishedon`
&sortdir=`DESC`
]]
27 июля 2021, 19:05
0
Он там должен быть как у pdoResources так и у getResources, в других местах у меня всё работает. Но я пробовал и без него )) Всё равно не работает
25 июля 2021, 15:15
0
Проблема в том, что это не мой код, я его взял на просторах интернета. Сам я писать вообще не умею. И в оригинале там так и было:

$tv = $resource->getTVValue($tvname);
Но в таком случае у меня выдает ошибку:

Fatal error: Uncaught Error: Call to a member function getTVValue() on null in C:\bla-bla\core\cache\includes\elements\modsnippet\34.include.cache.php:11 Stack trace: #0 C:\bla-bla\core\model\modx\modscript.class.php(76): include() #1 C:\bla-bla\core\model\modx\modparser.class.php(537): modScript->process(NULL) #2 C:\bla-bla\core\components\pdotools\model\pdotools\pdoparser.class.php(273): modParser->processTag(Array, true) #3 C:\bla-bla\core\model\modx\modparser.class.php(251): pdoParser->processTag(Array, true) #4 C:\bla-bla\core\components\pdotools\model\pdotools\pdoparser.class.php(65): modParser->processElementTags('', '<!DOCTYPE html>...', true, false, '[[', ']]', Array, 9) #5 C:\bla-bla\core\model\modx\modresource.class.php(546): pdoParser->processElementTags('', '<!DOCTYPE html>...', true, false, '[[', ']]', Array, 10) #6 C:\bla-bla\core\model\modx\modresou in C:\bla-bla\core\cache\includes\elements\modsnippet\34.include.cache.php on line 11
29 июня 2020, 17:38
0
Что, ни у кого никаких мыслей?
18 июня 2020, 17:10
0
Почему-то не работает вообще. Вызываю вот так:

[[!msProducts?
    &parents=`14`
    &toSeparatePlaceholders=`test`
    &tpl=`tpl.productBox`
    ]]
На странице ничего не выводится. Стоит только убрать &toSeparatePlaceholders=`test` — все выводится (содержимое tpl.productBox). Пытался вызывать &tpl=`` чтобы все плейсхолдеры посмотреть — тоже тишина естественно.

Еще и ошибка непонятная появляется когда делаю вызовы msproducts и getImageList выше на странице:

(ERROR @ /var/www/vhosts/site.com/httpdocs/core/xpdo/om/xpdoquery.class.php : 764) Encountered empty IN condition with key id
Не знаю что именно ее выдает, но если оставить только статичный html то ее нет.
13 июня 2020, 11:44
+1
Разобрался, modx тут вообще не при делах. Все дело в html
12 июня 2020, 10:07
0
Лес рук )))

Обнаружилась проблема, при попытке добавить количество меньше 1, то есть 0.3 например, minishop2 ругается что количество не может быть 0. Подскажите пожалуйста, где это исправить?
09 июня 2020, 14:14
0
Да, ошибки я в логах смотрю, но страница не выводится вообще. При стандартном синтаксисе не выводится только блок с ошибкой. Вот в этом и вопрос — это нормально или я что-то не так делаю?
09 июня 2020, 13:20
0
Да, вы правы. В чанке head была закомментированная запись:

<!--     <link rel="stylesheet" href="[[~35]]">  -->


Убрал ее и ошибка появляться перестала.