JoomGallery - тюнинг и усовершенствование: модули, позиции, вывод, отображение

Небольшие заметки о html, css, sql, php

Модератор: Valery

Правила форума
Гость видит 250 символов 1 сообщения
Аватара пользователя
Valery
Без группы
Без группы
Сообщения: 22268
На борту с: 07.02.2005 10:00
Награды: 5
Из: Тридевятое царство

Решено JoomGallery - тюнинг и усовершенствование: модули, позиции, вывод, отображение

Сообщение Valery »

В галерее 4 позиции модулей.

jg_top: будет показан выше пути JoomGallery;
jg_btm: внизу;
jg_detailbtm: под средним изображением;
jg_detailpane: в подробном представлении ниже информации об изображении.  Если активирован аккордеон слайдер.

Чтобы опубликовать модуль в одной из этих позиций пропишите руками название позиции. Эти позиции не выбираются из списка!

Вы можете достичь этого с более указанной позиции jg_top_gal.  Jg_top позиции означает, как описано показывает модуль выше пути и _gal суффиксом приводит к отображению модуля только на вид галереи.

Если есть еще модули расположены на jg_top они будут показаны Кроме того на всех страницах галереи.

Вы можете использовать следующие суффиксы:
_gal: будет показан на главной Галереи;
_cat: будет показан в Категории;
_dtl: будет показан в Детальном виде;
_spc: будет показан в Топ-лист и с результатами пoиск а;
_fav: будет показан вместе с фаворитами;
_usp: будет показан в userpanel;
_upl: будет показан на странице загрузки.

Т.е. можно составлять позиции самостоятельно из нескольких слогов, например:
jg_btm_gal - модуль будет показан внизу главной страницы галереи.

We thought this are the most essential ones. But you can control other sites in the gallery by using the value assigned to view as suffix. You can find them in the URL on each site (e.g. &view=downloadzip).
Так jg_btm_downloadzip "будет загрузить модуль в нижней части в галерее, но только на том месте, где вы можете скачать ZIP с вашим любимым.
JoomGallery - скрыть длинное описание для того, чтобы развернуть
Версия JoomGallery записана в файле administrator\components\com_joomgallery\joomgallery.xml
Последний раз редактировалось Valery 24.04.2015 08:24, всего редактировалось 1 раз.
По суше: велосипед, Соболь 4х4 самый западный и LR Defender 110.
Отдохнул – отчитайся, лучшее слово – дело.

Теги:
Аватара пользователя
Valery
Без группы
Без группы
Сообщения: 22268
На борту с: 07.02.2005 10:00
Награды: 5
Из: Тридевятое царство

Модуль вывода последних фотографий на форуме SMF из JoomGallery

Сообщение Valery »

Модуль вывода последних фотографий на форуме SMF из JoomGallery

Код: Выделить всё

<?php

if (!defined(SMF))
	die(Hacking attempt...);

    // Сервер, юзер, пароль для базы данных  
	global $db_server, $db_user, $db_passwd, $db_name, $db;
