Новости Joomla

SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla

SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla

👩‍💻 SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla.Компонент - менеджер цифровых проектов для Joomla! CMS. Компонент обеспечивает создание каталога цифровых проектов и предоставляет возможность скачивания, в том числе с использованием лицензионных ключей.👩‍💻 v.2.5.0. Что нового?Схемы структур данных для серверов обновлений. Теперь с SW JProjects вы может создавать сервер обновлений не только для расширений Joomla, но и свои собственные. Например, вам нужно, чтобы структура данных сервера обновлений была другая и формат должен быть, например, не XML, а JSON. Формирование структуры данных для сервера обновлений расширений Joomla вынесено в отдельный плагин. Вы можете создать свой собственный плагин и реализовать в нём нужную вам структуру данных, добавив или наоборот исключив отображаемые данные. Сервер обновлений в компоненте по-прежнему отображает информацию о списке проектов и их версиях, о конкретном проекте и его changelog.Можно выбрать схему данных сервера обновлений глобально для всего компонента, выбрать другую схему данных для категории проектов, а так же выбрать схему в каждом проекте.

Разработчикам в качестве образца можно посмотреть плагин схемы данных для Joomla в составе компонента или же плагин-образец JSON-схемы на GitHub.
Группа плагинов swjprojects. Для нужд компонента создана группа плагинов swjprojects. В частности, в этой группе находится плагин структуры данных Joomla расширений для сервера обновлений.Изменение языковых констант. Изменены некоторые языковые константы в панели администратора. Если вы делали переопределение констант - переопределите их снова.👩‍💻 Joomla 6. Внесены изменения для корректной установки и работы компонента на Joomla 6. Компонент успешно протестирован на Joomla 6-beta2.Минимальная версия Joomla - 5. Подняты минимальные системные требования: Joomla 5.0.0 и PHP 8.1.
- Страница расширения👉 Плагин-образец кастомной JSON-схемы данных для сервера обновлений на GitHub.- GitHub расширения- Документация на GitHub- Joomla Extensions Directory#joomla #расширения

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

👩‍💻 Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод triggerEvent(), с помощью которого раньше вызывались события для плагинов. Теперь чтобы в своём коде вызвать событие для плагина и получить от него результаты нужно:- создать объект класса события- передать в него параметры

