Вопросы

Подскажите как брать ошибку!? PHP warning: Invalid argument supplied for foreach()

Добрый вечер!

Пытаюсь спарсить XML фаил с помощью catalogfill вроде в логах показывает массив но не добавляет их в TV:

[0] => Array
(
[] => Array
(
[0] => true
[1] => opt.globusceramica.ru/catalog/grespania/alabaster/13/
[2] => 3790
[3] => RUR
[4] => 96
[5] => 45x120
[6] => Глянцевая
[7] => Мрамор
[8] => Бежевый
[9] => 45
[10] => м2
[11] => 5830
)

[tv1] => opt.globusceramica.ru/upload/iblock/cd3/1ntxgpep3rui5c6xajqg8f14clrrltqw.jpg
[pagetitle] => ALABASTER ALABASTER BEIGE 45х120
)

Кусок из XML фаила именно параметры с названием не хочет
<param name="Размер"45x120</param>
Кусок из XML
<offer id="14" available="true">
     <currencyId>RUR</currencyId>
     <categoryId>96</categoryId>
     <picture>http://opt.globusceramica.ru/upload/iblock/ef2/c26wewu3mp4gqubj539u1n5i7s304o4u.jpg</picture>
     <name>ALABASTER ALABASTER TEBAS 45х120</name>
     <param name="Размер">45x120</param>
     <param name="Поверхность">Глянцевая</param>
     <param name="Рисунок">Мрамор</param>
     <param name="Color">Бежевый</param>
     <param name="РРЦ">9999</param>
 </offer>

Ошибку выдает в этом месте foreach($node as $k => $v) {:

* Переводит XML объект в массив, сохраняет значения и их xpath
     * 
     */
    public function parceXML($xmlObject, $out=array(), $level=0){
        
        //foreach($xmlObject->attributes() as $a => $b) {
        //    echo $a,'="',$b,"\"\n";
        //}
        
        foreach ((array) $xmlObject as $key => $node){
            
            //Атрибуты элемента
            if($key=='@attributes'){
                foreach($node as $k => $v) {
                    $this->keys[1][] = '@attributes.'.$k;
                    $this->values[] = trim($v);
                }
                continue;
            }
            
            if(is_object($node) || is_array($node)){
                
                //var_dump(count($this->keys[0]),$level,$key,implode('/',$this->keys[0]));
                //var_dump(implode('/',$this->keys[0])); echo "\n\n";
                
                //убираем с конца массива ключей значения, которые не соответствуют текущему уровню вложенности
                if(/*$level > 0 && */count($this->keys[0]) > $level){
                    $this->keys[0] = $this->array_mpop($this->keys[0],(count($this->keys[0]) - $level));
                }else{
                    $level = count($this->keys[0]);
                }
                if(!is_numeric($key)) $this->keys[0][] = trim($key);
                
                $out[$key] = $this->parceXML($node,$out,$level+1);
                
            }else{
                $this->keys[1][] = implode('/',array_merge($this->keys[0],array($key)));
                $this->values[] = trim($node);
                $out[$key] = trim($node);
            }
        }
        
        return $out;
    }
Подскажите где исправить!?
Дмитрий
04 сентября 2023, 18:47
modx.pro
1 056
0

Как написать условие if на множество ресурсов и родителей на Fenom

Всех приветствую, есть поле артикул, которое не нужно выводить у ряда категорий, на данный момент условие реализовано следующим образом:
{set $key = ["31","32" ,"32" ,"33" ,"34"]}
{if $_modx->resource.id in list $key}
<div class="reward"><span>Артикул:</span> <span class="item">[[+article]]</span></div>
{/if}
То есть главный родитель 31, а остальные — его подкаталоги. Но если подкаталоги добавляются, что бы не лезть в шаблон, можно ли как то сделать что бы у всех подкаталогов родителя 31 скрывался артикул?
Константин
04 сентября 2023, 11:49
modx.pro
1
1 795
0

Проблемы с ajax пагинацией в pdoPage

Включаю ajax пагинацию при скроле и вижу эффект такой, что как бы элементы на странице обновляются, но новые элементы не появляются, показываются только те же.
Я включил:
pdoPage.callbacks.after = function (config, response) {
  console.log('Конфиг после загрузки!', config);
  console.log('Ответ от сервера!', response);
}
Вижу, что ответ от сервера корректный, т.е. получаю новые элементы, но на странице их не вижу. Пробовал менять со скрола на кнопку — эффект тот же.

Помогите, куда смотреть.
Алексей
03 сентября 2023, 20:25
modx.pro
664
0

Контент основного языка в Localizator

Приветствую!

Настраиваю плагины Localizator, делаю основной язык Русский и дополнительных 2, затем у ресурсов заполняю на основном языке стандартные поля, а во вкладке Локализации перевод для других двух.

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

Подскажите кто разобрался в плагине правильно ли я делаю или есть способ без проверки на основной язык?
Konstantin
03 сентября 2023, 10:20
modx.pro
916
0

Очистка папок с кешем файлов сайта и кеша сайта по cron

Доброе!
Делал кто такое? Или кто может сделать и по чём?
1) поиск папок на сайте с заданными названиями (cache, cache-image и т.д.). Названия папок можно задавать в самом скрипте.
2) очистка найденных папок.
3) сброс кеша сайта.
Проблема при хранении картинок на сторонних серверах типа Selectel и генерации превьюшек через pThumb. За короткое время собирается большой объём файлов на сервере.
Нужно по cron периодически очищать эти папки с кешами картинок и кеш сайта.
Названия папок можно задавать прямо в sh скрипте.
Любые варианты решения проблемы приветствуются.
Решение после тестирования будет опубликовано бесплатно для всех.
Сергей Самусев
01 сентября 2023, 22:30
modx.pro
693
0