if (
	 $db = mysql_connect($db_server,$db_user,$db_passwd)) 
	 {
		//Имя базы данных где стоит фотогалерея JoomGallery
		mysql_select_db($db_name);
		
		/*Опции для вывода фотографий. Для выбора нужной опции раскомментируйте нужный блок и закомментируйте предыдущий*/
		//Случайные фотографии из галереи
		//$orderby = "rand()";
		
		//Последние фотографии из галереи
		$orderby = "imgdate DESC";
		
		//Самые популярные фотографии из галереи
		//$orderby = "hits DESC";
		
		//Самые рейтинговые фотографии из галереи
		//$orderby = "imgvotes DESC";
		/*Конец опции*/
		
		//Количество выводимых фотографий
		$max = 1;
		
		//Производим выборку данных из базы
		//$query = "SELECT id, imgtitle, imgdate, imgthumbname, catid, imgvotes, hits FROM jos_joomgallery WHERE approved = 1 ORDER BY ".$orderby." LIMIT ".$max." ";
		//Производим выборка данных из базы + путь до категории - надо для ссылки на фото.
		/*$query = "SELECT id, imgtitle, imgdate, imgthumbname, catid, imgvotes, hits, jos_joomgallery_catg.catpath, jos_joomgallery_catg.alias
FROM jos_joomgallery_catg INNER JOIN jos_joomgallery ON jos_joomgallery_catg.cid = jos_joomgallery.catid WHERE approved = 1 ORDER BY ".$orderby." LIMIT ".$max." ";*/
		//Производим выборка данных из базы + путь до категории - надо для ссылки на фото + имя автора
		$query = "SELECT jos_joomgallery.id, jos_joomgallery.imgtitle, jos_joomgallery.imgdate, jos_joomgallery.imgthumbname, jos_joomgallery.catid, jos_joomgallery_catg.name AS cat_name, jos_joomgallery.imgvotes, jos_joomgallery.hits, jos_joomgallery_catg.catpath, jos_joomgallery_catg.alias, jos_users.name
FROM jos_users INNER JOIN (jos_joomgallery_catg INNER JOIN jos_joomgallery ON jos_joomgallery_catg.cid = jos_joomgallery.catid) ON jos_users.id = jos_joomgallery.owner
WHERE (((jos_joomgallery.approved)=1)) ORDER BY ".$orderby." LIMIT ".$max." ";

		$img = mysql_query($query);
		
		//echo <div align="center"><h4>Фотографии из галереи</h4></div>;
		echo <table width="100%" border="0" cellspacing="0" cellpadding="0" align="center">;
		
		//Каждую запись считываем в массив и выводим в браузер
		echo <tr>;
		while($image=mysql_fetch_assoc($img)) {		
        
		//Ссылка на фотографию JoomGallery
		$patch_gallery = $image[id];		
		//Itemid вашей фотогалереи. Можно узнать в админке Joomla - Пункты меню:
		//$itemid = 100004;
			
		//Ссылка на страницу с фото вида: http://сайт/алиас_пункта_меню_галереи/алиас_категории/id фотографии.html
		echo <td align="center" valign="top"><a href="../../../phgallery/. $image[alias] . /. $image[id] . .html" target="_blank">;
		//Штатный вариант НЕ SEO ссылки:
		//echo <td align="center" valign="top"><a href=../index.php?view=detail&id=.$patch_gallery.&option=com_joomgallery&Itemid=.$itemid.>;
		//Путь к превью фотографий
		echo <img align="center"  class="image_thumb" src="../../../images/com_joomgallery/img_thumbnails/. $image[catpath] . / .$image["imgthumbname"]." title="Откроется в новом окне" /></a>;
		echo <br /><b class="smalltext">.$image[imgtitle].</b><br />;
		echo <span class="smalltext">Категория: .$image[cat_name].</span><br />;
		echo <span class="smalltext">Просмотров: .$image[hits].</span><br />;
		echo <span class="smalltext">Автор: .$image[name].</span><br />;
		echo </td>;		
		}
		echo </tr></table>;
				
		//Закрываем соединение
		mysql_close($db);
     }
else {
        echo "Не удалось установить подключение к базе данных...";
}

?>
По суше: велосипед, Соболь 4х4 самый западный и LR Defender 110.
Отдохнул – отчитайся, лучшее слово – дело.
Аватара пользователя
Valery
Без группы
Без группы
Сообщения: 22268
На борту с: 07.02.2005 10:00
Награды: 5
Из: Тридевятое царство

Re: Модули JoomGallery

Сообщение Valery »

В детальном виде выводится Название модуля, которое не скрывается, даже если в настройках модуля стоит "Скрыть заголовок".

Открыть файл \components\com_joomgallery\views\detail\tmpl\default.php
Найти:

Код: Выделить всё

<div class="jg_panemodule">
Удалить код:

Код: Выделить всё

    <div class="sectiontableheader">
      <h4 <?php echo $this->toggler; ?>>
        <?php echo $module->title; ?>
      </h4>
    </div>
