По ходу пьесы выяснилсь, что есть более продвинутые версии создателей панорам и фототуров как то krpano или Pano2VR. Они в отличие от photo-sphere-viewer создают единую панораму из множества файлов, а не одного - что облегчает ее загрузку и просмотр.
Pano2VR6 в Joom Gallery
Поскольку модальность в Joomla уже встроена - подключать плагины и дополнительные скрипты нет надобности, достаточно добавить в ссылку
Код: Выделить всё
class="modal" rel="{handler:'iframe',size:{x:800,y:600}}"
и она откроется в модальном окне.
1. В файл \components\com_joomgallery\views\detail\tmpl\default.php в ссылку добавляем условие для открытия ее в модальном окне (это категория 43) для вывода панорамы во всплывающем окне:
Найти:
Код: Выделить всё
<a <?php echo $this->image->atagtitle; ?> href="<?php echo $this->image->link; ?>">
<?php endif; ?>
<img src="<?php echo $this->image->img_src; ?>" class="jg_photo" id="jg_photo_big" width="<?php echo $this->image->width; ?>" height="<?php echo $this->image->height; ?>" alt="<?php echo $this->image->imgtitle;?>" <?php echo $this->extra; ?> />
<?php if($this->params->get('image_linked')): ?>
</a>
Код: Выделить всё
<!-- load link panorama -->
<?php if($this->image->catid == '43'): ?>
<object id="pano_icon" type="image/svg+xml" data="/images/script/pano2vr/360-***" width="36" height="36">
Your browser does not support SVG!
</object>
<a href="/go/?/images/com_joomgallery/pano-360/<?php echo $this->image->id;?>/index.php" title="<?php echo $this->image->imgtitle;?>" class="modal" rel="{handler:'iframe',size:{x:800,y:600}}">
<img src="<?php echo $this->image->img_src; ?>" class="jg_photo-detail" id="jg_photo_big" width="<?php echo $this->image->width; ?>" height="<?php echo $this->image->height; ?>" alt="<?php echo $this->image->imgtitle;?>" title="<?php echo $this->image->imgtitle;?>" />
</a>
<?php endif;?>
<?php if($this->image->catid <> '43'): ?>
<a <?php echo $this->image->atagtitle; ?> href="<?php echo $this->image->link; ?>" rel="lightbox">
<?php endif;?>
<?php endif; ?>
<?php if($this->image->catid <> '43'): ?>
<img src="<?php echo $this->image->img_src; ?>" class="jg_photo-detail" id="jg_photo_big" width="<?php echo $this->image->width; ?>" height="<?php echo $this->image->height; ?>" alt="<?php echo $this->image->imgtitle;?>" title="<?php echo $this->image->imgtitle;?>" <?php echo $this->extra; ?> />
<?php if($this->params->get('image_linked')): ?>
</a>
<?php endif;?>
<!----------END-------------->
2. Поскольку вместо оригинального изображения открывается файл index.php - размер оригинального изображения не несет правильной информации и его необходимо скрыть:
Найти:
Код: Выделить всё
if($this->_config->get('jg_showoriginalfilesize')): ?>
Заменить после на:
Код: Выделить всё
<?php //Hide filesize if catid = 43?>
<?php if($this->image->catid <> '43'): ?>
<div id="filesize" class="jg_row<?php $this->i++; echo ($this->i % 2) + 1; ?>">
<div class="jg_photo_left">
<?php echo JText::_('COM_JOOMGALLERY_DETAIL_INFO_FILESIZE_ORIGINAL'); ?>
</div>
<div class="jg_photo_right" id="jg_photo_filesizeorg">
<?php echo JText::sprintf('COM_JOOMGALLERY_COMMON_IMG_HW',
$this->image->orig_size,
$this->image->orig_width,
$this->image->orig_height) ?>
</div>
</div>
<!--Hide filesize if catid = 43-->
3. Панорамы хранятся в папке images\com_joomgallery\pano-360\
Файл панорамы index.html переименовываем в index.php и в начало файла добавляем запрет доступа по прямой ссылке:
Код: Выделить всё
<?php
error_reporting(0); //Запрет создания логов
function reset_url($url) {
$value = str_replace ( "http://", "", $url );
$value = str_replace ( "https://", "", $value );
$value = str_replace ( "www.", "", $value );
$value = explode ( "/", $value );
$value = reset ( $value );
return $value;
}
$_SERVER['HTTP_REFERER'] = reset_url ( $_SERVER['HTTP_REFERER'] );
$_SERVER['HTTP_HOST'] = reset_url ( $_SERVER['HTTP_HOST'] );
if ($_SERVER['HTTP_HOST'] != $_SERVER['HTTP_REFERER']) {
@header ( 'Location: ' . $config['http_home_url'] );
die ( "Access denied!<br /><br />Please visit: <a href=\"/phgallery/43-panorama-360.html\">Main Panorama page</a>" );
}
?>
4.1 Скрипты панорамы генерируются каждый раз при ее создании, и хранятся в папке с панорамой. Но нет смысла каждый раз загружать их с сервера при просмотре очередной панорамы, поэтому я их вынес в отдельную папку в index.php:
Код: Выделить всё
<script src="/images/script/pano2vr/pano2vr_player.js"></script>
<script src="/images/script/pano2vr/skin.js"></script>
<script src="/images/script/pano2vr/webvr/three.min.js" async="async"></script>
<script src="/images/script/pano2vr/webvr/webvr-polyfill.min.js" async="async"></script>
4.2 Если для какой-то панорамы или виртуального тура требуется свой скин - например с картой, в Output в поле
Advanced прописываем назание создаваемого файла js для своего скина, напр. vodkomoto_v6-map.js:

