Новости 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 Гость просматривают эту тему.
  • 375 Ответов
  • 174813 Просмотров
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Документация по компонентам
« Ответ #270 : 23.10.2007, 19:49:10 »
Не думаю что можно сходу вот так вот взять и сказать что же там быстрее. Трудно. Или делись серкетами джедаев.

Цитировать
Surrounding your string by ' instead of " will make things interpret a little faster since php looks for variables inside "..." but not inside '...'. Of course you can only do this when you don't need to have variables in the string.

Источник: 40 Tips for optimizing your php Code

Но вообще, я как-то видел более объемную статью, и там даже замеры времени были приведены для каждого из советов по оптимизации.

А вот в другой статье, написано что это смысла не имеет:

Цитировать
'var='.$var is faster than "var=$var"

This used to be true in PHP 4.2 and earlier. This was fixed in PHP 4.3. Note (22 June 2004): apparently the 4.3 fix reduced the overhead, but not completely. However I find the performance difference to be negligible.
« Последнее редактирование: 23.10.2007, 19:55:45 от smart »
*

boston

  • Захожу иногда
  • 495
  • 222 / 3
Re: Документация по компонентам
« Ответ #271 : 24.10.2007, 10:05:21 »
Отличие "" от '' в том что внутри двойных ковычек интерпритатор парсит текст, ищет переменные с $ и инх преобразовывает. Внутри одинарных ковычек такая операция не производится, отсюда и прирост скорости.
Самая новая Joostina 1.3.0.5 UTF-8 stable | О найденных ошибках сообщаем | Расширения Joostina
*

Plazmid

  • Новичок
  • 3
  • 0 / 0
Re: Документация по компонентам
« Ответ #272 : 25.10.2007, 12:09:01 »
Здравствуйте!
Вопрос: Как добавить параметр, которые высвечиваются при добавлении компонента в меню сайта. И как их (параметры) обрабатывать в компоненте?
*

Plazmid

  • Новичок
  • 3
  • 0 / 0
Re: Документация по компонентам
« Ответ #273 : 25.10.2007, 13:06:51 »
Все, разобрался. спасибо.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Документация по компонентам
« Ответ #274 : 25.10.2007, 13:33:06 »
Здравствуйте!
Вопрос: Как добавить параметр, которые высвечиваются при добавлении компонента в меню сайта. И как их (параметры) обрабатывать в компоненте?
посмотрите: Вопрос о создании меню компонента в админке
*

Plazmid

  • Новичок
  • 3
  • 0 / 0
Re: Документация по компонентам
« Ответ #275 : 26.10.2007, 10:12:48 »
посмотрите: Вопрос о создании меню компонента в админке
Нет :-) мне другое нужно было. Сейчас покажу.
взято от сюда
в XML файл компонента Joomla добавляются параметры (которые будут высвечиваться при добавлении компонента в меню)
Код
<params>
<param name="param_1" type="list" default="1" label="Описание параметра"         
                    description="Подсказка для параметра">
<option value="1">Опция 1</option>
<option value="2">Опция 2</option>
<option value="3">Опция 3</option>
</param>
<param name="param_2" type="text" default=""
label="Описание" lenght="10" description="подсказка"/>
  </params>
при этом:
Цитировать
Секция params содержит:

    * параметры доступные при редактировании пункта меню для вашего компонента.
          o name - название параметра
          o type - тип параметра(может быть например list,text,radio )
          o default - значение по умолчанию
          o label - описание параметра
          o description - всплывающая подсказка
анализ в компоненте делается же:
Код
$menu =& new mosMenu( $database );
$menu->load( $Itemid );
 
$params =& new mosParameters( $menu->params );
 
$params->def( 'param_1', 1 );//проверяем заданы ли параметры, если нет то
$params->def( 'param_2', 0 );//заносим в них значения по умолчанию(второй параметр def());
 
        $param_1=$params->get('param_1');//получаем значение параметра в нужном месте компонента
        $param_2=$params->get('param_2');

Re: Документация по компонентам
« Ответ #276 : 12.12.2007, 19:57:49 »
Что за беда с компонентой не пойму. Я в этом деле новичок.
Когда в front вывожу данные из БД так
Код
global $mosConfig_offset; 
$database->setQuery("SELECT * FROM #__users");
$list = $database->loadObjectList();

