Игорь

Игорь

Был в сети 17 января 2025, 14:50
Заказы не принимаю
Я немного ушел в сторону.

Сниппет getTV:
<?php
// Получить родительский ресурс
$parentResource = $modx->getObject('modResource', $modx->resource->get('parent'));

if ($parentResource) {
    // Получить все TV у родительского ресурса
    $parentTvs = $parentResource->getTemplateVars();
    
    foreach($parentTvs as $tv) {
        // Проверить, существует ли такая переменная у текущего ресурса
        $currentTv = $modx->getObject('modTemplateVar', ['name' => $tv->get('name')]);
        if ($currentTv) {
            // Получить значение родительского TV
            $parentValue = $tv->getValue($parentResource->get('id'));
            // Установить значение родительского TV для текущего ресурса
            $currentTv->setValue($modx->resource->get('id'), $parentValue);
            $currentTv->save();
        }
    }
      
}
в шаблоне вызова так:
[[$vitrina]]
[[getTV]]

Проблема осталась что иногда по не понятным причинам один TV не всегда получает значение…
а именно:

[[*city_phone_whatsapp:isnot=``:then=`вывод текста`]]
да вот хотелось что б фотки и видео можно было в перемешку. Странно что нельзя расковырять migx и отключить проверку наличия загруженной фотографии.

А что если при добавлении одиночного фото у тв что б сразу в поле инпут была какая-нибудь фотка заглушка. (Тогда при удалении видео удалится и картинка и везде где она была указана у видео).
Эх, слишком сложно…

может проще чекбокс поставить на страницу в админке, если включен тогда показываем чанк одну галерею, если выключен то показываем банк от главной галереи
Migx хранит данные в json формате в том поле, которое привязывается к шаблону. По-умолчанию там, скорее всего, прописывался либо полный путь к файлу, либо относительный с учетом источника файлов для TV в которой хранится название файлов.
В случае если путь прописывался полный, то необходимо в базе вырезать кусок полного пути, чтобы получился относительный от нового источника файлов.
Подскажите можно ли как то прописать путь в конфиге tv в migx? может есть способ? может «sources»:"", или "«image»:«assets\/components\/.....» гуглил — не нашел ничего близкого
у меня два поля Migx tv

1) migx otzyv
[{"caption":"Отзывы", "fields": [
{"field":"names","caption":"Имя человека"},
{"field":"descriptions","caption":"Отзыв","inputTVtype":"richtext"},
{"field":"dates","caption":"Дата отзыва","inputTVtype":"date"},
{"field":"gallerys","caption":"Фотография от клиента","inputTV":"gallery-klient","sourceFrom":"tv"}
]
}]

[{
  "header": "Имя человека",
  "dataIndex": "names"
},{
  "header": "Отзыв",
  "dataIndex": "descriptions"
},{
  "header": "Дата отзыва",
  "dataIndex": "dates"
},{
  "renderer": "this.renderImage",
  "header": "Фотография от клиента",
  "dataIndex": "gallerys"
}]

2) migx gallery-klient
[{"caption":"Галерея", "fields": [
    {"field":"image","caption":"Заголовок","inputTVtype":"image",  "sourceFrom":"tv"},
    {"field":"title","caption":"Название картинки"}
  ]
}]

[{
  "header": "Изображение", "sortable": "false", "dataIndex": "image","renderer": "this.renderImage"
},
{
  "header": "Название", "sortable": "true", "dataIndex": "title"
}]
все равно из корня…