Скин pano2VR
После рендера панорамы он штатно прописывается в index.html так:
Код: Выделить всё
<script type="text/javascript" src="vodkomoto_v6-map.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?v=3&key=API_KEY"></script>
В таком случае файл скина vodkomoto_v6-map.js добавляем в папку /images/script/pano2vr/, а в файле
index.html или index.php меняем путь.
Наверняка новый скин ведь не делается для каждой новой панорамы.
Поле Автор = ссылка на страницу автора
Код: Выделить всё
\vodkomotornik\components\com_joomgallery\views\detail\tmpl\default.php
Найти:
Заменить на:
Код: Выделить всё
<?php if($this->image->author == '360'): ?>
<a href="/poleznoe/photo-articles/6-create-3d-panorama.html" title="Откроется в новом окне" class="sitelinkx" target="_blank">Создание 3D панорам в Калининграде</a>
<?php else : ?>
<?php echo $this->image->author; ?>
<?php endif; ?>
При редактировании фото на вкладке
Публикация -
Автор указываем
360 и в детальном виде будет отображаться ссылка на страницу автора.
Чтобы всем фотографиям категории записать автора как "360" достаточно выполнить запрос к БД:
Код: Выделить всё
UPDATE jos_joomgallery SET jos_joomgallery.imgauthor = "360"
WHERE jos_joomgallery.catid = 43;
Отображение панорамы, загруженной на сервис 360cities
Полученный код iframe добавляем в index.php:
Код: Выделить всё
<body>
<div id="container" style="width:100%;height:100%;overflow:hidden;">
<iframe src="https://www.360cities.net/embed_iframe/holiday-inn-kaliningrad" width="100%" height="100%" frameborder="0" bgcolor="#000000" target="_blank" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>
</div>
</body>
width и height меняем на 100%
Строки загрузки скриптов удалить за ненадобностью.
Таким образом можно экономить место и нагрузку на хостинге.
По суше: велосипед, Соболь 4х4 самый западный и LR Defender 110.
Отдохнул – отчитайся, лучшее слово – дело.