foreach($list as $row) {
    echo " <li>" . $row->id ." : ". $row->name . "</li>\n";
то вроде все OK

А когда делаю так
Код
global $mosConfig_offset; 
$database->setQuery("SELECT * FROM #__users");
$list = $database->loadObjectList();

HTML_Joomlabook::showTable( &$list );
вылезает вот эта хрень, а потом таблица с данными

Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. in C:\apache\localhost\www\joom\components\com_mcomp\mcomp.php on line 29


Оба случая все выводят только во втором после вывода какая-то ошибка или предупреждение. Как от этого избавиться и почему это происходит?
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Документация по компонентам
« Ответ #277 : 12.12.2007, 21:05:46 »
Оба случая все выводят только во втором после вывода какая-то ошибка или предупреждение. Как от этого избавиться и почему это происходит?
там же вроде понятно написано, что проблема в том, что вы пытаетесь передать ссылку вместо значения...

Поменяйте во втором случае:

HTML_Joomlabook::showTable( &$list );

на

HTML_Joomlabook::showTable$list );

либо измените объявлении функции HTML_Joomlabook::showTable, на

...
function 
showTable( &$list ) {
...

Re: Документация по компонентам
« Ответ #278 : 12.12.2007, 21:43:13 »

HTML_Joomlabook::showTable( $list );

Спасибо Smart помогло. ^-^
У меня есть еще один вопрос. Я хочу сделать в Front'e форму из однострочного поля типа text и кнопку для обработки формы. Но я не знаю как и каким методом передать данные из формя в script.php, который находится тамже где и mycomp.php и  mycomp.html.php в (/component/mod_mycomp/...)
Да и вообще как подключаются файлы?
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Документация по компонентам
« Ответ #279 : 12.12.2007, 21:52:21 »
У меня есть еще один вопрос. Я хочу сделать в Front'e форму из однострочного поля типа text и кнопку для обработки формы. Но я не знаю как и каким методом передать данные из формя в script.php, который находится тамже где и mycomp.php и  mycomp.html.php в (/component/mod_mycomp/...)
у этой формы в action должен быть указан корневой index.php сайта, и обязательно присутствовать скрытая переменная option, в которой должно быть название вашего компонента с суффксом com_, т.е. что-то типа:

<form action="index.php" method="post">
<input type="hidden" name="option" value="com_mycomp" />
<input type="text" name="text" value="" />
<input type="submit" value="Send" />
</form>

Вот по нажатию кнопки, данные автоматом улетят на index.php, а оттудова по значению option подключится /components/com_mycomp/mycomp.php, в котором вы и сможете уже нужным образом обработать данные.

Re: Документация по компонентам
« Ответ #280 : 12.12.2007, 22:00:55 »
у этой формы в action должен быть указан корневой index.php сайта, и обязательно присутствовать скрытая переменная option, в которой должно быть название вашего компонента с суффксом com_, т.е. что-то типа:

<form action="index.php" method="post">
<input type="hidden" name="option" value="com_mycomp" />
<input type="text" name="text" value="" />
<input type="submit" value="Send" />
</form>

Вот по нажатию кнопки, данные автоматом улетят на index.php, а оттудова по значению option подключится /components/com_mycomp/mycomp.php, в котором вы и сможете уже нужным образом обработать данные.
Тут все понятно, а как эти данные цеплять в mycomp.php(например поле text получило значение 123)
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Документация по компонентам
« Ответ #281 : 12.12.2007, 22:07:49 »
Тут все понятно, а как эти данные цеплять в mycomp.php(например поле text получило значение 123)
а уже внутри mycomp.php вы пишете код, типа:


<?php
$text 
mosGetParam$_REQUEST'text''');
echo 
$text;
?>

Re: Документация по компонентам
« Ответ #282 : 12.12.2007, 22:23:34 »
а уже внутри mycomp.php вы пишете код, типа:


<?php
$text 
mosGetParam$_REQUEST'text''');
echo 
$text;
?>

Супер Супер..... ^-^
1)Я правильно понял, если работать с формой то независимо от кол-ва предаемых полей будь то text или select...
обязательно должно быть поле  "hidden" .

2)Что это  mosGetParam( $_REQUEST, 'text', '');и что за последний параметр(почему он пустой).

3)А если я передаю несколько параметров то они получаются так mosGetParam( $_REQUEST, 'text', 'text_1','text_2'...); ???
Меня просто прет от JOOMLA, и уж больно хочется узнать побольше.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Документация по компонентам
« Ответ #283 : 12.12.2007, 22:34:51 »
обязательно должно быть поле  "hidden" .
для того чтобы данные попали в ваш компонент, обязательно должен быть заполнен параметр option, именно благодаря ему Joomla знает куда передавать данные...