mFilter2 не выводит товары привязанные через закладку "Категории"

Добрый день! Может кто то сталкивался с тем, что товары привязанные к категории с других категорий не выводятся на странице каталога (сниппет mFilter2). Верисия mSearch2 1.14.11. Также пробовал выводить через msProducts, тот же эффект.
Заранее спасибо за подстказку!
Вовка
01 сентября 2023, 14:50
modx.pro
643
0

Как сделать чтобы виджет Whatsapp исчезал после окончания рабочего времени?

Добрый день.

Подскажите пожалуйста. У меня установлен виджет Whatsapp на сайте через php. Хочу, чтобы иконка исчезала после 17:00 и 16:00 в пятницу, чтобы ответственному лицу не писали после окончания рабочего дня. Как это можно сделать и возможно ли?
Спасибо. Я новичок. Вопросов не нашла похожих.
inkeri21
01 сентября 2023, 12:31
modx.pro
593
0

Как добавить дополнительное поле в личный кабинет на LOGIN

Добрый день, уважаемые знатоки Modx. Подскажите, как добавить дополнительное поле (файл) для пользователя на modx? Личный кабинет создан с помощью плагина LOGIN. Необходимо сделать так, чтобы в админке главный администратор мог добавлять пользователю PDF документ и чтобы он выводился в личном кабинете ссылкой. Доступ к этому документу имел бы только этот конкретный пользователь. Очень поможете, если знаете ответ.
Сергей
31 августа 2023, 09:39
modx.pro
746
0

Прибавление числа к предыдущему раз в день (Решено)

Добрый день!
Есть число (645150). Необходимо к нему прибавить рандомное число от 50 до 500. Сохранить в базе данных. И каждый день прибавлять к сохраненному числу опять рандомное число от 50 до 500 с нарастанием.
Таблицу в базе создал, значение установил.
Написал сниппет:
<?php

// подключение к базе данных MySQL
$db = new mysqli('localhost', 'root', 'root', 'kit');
 
// получение текущего значения поля
$result = $db->query('SELECT * FROM `modxkit33_number`');
$row = $result->fetch_assoc();

$number = random_int(50,500);

// увеличение значения поля на заданное число
$output = $row['meters'] + $number;
$new_value = $output;

// обновление значения поля в базе данных

$db->query('UPDATE modxkit33_number SET meters = ' . $new_value . '');

return $output;

// закрытие соединения с базой данных MySQL
$db->close();
При обновлении страницы цифра меняется и на сайте и в базе, но как выполнять раз в сутки с нарастанием не пойму. В PHP не силен :( Прошу помощи. Может кто сталкивался.
Спасибо!
Алексей
30 августа 2023, 14:25
modx.pro
721
0