use Joomla\CMS\Event\AbstractEvent;use Joomla\CMS\Factory;use Joomla\CMS\Plugin\PluginHelper;// Грузим плагины нужных группPluginHelper::importPlugin('system');// Создаём объект события$event = AbstractEvent::create('onAfterInitUniverse', [    'subject' => $this,    'data'    => $data, // какие-то данные    'article' => $article, // ещё материал вдовесок    'product' => $product, // и товаров подвезли]);// Триггерим событиеFactory::getApplication()->getDispatcher()->dispatch(    $event->getName(), // Тут можно строку передать 'onAfterInitUniverse'    $event);// Получаем результаты// В случае с AbstractEvent это может быть не 'result',// а что-то ещё - куда сами отдадите данные.// 2-й аргумент - значение по умолчанию, // если не получены результаты$results = $event->getArgument('result', []);
Плюсы такого подхода - вам не нужно запоминать порядок аргументов и проверять их наличие. Если вы написали свой класс события, то в плагине можно получать аргументы с помощью методов $event->getArticle(), $event->getData(), $event->getProduct() и подобными - реализуете сами под свои нужды. Если такой класс события написали, то создаёте экземпляр своего класса события и укажите его явно в аргументе eventClass
use Joomla\Component\MyComponent\Administrator\Event\MyCoolEvent;$event = MyCoolEvent::create('onAfterInitUniverse', [    'subject'    => $this,    'eventClass' => MyCoolEvent::class, // ваш класс события    'data'       => $data, // какие-то данные    'article'    => $article, // ещё материал вдовесок    'product'    => $product, // и товаров подвезли]);
Ожидаемо, что класс вашего события будет расширять AbsractEvent или другие классы событий Joomla.🙁 Есть неприятный нюанс - нельзя просто так вызывать событие и ничего не передать в аргументы. Аргумент subject обязательный. Но если вы всё-таки не хотите туда ничего передавать - передайте туда пустой stdClass или объект Joomla\registry\Registry.
@joomlafeed#joomla #php #webdev

0 Пользователей и 1 Гость просматривают эту тему.
  • 5 Ответов
  • 3184 Просмотров

Здравствуйте форумчане. Помогите начинающему web-мастеру, пожалуйста. ^-^

У меня стоит:
Joomla_2.5.7
PhocaGallery v3.2.2
sh404SEF v3.7.0
плагин sh404_plugin_com_phocagallery для sh404SEF

На сайте создано меню первого уровня photogallery а в ней вложение с названием самой фото галереи: peterburg  Всё это выглядит так - меню: photogallery - peterburg  
И получается URL: http://сайт/photogallery/peterburg.html

Для того чтобы сделать нормальные URL для детального просмотра фотографий установил плагин sh404_plugin_com_phocagallery. После этого у меня URL  получается вот такого вида:
http://сайт/peterburg/piterburg/название фотографии.html

Как я понимаю peterburg 1 это название меню а peterburg 2 это название категории в PhocaGallery. Такой дубляж в URL мне кажется не совсем правильным и  хотелось бы все более человеко понятным, вот так:
http://сайт/photogallery/piterburg/название фотографии.html
Что бы в URl отображался самый первый уровень меню а не второй.

Проблема как  понимаю в самом плагине. Помогите пожалуцста разобраться что нужно поменять в скрипте, чтобы всё отображалось нормально. Может есть ещё какой способ? Или вдруг у кого есть плагин чтобы URL строился строго согласна  меню сайта? Буду очень признателен. ^-^

Вот сам скрип плагина sh404_plugin_com_phocagallery:

<?php
/**
 * sh404SEF support for com_phocagallery component.
 * Author :  Hi-Fi (Juho Saarinen)
 * contact : juho.saarinen@gmail.com
 *
 * {shSourceVersionTag: Version x - 2007-09-20}
 *
 * This is a Xmap sh404SEF native plugin file
 *    
 */
defined( '_JEXEC' ) or die( 'Direct Access to this location is not allowed.' );

// ------------------  standard plugin initialize function - don't change ---------------------------
global $sh_LANG, $sefConfig;  
$shLangName = '';
$shLangIso = '';
$title = array();
$shItemidString = '';
$dosef = shInitializePlugin( $lang, $shLangName, $shLangIso, $option);
if ($dosef == false) return;
// ------------------  standard plugin initialize function - don't change ---------------------------

// ------------------  load language file - adjust as needed ----------------------------------------
//$shLangIso = shLoadPluginLanguage( 'com_XXXXX', $shLangIso, '_SEF_Phocagallery_TEXT_STRING');
// ------------------  load language file - adjust as needed ----------------------------------------


//Functions to get names

//--------HIFI:FUNCTION GALERY multiple category NAMEs -> $galleries
/*Function is based on com_rsgallery2.php's function shRSCategoryNames, which is based on com_docman.php's function dm_sef_get_category_array() which was (according to that file) based on
 * Mark Fabrizio, Joomlicious, fabrizim@owlwatch.com, http://www.joomlicious.com
 */
if( !function_exists( 'shPhocaCategoryNames' ) ){
   function shPhocaCategoryNames( $gallery_id ){
      global $database;
      $database=&JFactory::getDBO();
      static $PhocaGalleryTree = null;
      $q  = "
         SELECT id, title, parent_id
         FROM #__phocagallery_categories";
      $database->setQuery( $q );
      $PhocaGalleryTree = $database->loadObjectList( 'id' );
      $title=array();
      do {
         $Phocaname[] =    $PhocaGalleryTree[ $gallery_id ]->title;
         $gallery_id =    $PhocaGalleryTree[ $gallery_id ]->parent_id;
      }    while($gallery_id != 0);
      return array_reverse($Phocaname);
      }
   }
   
if (!function_exists( 'shPhocaimagenameFromId')) {
   function shPhocaimagenameFromId($id){
      global $database, $sefConfig;
      $database=&JFactory::getDBO();
      $PhocaGalleryImageTree = null;
      $q  = "
         SELECT id, title
         FROM #__phocagallery
         WHERE id = " . $id;
      $database->setQuery( $q );
      $PhocaGalleryImageTree = $database->loadObjectList('id');
      $PhocaName  = $PhocaGalleryImageTree[$id]->name;   // name
      $PhocaTitle = $PhocaGalleryImageTree[$id]->title;   // title
      $title= $PhocaTitle;
      return $title;
      }
   }

// remove common URL from GET vars list, so that they don't show up as query string in the URL
shRemoveFromGETVarsList('option');
shRemoveFromGETVarsList('lang');
if (!empty($Itemid))
  shRemoveFromGETVarsList('Itemid');
/*if (!empty($limit))  
shRemoveFromGETVarsList('limit');
if (isset($limitstart))
  shRemoveFromGETVarsList('limitstart'); // limitstart can be zero*/
shRemoveFromGETVarsList('view');
shRemoveFromGETVarsList('id');
shRemoveFromGETVarsList('catid');


// start by inserting the menu element title (just an idea, this is not required at all)
$task = isset($task)? @$task : null;
$Itemid = isset($Itemid)? @$Itemid : null;
$shPhocagalleryName = shGetComponentPrefix($option);
$shPhocagalleryName = empty($shPhocagalleryName)?  
      getMenuTitle($option, $task, $Itemid, null, $shLangName) : $shPhocagalleryName;
$shPhocagalleryName = (empty($shPhocagalleryName) || $shPhocagalleryName == '/')? 'PhocagalleryCom':$shPhocagalleryName;

          $title[] = $shPhocagalleryName;
          $title[] = '/';
   unset($vars['shPhocagalleryName']);
/*   
// -------Category name(s)--------------------------- [gid is needed for this]
if (isset($gid) && ($gid != 0)) {
   if ($rsInsertMultipleCategories) {
      $title = array_merge($title, shRSCategoryNames($gid));
   } else {
      $title[] = shRSCategoryName($gid);
   }
   shRemoveFromGETVarsList('gid');
   }
//-------Insert trailing / after Menuname or Categoryname when there is no image to avoid .html
if (empty($id)) {
   $title[] = '/';
   }
*/

switch ($view) {
   case 'categories':
   $title[] = '/';
   break;
   case 'category':
   if(substr($id,-2)==='3A')
   {
   $id = intval(substr($id,0,-2));
   }
   $title = array_merge($title, shPhocaCategoryNames($id));
   break;
   case 'detail':
   //there might be ':' in url, so it has to be removed
   if(substr($id,-2)==='3A')
   {
   $id = intval(substr($id,0,-2));
   }
   $title = array_merge($title, shPhocaCategoryNames($catid));
   $title[] = shPhocaimagenameFromId($id);
   shRemoveFromGETVarsList('tmpl');
   break;
}
  
   //$dosef = false;

// ------------------  standard plugin finalize function - don't change ---------------------------  
if ($dosef){
   $string = shFinalizePlugin( $string, $title, $shAppendString, $shItemidString,
      (isset($limit)? @$limit : null), (isset($limitstart)? @$limitstart : null),
      (isset($shLangName)? @$shLangName : null));
}      
// ------------------  standard plugin finalize function - don't change ---------------------------
  
?>
« Последнее редактирование: 11.01.2013, 15:07:07 от freemanpiter »

Или может у кого есть плагин чтобы URL строился строго согласна  меню сайта? ^-^
*

мираж

  • Захожу иногда
  • 368
  • 0 / 0
а где вы взяли этот плагин.  у меня лично просто http://сайт/fotogalereya это когда захожу в галерею
а если в категорию то вот http://сайт/category/9-dizajn-kvartir-remont-kvartir-interer-foto
куда то просто пропадает fotogalereya
*

мираж

  • Захожу иногда
  • 368
  • 0 / 0
вот как вернуть в url fotogalereya
*

lakshmi

  • Захожу иногда
  • 188
  • 5 / 0
вот как вернуть в url fotogalereya
Да можно но тока это долгий путь переименовывать все ссылки ;)
*

мираж

  • Захожу иногда
  • 368
  • 0 / 0
Да можно но тока это долгий путь переименовывать все ссылки ;)
а группой можно это сделать?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

sh404SEF + OSMap Free

Автор xlenivecx

Ответов: 5
Просмотров: 3461
Последний ответ 14.12.2019, 22:34:33
от draff
Теги на страницах навигации sh404SEF

Автор alexey711

Ответов: 2
Просмотров: 3238
Последний ответ 25.06.2019, 15:02:55
от alexey711
Как выключить отображение кода модуля на странице 404 работающей через sh404SEF?

Автор Dim

Ответов: 1
Просмотров: 3552
Последний ответ 05.11.2018, 22:56:47
от Dim
Убрать слэши sh404SEF

Автор romagromov

Ответов: 1
Просмотров: 3772
Последний ответ 16.06.2018, 12:03:05
от romagromov
Управление 404 ссылками в sh404SEF

Автор Afman

Ответов: 0
Просмотров: 3707
Последний ответ 09.06.2018, 20:15:30
от Afman