Последний раз редактировалось Valery 01.03.2014 09:34, всего редактировалось 1 раз.
По суше: велосипед, Соболь 4х4 самый западный и LR Defender 110.
Отдохнул – отчитайся, лучшее слово – дело.
Аватара пользователя
Valery
Без группы
Без группы
Сообщения: 22268
На борту с: 07.02.2005 10:00
Награды: 5
Из: Тридевятое царство

Re: Модули JoomGallery

Сообщение Valery »

Стили модуля mod_joomimg
vodkomotornik.ru\media\mod_joomimg\css\mod_joomimg.css
переносим в шаблон, т.к. модуль выводится на всех страницах и нет смысла подгружать еще один файл.

Открыть:
vodkomotornik.ru\modules\mod_joomimg\helper.php
Найти:

Код: Выделить всё

$doc->addStyleSheet(JURI::base().media/mod_joomimg/css/mod_joomimg.css);
Заменить на:

Код: Выделить всё

//$doc->addStyleSheet(JURI::base().media/mod_joomimg/css/mod_joomimg.css);

Стиль превью как на сайте class="image_thumb"

vodkomotornikmodulesmod_joomimg\helper.php
Найти:

Код: Выделить всё

          $objects[$key]->imgelem .=     <img src="
                   .$obj->imagesource."
                   .$obj->css_styledimension
Заменить на:

Код: Выделить всё

          $objects[$key]->imgelem .=     <img src="
                   .$obj->imagesource."
				   . class="image_thumb"
                   //.$obj->css_styledimension

Стили модуля mod_jgtreeview
vodkomotornik.ru/media/mod_jgtreeview/css/dtree.css
vodkomotornik.ru/media/mod_jgtreeview/css/jgtreeview.css
Перенести в шаблон, и отрубить загрузку 2х css.

Открыть:
vodkomotornik.ru\modules\mod_jgtreeview\helper.php

Найти:

Код: Выделить всё

    $document->addStyleSheet(JURI::root() . media/mod_jgtreeview/css/dtree.css);
    $document->addStyleSheet(JURI::root() . media/mod_jgtreeview/css/jgtreeview.css);
Заменить на:

Код: Выделить всё

    //$document->addStyleSheet(JURI::root() . media/mod_jgtreeview/css/dtree.css);
    //$document->addStyleSheet(JURI::root() . media/mod_jgtreeview/css/jgtreeview.css);
Последний раз редактировалось Valery 13.07.2013 03:50, всего редактировалось 1 раз.
По суше: велосипед, Соболь 4х4 самый западный и LR Defender 110.
Отдохнул – отчитайся, лучшее слово – дело.
Аватара пользователя
Valery
Без группы
Без группы
Сообщения: 22268
На борту с: 07.02.2005 10:00
Награды: 5
Из: Тридевятое царство

Решено JoomGallery владелец фото при загрузке из админки

Сообщение Valery »

При загрузке фото из админки Владелец фото: Нет пользователя

administrator\components\com_joomgallery\helpers\upload.php
Найти:

Код: Выделить всё

    // Owner
    if($this->_site)
    {
      $row->owner   = $this->_user->get(id);
    }
    else
    {
      $row->owner   = 0;
    }
Заменить на:

Код: Выделить всё

// Owner
      $row->owner         = $this->_user->get(id);
      $row->approved      = 1;
      $row->ordering      = $this->_getOrdering($row);
По суше: велосипед, Соболь 4х4 самый западный и LR Defender 110.
Отдохнул – отчитайся, лучшее слово – дело.
Аватара пользователя
Valery
Без группы
Без группы
Сообщения: 22268
На борту с: 07.02.2005 10:00
Награды: 5
Из: Тридевятое царство

Re: Модули JoomGallery

Сообщение Valery »

Оформление превью в категориях стилем image_thumb:
vodkomotornik.ru\components\com_joomgallery\views\category\tmpl\default_images.php

Найти:

Код: Выделить всё

