Не уверен, что это сработает, но так как Stackoverflow — лучшее место, чтобы спросить, здесь мы идем:
Я установил Joomla CMS, добавил настроенный шаблон, добавил (платную) фотогалерею, и после всевозможных настроек все работает довольно прилично.
Фотогалерея (компонент) работает в слоях. Вы откроете сайт и окажетесь в верхнем слое. Допустим, вы увидите 4 карты: 2012, 2013, 2014 и 2015. В этих главных категориях вы можете добавлять бесконечные подкатегории, и в конце концов, есть фотографии, отображаемые на отдельных страницах с изображениями.
Пример встроенных категорий:
-Главная (домашний сайт, в основном верхняя категория)
— 2015 (подкатегория)
— Январь (подкатегория подкатегории)
—— Image.jpg (отдельная страница с изображениями находится в подкатегории Январь)
Компонент фотогалереи состоит из огромного количества файлов (в основном PHP). Поскольку я не PHP-профессионал (но я знаю, как разбираться в мелочах), я попытался выяснить, как работает компонент фотогалереи, когда дело доходит до чтения данных EXIF из его фотографий.
Идея состоит в том, чтобы извлечь дату, когда фотография была сделана из EXIF-извлечения, и отобразить ее на отдельных страницах с изображениями.
Из того, что я мог найти, данные EXIF извлекаются с помощью этого PHP-файла «функций». Код-сегмент: http://pastebin.com/hT40vJnj
Затем есть PHP-файл для отдельных страниц изображений. Следующий код показывается под каждой фотографией, а на дисплее есть пара вещей. Автор, некоторые технические вещи (разрешение, тип файла и размер файла), а также есть значок наведения мыши, который показывает все извлеченные EXIF-данные в воздушном шаре. Даже дату, о которой я говорил, чтобы извлечь и быть в состоянии отбросить, куда я хочу: http://pastebin.com/RzbjkP4e
ИЗОБРАЖЕНИЕ: EXIF Balloon (i.stack.imgur.com/S7Njc.png)
Следующая попытка (которая, вероятно, глупая), которую я уже попробовал, не сработала. Я просто попытался скопировать некоторый код из PHP-файла функций и попытался смешать его со следующим кодом в PHP-файле изображения:
echo '<i style="margin: 0 3px;cursor:default" class="icon-male dgtt-sw" title="'.JText::_('COM_DATSOGALLERY_EXIF_DATETIME').'"></i> '.strftime($ad_datef == 'customdate' ? $ad_datefc : $ad_datef, strtotime($exif_data['DateTimeOriginal'])).'<br />';
}
Я снова смешал некоторые функции PHP-кода с исходным кодом из PHP-файла изображения, как показано ниже (этот фрагмент кода показывает имя владельца фотографии на странице изображения)
echo '<i style="margin: 0 3px;cursor:default" class="icon-male dgtt-sw" title="'.JText::_('COM_DATSOGALLERY_INDIVIDUAL_AUTHOR').'"></i> '.$link.'<br />';
}
Есть ли какой-нибудь простой способ придумать строку / код, который я могу использовать, чтобы показать дату, когда была сделана фотография? Или мне нужно копать глубже?
Спасибо!
Проблема в том, что ваша функция ищет только DateTimeOriginal.
К сожалению, не всегда это поле предоставляется камерой.
Другие возможные поля, которые вы можете использовать вместо DateTimeOriginal:
Чтобы проверить все поля, которые у вас есть, используйте var_dump ($ exif_data);
Поэтому, чтобы расширить текущее поведение, вы должны изменить свой php-файл EXIF, заменив оператор $ exif_data [‘DateTimeOriginal’] if (строки 28, 29, 30 в pastebin) следующим:
$date = '';
if (isset ($exif_data['DateTimeOriginal']) != '') {
$date = $exif_data['DateTimeOriginal'];
} elseif (isset ($exif_data['DateTimeDigitized']) != '') {
$date = $exif_data['DateTimeDigitized'];
} elseif (isset ($exif_data['DateTaken']) != '') {
$date = $exif_data['DateTaken'];
} elseif (isset ($exif_data['DateModified']) != '') {
$date = $exif_data['DateModified'];
} elseif (isset ($exif_data['Datetime']) != '') {
$date = $exif_data['Datetime'];
}
if ($date != '') {
$dg_exif .= JText::_('COM_DATSOGALLERY_EXIF_DATETIME').': <span>'. strftime($ad_datef == 'customdate' ? $ad_datefc : $ad_datef, strtotime($date)).'</span>';
}
Других решений пока нет …