Algirdas

Algirdas

С нами с 23 июля 2019; Место в рейтинге пользователей: #544
Algirdas
03 августа 2021, 10:55
0
Если вы имели ввиду на сколько много будет ресурсов, поля в которых надо пересчитать, то на первое время не более 100 штук
Algirdas
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)
Algirdas
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 почему-то так же не работает. Это ломает мне мозг.
Algirdas
03 августа 2021, 10:38
0
У меня там всего около 5-6 тестовых ресурсов, у них у всех есть поле в котором находится цифра. Плагин эти цифры просто складывает и выводит сумму значений всех полей
Algirdas
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
Algirdas
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';
то тоже работает

Я так понимаю дело в синтаксисе, но я его победить так и не смог, что только не перепробовал. Знаний не хватает, примеры похожие не нашел ((
Algirdas
28 июля 2021, 22:06
0
Хм. указал высоту в пикселях, всё равно блокирует
Algirdas
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>
Algirdas
28 июля 2021, 13:52
0
Спасибо, так и сделал по вашему совету. Откатил на 5.7
Я и до этого пробовал откат, но у меня modx посыпался. Оказалось надо было дамп сливать и на новую версию заливать ))
Вообще есть смысл стремиться к MySQL 8?
Algirdas
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
Algirdas
28 июля 2021, 10:00
0
Словил похожую ошибку. Вылечилось удалением плагина modDevTools
Algirdas
27 июля 2021, 23:50
0
Большое спасибо за подсказку! Сделал так в итоге:

[[pdoResources?
&parents=`3`
&resources=`[[mpResources? &limit=`3` &fromDate=`-14 days`]]`
&tpl=`mpArticlesMostPopularTpl`
&includeTVs=`image`
&sortby=`publishedon`
&sortdir=`DESC`
]]
Algirdas
27 июля 2021, 19:05
0
Он там должен быть как у pdoResources так и у getResources, в других местах у меня всё работает. Но я пробовал и без него )) Всё равно не работает
Algirdas
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
Algirdas
29 июня 2020, 17:38
0
Что, ни у кого никаких мыслей?
Algirdas
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 то ее нет.
Algirdas
13 июня 2020, 11:44
+1
Разобрался, modx тут вообще не при делах. Все дело в html
Algirdas
12 июня 2020, 10:07
0
Лес рук )))

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

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


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