<img src="<?php echo $row->thumb_src; ?>" class="jg_photo" <?php echo $row->imgwh; ?> alt="<?php echo $row->imgtitle; ?>" /></a>
Заменить на:

Код: Выделить всё

<img src="<?php echo $row->thumb_src; ?>" align="left" class="image_thumb" <?php echo $row->imgwh; ?> alt="<?php echo $row->imgtitle; ?>" /></a>
Последний раз редактировалось Valery 11.07.2013 03:32, всего редактировалось 1 раз.
По суше: велосипед, Соболь 4х4 самый западный и LR Defender 110.
Отдохнул – отчитайся, лучшее слово – дело.
Аватара пользователя
Valery
Без группы
Без группы
Сообщения: 22268
На борту с: 07.02.2005 10:00
Награды: 5
Из: Тридевятое царство

Позиция модуля под средним фото JoomGallery

Сообщение Valery »

Позиция модуля под средним фото.
com_joomgallery/views/detail/tmpl/default.php
Найти:

Код: Выделить всё

<div class="jg_details">
Добавить перед:

Код: Выделить всё

<?php
	jimport(joomla.application.module.helper);
    $mods = JModuleHelper::getModules(user5);
    echo JModuleHelper::renderModule($mods[0]);
?>
По суше: велосипед, Соболь 4х4 самый западный и LR Defender 110.
Отдохнул – отчитайся, лучшее слово – дело.
Аватара пользователя
Valery
Без группы
Без группы
Сообщения: 22268
На борту с: 07.02.2005 10:00
Награды: 5
Из: Тридевятое царство

JoomGallery - скрыть длинное описание для того, чтобы развернуть

Сообщение Valery »

1. В components\com_joomgallery\views\detail\tmpl\default.php
Добавить в начало:

Код: Выделить всё

<!-- Spoiler detail info -->  
<script>
$(document).ready(function(){
    $('.button').click(function(){
    $('.block').toggleClass('opener');
   if (!$(this).data('status')) {
    $(this).data('status', true).html('Скрыть блок');
      } else {
        $(this).data('status', false).html('Раскрыть описание...');
      }
    });
});
</script>
2. Ниже, блок информации о фото заменить на такой:

Код: Выделить всё

<div class="jg_photo_right block" id="jg_photo_description">
 <?php echo JHTML::_('joomgallery.text', $this->image->imgtext); ?>
</div>
<a href="#joomimg" class="button">Раскрыть описание...</a>
3. В joomgallery.css добавить стили:

Код: Выделить всё