2)Что это  mosGetParam( $_REQUEST, 'text', '');и что за последний параметр(почему он пустой).
последний параметр это значение по-умолчанию, т.е. если ничего не пришло

Меня просто прет от JOOMLA, и уж больно хочется узнать побольше.
я бы порекомендовал бы внимательно поизучать код существующих компонентов, почитать к примеру статью Joseph L. LeBlanc'а о создании компонентов...

Re: Документация по компонентам
« Ответ #284 : 30.12.2007, 09:28:49 »
Создаю свой компонент.
Но почемуто кнопки толбара не работают.
При нажатии на кнопку New выдаёт ошибку js.
"document.adminForm.task" - усть null или не является обьектом.
*

era

  • Администратор
  • 1588
  • 392 / 5
  • В туалете лучше быть пользователем, чем админом.
Re: Документация по компонентам
« Ответ #285 : 30.12.2007, 09:39:32 »
Когда ты выводишь какие-нить данные (формы), которые потом нужно заюзать (передать в скрипт), то нужно обрамлять данные формой:

Код
<form action="index2.php" method="post" name="adminForm">
...
тут вывод данных каких-нить, н-р:

...
  <input type="hidden" name="option" value="<!--тут_имя_твоего_компонента-->" />
  <input type="hidden" name="task" value="<!--тут_типа_какое_событие_выполнять-->" />
  </form>
*

Professor

  • Захожу иногда
  • 59
  • 10 / 0
Re: Документация по компонентам
« Ответ #286 : 29.07.2008, 17:11:05 »
Тренируюсь писать компоненты, и каждый раз поднимаю планку. Сейчас столкнулся вот с какой проблемой:
Мне нужно подключить из компонента свой css-файл, который я прописал в <files></files> xml файла, а проще, который входит в дистрибутив компонента.
Подскажите пожалуйста как это сделать.
*

Mitrich

  • Захожу иногда
  • 289
  • 524 / 13
  • Все можно. Но сначала учиться, учиться и учиться.
Re: Документация по компонентам
« Ответ #287 : 29.07.2008, 17:40:46 »
С точки зрения идеологи вернее

Код: php
$mainframe->addCustomHeadTag('<link href="'.$mainframe->getCfg(live_site).'/components/com_mycomponent/style.css" rel="stylesheet" type="text/css" />' );

да и проще потом будет на 1.5 переходить
*

Cutaneus

  • Новичок
  • 6
  • 0 / 0
Re: Документация по компонентам
« Ответ #288 : 25.08.2008, 00:08:11 »
Здраствуйте.
Передо мной такая проблема:
У меня в базе данных две таблицы amx_amxadmins (может кто знает что такое AMXBANS 5.0) и  #__comprofiler (community builder)
В таблице amx_amxadmins имеются поля cbid (неключевое), username, status, access, published
В таблице #__comprofiler имеются поля id (ключевое), firstname, lastname, cb_icq, cb_city, avatar

Каждая строка в каждой имеет уникальное поле id и cbid - то есть это индетификационные номера юзеров...
То есть мне надо вывести на сайт список пользователей у кого amx_amxadmins.status = '08' and amx_amxadmins.published = '1' and amx_amxadmins.cbid = #__comprofiler.id

И далее, чтобы эти "переменные"
avatar
username
access
firstanme
lastname
cb_icq
cb_city
приняли значение

Заранее спасибо!
*

Вовочка

  • Захожу иногда
  • 147
  • 21 / 0
Re: Документация по компонентам
« Ответ #289 : 25.08.2008, 02:47:59 »
ДЛя начала зададим глобальную переменную
Код
global $my;
Далее привожу пример запроса всех имён пользователей соответствующие вашим требованиям.
Код
$sql = "SELECT username FROM `#__amx_amxadmins` WHERE `published` = 1 AND cbid = ".$my->id
$database->setQuery($sql);
$list = $database->loadObjectList();
 
foreach($list as $user) {
 
    echo $user->username;
}
пись
подпись
*

Cutaneus

  • Новичок
  • 6
  • 0 / 0
