diff --git a/fields/plugininfo.php b/fields/plugininfo.php
new file mode 100644
index 0000000..b8172f6
--- /dev/null
+++ b/fields/plugininfo.php
@@ -0,0 +1,108 @@
+form->getData();
+ $element = $data->get('element');
+ $folder = $data->get('folder');
+
+
+ $doc = Factory::getDocument();
+ $doc->addStyleDeclaration("
+ .wt-b24-plugin-info{
+ box-shadow: 0 .5rem 1rem rgba(0,0,0,.15);
+ padding:1rem;
+ margin-bottom: 2rem;
+ display:flex;
+
+ }
+ .plugin-info-img{
+ margin-right:auto;
+ max-width: 100%;
+ }
+ .plugin-info-img svg:hover * {
+ cursor:pointer;
+ }
+ ");
+
+ $wt_plugin_info = simplexml_load_file(JPATH_SITE."/plugins/".$folder."/".$element."/".$element.".xml");
+
+
+
+ ?>
+
+
+
+ v.version; ?>
+
+
+
+getLabel();
+ }
+
+}
+?>
\ No newline at end of file
diff --git a/language/en-GB/en-GB.plg_jlsitemap_phocagallery.ini b/language/en-GB/en-GB.plg_jlsitemap_phocagallery.ini
new file mode 100644
index 0000000..65ee93b
--- /dev/null
+++ b/language/en-GB/en-GB.plg_jlsitemap_phocagallery.ini
@@ -0,0 +1,7 @@
+PLG_JLSITEMAP_PHOCAGALLERY = "JLSitemap - Phoca Gallery"
+PLG_PHOCAGALLERY_DESC = "Data plugin-provider for image gallery component Phoca Gallery and XML sitemap component JL Sitemap"
+PLG_JLSITEMAP_PHOCAGALLERY_PARAMS_CATEGORIES = "Categories"
+PLG_JLSITEMAP_PHOCAGALLERY_PARAMS_CHANGEFREQ = "Change Frequency"
+PLG_JLSITEMAP_PHOCAGALLERY_PARAMS_PRIORITY = "Priority"
+PLG_JLSITEMAP_PHOCAGALLERY_PARAMS_IMAGES="XML sitemap for images"
+PLG_JLSITEMAP_PHOCAGALLERY_PARAMS_IMAGES_DESC="Not only links to image categories will be added to the sitemap, but also the images themselves. According to Google documentation no more than 1000 images can be specified for each link"
\ No newline at end of file
diff --git a/language/en-GB/en-GB.plg_jlsitemap_phocagallery.sys.ini b/language/en-GB/en-GB.plg_jlsitemap_phocagallery.sys.ini
new file mode 100644
index 0000000..19a8527
--- /dev/null
+++ b/language/en-GB/en-GB.plg_jlsitemap_phocagallery.sys.ini
@@ -0,0 +1,2 @@
+PLG_JLSITEMAP_PHOCAGALLERY="JLSitemap - Phoca Gallery"
+PLG_PHOCAGALLERY_DESC="Data plugin-provider for image gallery component Phoca Gallery and XML sitemap component JL Sitemap"
\ No newline at end of file
diff --git a/language/ru-RU/ru-RU.plg_jlsitemap_phocagallery.ini b/language/ru-RU/ru-RU.plg_jlsitemap_phocagallery.ini
new file mode 100644
index 0000000..54e565d
--- /dev/null
+++ b/language/ru-RU/ru-RU.plg_jlsitemap_phocagallery.ini
@@ -0,0 +1,6 @@
+PLG_JLSITEMAP_PHOCAGALLERY="JLSitemap - Phoca Gallery"
+PLG_PHOCAGALLERY_DESC="Плагин-провайдер данных Phoca Gallery для компонента карты сайта JL Sitemap"
+PLG_JLSITEMAP_PHOCAGALLERY_PARAMS_CHANGEFREQ="Частота изменений"
+PLG_JLSITEMAP_PHOCAGALLERY_PARAMS_PRIORITY = "Приоритет"
+PLG_JLSITEMAP_PHOCAGALLERY_PARAMS_IMAGES="XML-карта сайта для изображений"
+PLG_JLSITEMAP_PHOCAGALLERY_PARAMS_IMAGES_DESC="В карту сайта будут добавляться не только ссылки на категории изображений, но и сами изображения. Согласно документации Google для каждой ссылки можно указывать не более 1000 изображений"
\ No newline at end of file
diff --git a/language/ru-RU/ru-RU.plg_jlsitemap_phocagallery.sys.ini b/language/ru-RU/ru-RU.plg_jlsitemap_phocagallery.sys.ini
new file mode 100644
index 0000000..db9eed2
--- /dev/null
+++ b/language/ru-RU/ru-RU.plg_jlsitemap_phocagallery.sys.ini
@@ -0,0 +1,2 @@
+PLG_JLSITEMAP_PHOCAGALLERY="JLSitemap - Phoca Gallery"
+PLG_PHOCAGALLERY_DESC="Плагин-провайдер данных Phoca Gallery для компонента карты сайта JL Sitemap"
\ No newline at end of file
diff --git a/phocagallery.php b/phocagallery.php
new file mode 100644
index 0000000..232d3b4
--- /dev/null
+++ b/phocagallery.php
@@ -0,0 +1,176 @@
+ Text::_('PLG_JLSITEMAP_CONTENT_EXCLUDE_CATEGORY_UNPUBLISH'),
+ -2 => Text::_('PLG_JLSITEMAP_CONTENT_EXCLUDE_CATEGORY_TRASH'),
+ 2 => Text::_('PLG_JLSITEMAP_CONTENT_EXCLUDE_CATEGORY_ARCHIVE'));
+
+ $articleExcludeStates = array(
+ 0 => Text::_('PLG_JLSITEMAP_CONTENT_EXCLUDE_ARTICLE_UNPUBLISH'),
+ -2 => Text::_('PLG_JLSITEMAP_CONTENT_EXCLUDE_ARTICLE_TRASH'),
+ 2 => Text::_('PLG_JLSITEMAP_CONTENT_EXCLUDE_ARTICLE_ARCHIVE'));
+
+ $multilanguage = $config->get('multilanguage');
+
+
+ $db = Factory::getDbo();
+
+ $query = 'SELECT *'
+ . ' FROM #__phocagallery_categories AS a'
+ . ' WHERE a.published = 1'
+ . ' ORDER BY a.ordering';
+ $db->setQuery($query);
+ $rows = $db->loadObjectList();
+
+ $nullDate = $db->getNullDate();
+ $changefreq = $this->params->get('categories_changefreq', $config->get('changefreq', 'weekly'));
+ $priority = $this->params->get('categories_priority', $config->get('priority', '0.5'));
+
+ $categories_images_enable = $this->params->get('categories_images_enable', 1);
+
+ // Add categories to arrays
+ $categories = array();
+ $alternates = array();
+
+ JLoader::register('PhocaGalleryLoader', JPATH_ADMINISTRATOR . '/components/com_phocagallery/libraries/loader.php');
+ JLoader::register('PhocaGalleryAccess', JPATH_ADMINISTRATOR . '/components/com_phocagallery/libraries/phocagallery/access/access.php');
+ JLoader::register('PhocaGalleryImageFront', JPATH_ADMINISTRATOR . '/components/com_phocagallery/libraries/phocagallery/image/imagefront.php');
+
+ foreach ($rows as $row)
+ {
+ // Prepare loc attribute
+ $loc = 'index.php?option=com_phocagallery&view=category&id=' . $row->id;
+ if (!empty($row->language) && $row->language !== '*' && $multilanguage)
+ {
+ $loc .= '&lang=' . $row->language;
+ }
+
+ // Prepare exclude attribute
+ $metadata = new Registry($row->metadata);
+ $exclude = array();
+ if (preg_match('/noindex/', $metadata->get('robots', $config->get('siteRobots'))))
+ {
+ $exclude[] = array('type' => Text::_('PLG_JLSITEMAP_CONTENT_EXCLUDE_CATEGORY'),
+ 'msg' => Text::_('PLG_JLSITEMAP_CONTENT_EXCLUDE_CATEGORY_ROBOTS'));
+ }
+
+ if (isset($categoryExcludeStates[$row->published]))
+ {
+ $exclude[] = array('type' => Text::_('PLG_JLSITEMAP_CONTENT_EXCLUDE_CATEGORY'),
+ 'msg' => $categoryExcludeStates[$row->published]);
+ }
+
+ if (!in_array($row->access, $config->get('guestAccess', array())))
+ {
+ $exclude[] = array('type' => Text::_('PLG_JLSITEMAP_CONTENT_EXCLUDE_CATEGORY'),
+ 'msg' => Text::_('PLG_JLSITEMAP_CONTENT_EXCLUDE_CATEGORY_ACCESS'));
+ }
+
+ // Prepare lastmod attribute
+ $lastmod = (!empty($row->date) && $row->date != $nullDate) ? $row->date : false;
+
+ // Prepare category object
+ $category = new stdClass();
+ $category->type = Text::_('PLG_JLSITEMAP_CONTENT_TYPES_CATEGORY');
+ $category->title = $row->title;
+ $category->loc = $loc;
+ $category->changefreq = $changefreq;
+ $category->priority = $priority;
+ $category->lastmod = $lastmod;
+ $category->exclude = (!empty($exclude)) ? $exclude : false;
+ $category->alternates = ($multilanguage && !empty($row->association)) ? $row->association : false;
+
+ if ($categories_images_enable)
+ {
+
+ if (!empty($row->id))
+ {
+ $category_images = PhocaGalleryImageFront::getCategoryImages($row->id); //массив объектов
+ /**
+ * @link https://developers.google.com/search/docs/advanced/sitemaps/image-sitemaps
+ * no more than 1000 images
+ */
+ $images_xml = [];
+ if (0 < count($category_images) && count($category_images) <= 1000)
+ {// no more than 1000 images
+ foreach ($category_images as $image)
+ {
+ $images_xml[] = JUri::root() . 'images/phocagallery/' . $image->filename;
+ }
+ }
+ $category->images = $images_xml;
+
+ }
+ }
+
+ // Add category to array
+ $categories[] = $category;
+
+ // Add category to alternates array
+ if ($multilanguage && !empty($row->association) && empty($exclude))
+ {
+ if (!isset($alternates[$row->association]))
+ {
+ $alternates[$row->association] = array();
+ }
+
+ $alternates[$row->association][$row->language] = $loc;
+ };
+ }
+
+ // Add alternates to categories
+ if (!empty($alternates))
+ {
+ foreach ($categories as &$category)
+ {
+ $category->alternates = ($category->alternates) ? $alternates[$category->alternates] : false;
+ }
+ }
+
+ // Add categories to urls
+ $urls = array_merge($urls, $categories);
+
+
+ return $urls;
+ }
+}
diff --git a/phocagallery.xml b/phocagallery.xml
new file mode 100644
index 0000000..a322703
--- /dev/null
+++ b/phocagallery.xml
@@ -0,0 +1,65 @@
+
+
+ PLG_JLSITEMAP_PHOCAGALLERY
+ Sergey Tolkachyov
+ 04.02.2022
+ Copyright (c) 2022 Sergey Tolkachyov. All rights reserved.
+ GNU General Public License v3.0
+ info@web-tolk.ru
+ https://web-tolk.ru
+ 1.0.0
+ PLG_PHOCAGALLERY_DESC
+
+ en-GB/en-GB.plg_jlsitemap_phocagallery.ini
+ en-GB/en-GB.plg_jlsitemap_phocagallery.sys.ini
+ ru-RU/ru-RU.plg_jlsitemap_phocagallery.ini
+ ru-RU/ru-RU.plg_jlsitemap_phocagallery.sys.ini
+
+
+ phocagallery.php
+
+
+
+
+
+
+
+ https://web-tolk.ru/component/swjprojects/jupdate.html?element=jl_sitemap_phocagallery
+
+