/*Spoiler detail info*/
.block{height:100px;overflow:hidden;position:relative}
.block.opener{height:auto}
.block:after{content:"";width:100%;left:0;position:absolute;height:50px;bottom:0;background:-moz-linear-gradient(top,rgba(245,245,245,0) 0%,rgba(245,245,245,1) 100%);background:-webkit-linear-gradient(top,rgba(245,245,245,0) 0%,rgba(245,245,245,1) 100%);background:linear-gradient(to bottom,rgba(245,245,245,0) 0%,rgba(245,245,245,1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ffffff',endColorstr='#ffffff',GradientType=0)}
.block.opener:after{opacity:0}
Вуаля! :icon_beer:
По суше: велосипед, Соболь 4х4 самый западный и LR Defender 110.
Отдохнул – отчитайся, лучшее слово – дело.
Аватара пользователя
Valery
Без группы
Без группы
Сообщения: 22268
На борту с: 07.02.2005 10:00
Награды: 5
Из: Тридевятое царство

JoomGallery: Ошибка RuntimeException: Недопустимое поле: cid in vodkomotornik.ru\libraries\src\Form\Form.php:2079

Сообщение Valery »

При сохранении фото в админке ошибка:
Ошибка
RuntimeException: Недопустимое поле: cid in vodkomotornik.ru\libraries\src\Form\Form.php:2079 Stack trace: #0 vodkomotornik.ru\libraries\src\Form\Form.php(1226): Joomla\CMS\Form\Form->validateField(Object(SimpleXMLElement), '', '1', Object(Joomla\Registry\Registry)) #1 vodkomotornik.ru\administrator\components\com_joomgallery\models\image.php(1010): Joomla\CMS\Form\Form->validate(Array) #2 vodkomotornik.ru\administrator\components\com_joomgallery\models\image.php(247): JoomGalleryModelImage->_validate(Object(Joomla\CMS\Form\Form), Array) #3 vodkomotornik.ru\administrator\components\com_joomgallery\controllers\images.php(462): JoomGalleryModelImage->store() #4 vodkomotornik.ru\libraries\src\MVC\Controller\BaseController.php(710): JoomGalleryControllerImages->save() #5 vodkomotornik.ru\administrator\components\com_joomgallery\joomgallery.php(68): Joomla\CMS\MVC\Controller\BaseController->execute('apply') #6 vodkomotornik.ru\libraries\src\Component\ComponentHelper.php(402): require_once('F:\OSPanel\doma...') #7 vodkomotornik.ru\libraries\src\Component\ComponentHelper.php(377): Joomla\CMS\Component\ComponentHelper::executeComponent('F:\OSPanel\doma...') #8 vodkomotornik.ru\libraries\src\Application\AdministratorApplication.php(101): Joomla\CMS\Component\ComponentHelper::renderComponent('com_joomgallery') #9 vodkomotornik.ru\libraries\src\Application\AdministratorApplication.php(159): Joomla\CMS\Application\AdministratorApplication->dispatch() #10 vodkomotornik.ru\libraries\src\Application\CMSApplication.php(196): Joomla\CMS\Application\AdministratorApplication->doExecute() #11 vodkomotornik.ru\administrator\index.php(51): Joomla\CMS\Application\CMSApplication->execute() #12 {main}

Открыть:
\vodkomotornik.ru\administrator\components\com_joomgallery\models\forms\image.xml
Удалить:
disabled="true"

Код: Выделить всё

    <field
      name="cid"
      type="text"
      class="readonly"
      label="COM_JOOMGALLERY_IMGMAN_IMAGE_ID"
      size="20"
      readonly="true"
      disabled="true"
    />
По суше: велосипед, Соболь 4х4 самый западный и LR Defender 110.
Отдохнул – отчитайся, лучшее слово – дело.
Аватара пользователя
Valery
Без группы
Без группы
Сообщения: 22268
На борту с: 07.02.2005 10:00
Награды: 5
Из: Тридевятое царство

Микроразметка schema.org и Open Graph в JoomGallery - ImageObject

Сообщение Valery »

Файл: components\com_joomgallery\views\detail\tmpl\default.php
Добавить в начале:

Код: Выделить всё

<div class="hide" itemscope itemtype="http://schema.org/ImageObject">
  <h1 itemprop="name"><?php echo $this->escape($this->image->imgtitle); ?></h1>
  <img src="<?php echo $this->image->img_src; ?>" alt="<?php echo $this->image->imgtitle;?>" itemprop="contentUrl" />
  Автор: <span itemprop="author"><?php echo $this->image->author; ?></span>
  Дата загрузки: <meta itemprop="datePublished" content="<?php echo JHTML::_(date, $this->image->imgdate, JText::_(Y-m-d)); ?>">
  Описание: <span itemprop="description"><?php echo JHTML::_(joomgallery.text, $this->image->imgtext); ?></span>
</div>

В 2020 м году schema.org/Article не допускает звездного рейтинга.

Поэтому схему сделал такую:

Код: Выделить всё

<section  style="display:none;" itemscope itemtype="http://schema.org/Article">
 <h1 itemprop="headline"><?php echo $this->escape($this->image->imgtitle); ?></h1>
 <time itemprop="datePublished" datetime="<?php echo JHTML::_(date, $this->image->imgdate); ?>"><?php echo JHTML::_(date, $this->image->imgdate); ?></time>
<div itemscope itemprop="image" itemtype="http://schema.org/ImageObject">
 <img itemprop="url contentUrl" src="<?php echo $this->image->img_src; ?>" alt="<?php echo $this->image->imgtitle;?>" alt="<?php echo $this->escape($this->image->imgtitle); ?>" style="display:none;">
 <meta itemprop="url" content="<?php echo $this->image->img_src; ?>" alt="<?php echo $this->image->imgtitle;?>">
 <meta itemprop="width" content="<?php echo $this->image->width; ?>">
 <meta itemprop="height" content="<?php echo $this->image->height; ?>">
</div>
<article itemprop="articleBody">
 <?php echo JHTML::_('joomgallery.text', $this->image->imgtext); ?>
</article>
<div>Автор: <span itemprop="author"><?php echo $this->image->author; ?></span></div>
<div itemprop="publisher" itemscope itemtype="https://schema.org/Organization">
 <div itemprop="logo" itemscope itemtype="https://schema.org/ImageObject">
 <img itemprop="url image" src="android-chrome-256x256.png"/>
 <meta itemprop="width" content="256">
 <meta itemprop="height" content="256">
 </div>
 <meta itemprop="name" content="Фотогалерея">
 <meta itemprop="address" content="г. Калининград">
</div>
 <meta itemprop="dateModified" content="<?php echo JHTML::_('date', $this->image->imgdate, JText::_('Y-m-d')); ?>" />
 <meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="/poleznoe/photo-articles/6-create-3d-panorama.html" />
</section>

Добавление Open Graph в JoomGallery
Можно получить добавив в код в
\vodkomotornik\components\com_joomgallery\views\detail\tmpl\default.php

Код: Выделить всё

<!--13-->
<?php
//Получаем URL текущей страницы 
function getUrl() {
  $url  = @( $_SERVER["HTTPS"] != 'on' ) ? 'http://'.$_SERVER["SERVER_NAME"] :  'https://'.$_SERVER["SERVER_NAME"];
  $url .= ( $_SERVER["SERVER_PORT"] != 80 ) ? ":".$_SERVER["SERVER_PORT"] : "";
  $url .= $_SERVER["REQUEST_URI"];
  return $url;
} 
?>

<meta property="og:url"				content="<?php echo getUrl(); ?>" />
<meta property="og:type"			content="article" />
<meta property="og:title"			content="<?php echo $this->escape($this->image->imgtitle); ?>" />
<meta property="og:description"		content="<?php echo JHTML::_('joomgallery.text', $this->image->imgtext); ?>" />
<meta property="og:image"			content="<?php echo $this->image->img_src; ?>" />
<meta property="og:image:type"		content="image/png">
<meta property="og:image:width"		content="<?php echo $this->image->width; ?>" />
<meta property="og:image:height"	content="<?php echo $this->image->height; ?>" />
<meta property="fb:app_id"			content="353564218137992" />
<!--32-->
Но FB будет ругаться, что разметка внутри body, а не head.

Для добавления разметки Open Graph FB отлично работает плагин - Phoca Open Graph System Plugin

За исключением того, что если поле Description у фото не заполнено (конечно же оно пустое, т.к. это дублировае имеющихся данных) - Description будет браться из описания категории или сайта (смотря какие настройки).
Можно конечно Description (jos_joomgallery.metadesc) продублировать запросом через CRON, а можно его игнорировать, и брать данные из поля jos_joomgallery.imgtext, т.к. jos_joomgallery.imgtext (описание фото) заполнено наверняка.

Открыть:

Код: Выделить всё

\vodkomotornik\components\com_joomgallery\views\detail\view.html.php
Найти:

Код: Выделить всё

    // Meta data
    if($image->metadesc)
    {
      $this->_doc->setDescription($image->metadesc);
Заменить на:

Код: Выделить всё

    // Meta data
    if($image->imgtext)
    {
      $this->_doc->setDescription($image->imgtext);
По суше: велосипед, Соболь 4х4 самый западный и LR Defender 110.
Отдохнул – отчитайся, лучшее слово – дело.