Re: Документация по компонентам
« Ответ #290 : 25.08.2008, 07:29:12 »
Спасиюо... но у меня вот так получилось тоже
Код
$query = 'SELECT *  FROM `#__comprofiler`, `amx_amxadmins` 
                            WHERE `amx_amxadmins`.`status`=08 and `amx_amxadmins`.`published`=1 and `#__comprofiler`.`id`= `amx_amxadmins`.`cbid` ';

            $database->setQuery($query);

            $result = $database-> loadObjectList();

            foreach ($result as $row)
{
...
}
*

olex

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Re: Документация по компонентам
« Ответ #291 : 12.09.2008, 16:21:46 »
Ребята, такой вопрос. Мне надо интегрировать в Joomla оналйн-библиотеку разных книг. Написать свой компонент, чтобы он в автономном режиме загружал на сайт и выводил из датабазы информацию про книги в разных конфигурациях в зависимости от запроса я могу. То есть в автономном режиме он вполне нормально будет работать. ВОПРОС: как это "припаять" к Джумле, чтобы оно работало внутри нее, чтобы можно было привязать его к пункту меню? То есть как сделать из этого комплекса скриптов полноценный Джумловский компонент, модуль или что-то такое? Как минимум чтобы он просто работал нормально на обычного юзера. Как максимум, чтобы он нормально инсталлировался-деинсталлировался по всем джумловским сценариям и прописывался во всех нужных меню.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: Документация по компонентам
« Ответ #292 : 12.09.2008, 16:29:56 »
Пустой компонент тебе в помощь.
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

olex

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Re: Документация по компонентам
« Ответ #293 : 12.09.2008, 16:33:53 »
Thanks :)
*

werewolfe

  • Осваиваюсь на форуме
  • 27
  • 0 / 0
Re: Документация по компонентам
« Ответ #294 : 19.10.2008, 11:57:57 »
Доброго времени суток!

Делаю компонент, возник вопрос, как через xml при установке создать таблицу в MySQL с определенными значениями в строках? 
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: Документация по компонентам
« Ответ #295 : 19.10.2008, 12:07:37 »
Делаю компонент, возник вопрос, как через xml при установке создать таблицу в MySQL с определенными значениями в строках? 
Код: xml
<install>
 <queries>
  <query>CREATE TABLE IF NOT EXISTS `#__tablename` (
   `id` int(11) NOT NULL auto_increment,
   `name` varchar(50) default NULL,
   PRIMARY KEY  (`id`)
   ) TYPE=MyISAM;
  </query>
 </queries>
</install>
Аналогично следующий запрос будет уже INSERT INTO `#__tablename`
Примерно так, разбери любой компонент - увидишь конкретные примеры
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

era

  • Администратор
  • 1588
  • 392 / 5
  • В туалете лучше быть пользователем, чем админом.
Re: Документация по компонентам
« Ответ #296 : 19.10.2008, 12:11:01 »
если требуется создать таблицу при установке и занести сразу туда некоторые значения, то можешь просто их туда-же добавить:
Код
  <install>
    <queries>
      <query>
CREATE TABLE #__groups (
 id tinyint(3) unsigned NOT NULL default '0',
 name varchar(50) NOT NULL default '',
 PRIMARY KEY  (id)
) TYPE=MyISAM;
      </query>
      <query>
INSERT INTO #__groups (id, name) VALUES(0, 'Public');
      </query>
      <query>
INSERT INTO #__groups (id, name) VALUES(1, 'Registered');
      </query>
      <query>
INSERT INTO #__groups (id, name) VALUES(2, 'Special');
      </query>
    </queries>
  </install>

beliyadm, какой ты реактивный )
*

werewolfe

  • Осваиваюсь на форуме
  • 27
  • 0 / 0
Re: Документация по компонентам
« Ответ #297 : 19.10.2008, 12:13:39 »
Спасибо!
*

Bickaze

  • Захожу иногда
  • 199
  • 18 / 3
Re: Документация по компонентам
« Ответ #298 : 05.12.2008, 04:46:28 »
Код
$query = 'SELECT *  FROM `#__comprofiler`   WHERE `amx_amxadmins`=1'; 

            $database->setQuery($query);
как определить количество результатов?
и выводиться ли количество результатов при действиее UPDATE?
Joomla-программист
Отзывы с 2012 года. Без предоплаты. Всегда на связи.
Skype: indadza, telegram: @ildar_kkk
*

Dead Krolik

  • Захожу иногда
  • 131
  • 33 / 4
  • Теперь я рыбка
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Документация по созданию user profile плагина для Joomla 1.6

Автор n_drey

Ответов: 13
Просмотров: 2802
Последний ответ 05.10.2011, 21:03:46
от n_drey