Количество загруженных изображений/видео в доп поле типа галерея

На DLE-faq был подобный запрос. Потом нашёл ответ на зерокуле, но проблема в том, что предложенный код на зерокуле - не работает, и всегда отображал количество загруженных фото/видео - 1. Обновил код, проверил на DLE 20.0 - всё работает, и выводит правильное количество загруженных медиа в доп поле типа галерея.
Установка. Найти код
$tpl->compile( 'content', true, false );
Добавить выше:
if (!function_exists('zcp_count_xfield_gallery')) {
function zcp_count_xfield_gallery($value) {
$value = trim((string) $value);
if ($value === '') {
return 0;
}
// Данные в imagegalery хранятся через запятую
// Каждый элемент может содержать описание и путь к файлу через |
// Например: "image1.jpg,image2.jpg" или "description1|image1.jpg,description2|image2.jpg"
// Разбиваем по запятой
$items = explode(',', $value);
$count = 0;
foreach ($items as $item) {
$item = trim($item);
if (empty($item)) continue;
// Проверяем, есть ли разделитель |
if (strpos($item, '|') !== false) {
$parts = explode('|', $item);
// Последняя часть - это путь к файлу
$file = end($parts);
if (!empty($file)) {
$count++;
}
} else {
// Это просто путь к файлу
$count++;
}
}
return $count;
}
}
// Получаем данные xfields
$xfieldsdata = DLEXFields::xfieldsdataload($row['xfields']);
// Для поля типа imagegalery с именем "photos"
$tpl->set('{xfcount_photos}', zcp_count_xfield_gallery($xfieldsdata['photos'] ?? ''));
//$tpl->set('{xfcount_videos}', zcp_count_xfield_gallery($xfieldsdata['videos'] ?? ''));
Тег для видео я закомментировал, проверку делал только на количество загруженных изображений.
Или можно скачать плагин, и прописать свои доп поля вместо photos и videos.
Вариант 2 (TeraMoune) 🔗
Имя файла: engine/classes/xfields.class.php
Найти:
if (count($gallery_single_image)) {
Добавить выше:
$tpl->set( '{xf_count_'.$value['name'].'}', $xf_image_count );
Найти:
if (count($playlist_single)) {
Добавить выше
$tpl->set( '{xf_count_'.$value['name'].'}', $xf_playlist_count );