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

Aleks_El_Dia

  • Живу я здесь
  • 3671
  • 353 / 0
  • AEDStudio Joomla! Direction
Во время создания очередного интернет-проекта ввиду его интернациональности родилась следующая идея - возле вывода автора статьи вывести его страну. После нескольких манипуляций и хаков парочки файлов CMS Joomla! поставленая цель была достигнута.
Итак эта тема поможет вам:
1. Научится добавлять дополнительные поля при регистрации пользователя.
2. Выводить значение этого поля в любом нужном месте.

Для решения данного вопроса я руководствовался статьей о добавлении дополнительного поля "День рожденья" http://joomlaportal.ru/content/view/1400/68/

Итак что необходимо сделать:
1.Для начала необходимо добавить такое поле в таблицу jos_users, чтобы можно было хранить введенную пользователем информацию. Для этого выполним в phpMyAdmin следующий запрос:

Код: sql
ALTER TABLE `jos_users` ADD `country` VARCHAR(255) NOT NULL default '';
2.После этого расширим набор полей класса mosUser, чтобы данные о стране автоматически попадали в базу при регистрации пользователя:
2.1 Открываем файл /includes/joomla.php
2.2 Находим в нем следующие строчки:

 
Код: php
 var $params      = null;
 
  /**
  * @param database A database connector object
  */
  function mosUser( &$database ) {
 
2.3 Заменяем их на:
 
Код: php
        var $params			    = null;
var $country = null;

/**
* @param database A database connector object
*/
function mosUser( &$database ) {
      
2.4 Для того, чтобы страна пользователя была доступна из глобальной переменной $my необходимо сделать еще одну правку. Находим:

Код: php
$query = "SELECT id, name, email, block, sendEmail, registerDate, lastvisitDate, activation, params"

2.5 Заменяем на:

Код: php
$query = "SELECT id, name, email, block, sendEmail, registerDate, lastvisitDate, activation, params, country"

2.6 Ниже находим строчку:

Код: php
$user->activation    = $my->activation;

2.7 И после! нее добавляем:

Код: php
$user->country       = $my->country;

Первая часть подготовки выполнена, теперь необходимо добавить непосредственно поле на форму, и подправить функцию сохранения нового пользователя.

3. Открываем файл /components/com_registration/registration.html.php
3.1 Находим в нем строчки:
Код: html4strict
<input type="text" name="name" size="40" value="" class="inputbox" maxlength="50" />
        </td>
    </tr>
   
3.2 Вставляем после! них код:
Код: html4strict
<td>
        Ваша страна
      </td>
      <td>
              <select name="birthDate_d">
          <option value="Украина">Украина</option>
       <option value="Россия">Россия</option>
        <option value="Беларусь">Беларусь</option>
         <option value="Молдавия">Молдавия</option>
            </select>             
      </td>
     
При необходимости можно изменить список или дополнить его. Значение атрибута value будет записыватся в базу данных.

4.Теперь исправляем непосредственно функцию сохранения нового пользователя, добавляя в нее сохранение введенной страны пользователя.
Открываем файл /components/com_registration/registration.php
4.1 Находим в нем строчку:

Код: php
$row->registerDate   = date( 'Y-m-d H:i:s' );

4.2 Вставляем после! нее следующий код:

Код: php
$row->country 	= mosGetParam($_POST, 'country', '');

Данные введенные пользователем получены и записаны в базу данных. Теперь можно их выводить в любом нужном нам месте. Выведем страну пользователя сразу после его ника, при указании автора статьи.

5. Для этого необходимо открыть файл /components/com_content/content.html.php
5.1 Находим следующие строчки:

Код: php
/**
* Writes Author name
*/
function Author( &$row, &$params ) {
if ( ( $params->get( 'author' ) ) && ( $row->author != '' ) ) {
?>
<tr>
<td width="70%" align="left" valign="top" colspan="2">
<span class="small">
<?php echo _WRITTEN_BY . ' '.( $row->created_by_alias ? $row->created_by_alias : $row->author ); ?>
</span>
&nbsp;&nbsp;
</td>
</tr>
<?php
}
}

5.2 Меняем их на:
Код: php
/**
* Writes Author name
*/
function Author( &$row, &$params ) {
global $my;
if ( ( $params->get( 'author' ) ) && ( $row->author != '' ) ) {
global $database;
$query = "SELECT country"
. "\n FROM #__users"
. "\n WHERE id = " . (int) $row->created_by
;
$database->setQuery( $query );
$row->country = $database->loadResult();
?>
<tr>
<td width="70%" align="left" valign="top" colspan="2">
<span class="small">
<?php echo _WRITTEN_BY . ' '.( $row->created_by_alias ? $row->created_by_alias : $row->author ).', '.$row->country; ?>
</span>
&nbsp;&nbsp;
</td>
</tr>
<?php
}
}

И это все.

Тестил на оригинальной версии CMS Joomla! 1.0.15 и на русской версии  CMS Joomla! 1.0.15 RE
За решение вопроса приношу благодарности товарищу temniy

Оригинал статьи здесь - Добавление дополнительного поля "Страна" при регистрации пользователя
« Последнее редактирование: 27.09.2011, 11:10:15 от Aleks_El_Dia »
Спам придумали боги в отместку за наши молитвы (с) Рома Воронежский
На молоко: Z369038872422 || R210017695494 || U247040729215 || ЯД 410011288250383
Мигрирую сайты, переношу расширения J!1.0->J!1.5->J!2.5. Более 50 успешных миграций.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не отображает link CSS style

Автор leo78

Ответов: 0
Просмотров: 1174
Последний ответ 15.07.2015, 16:37:06
от leo78
Вариант пагинатора

Автор AlekVolsk

Ответов: 5
Просмотров: 1294
Последний ответ 03.02.2015, 01:00:30
от ELLE
Странности при установке компонента

Автор Александр216

Ответов: 3
Просмотров: 1423
Последний ответ 16.07.2014, 12:38:39
от Aleks.Denezh
Странности в работе sql-запроса

Автор Александр216

Ответов: 7
Просмотров: 1591
Последний ответ 27.06.2014, 22:03:19
от Aleks.Denezh
Прошу помощи с RS monials

Автор Unloved

Ответов: 0
Просмотров: 1616
Последний ответ 06.06.2014, 04:12:25
от Unloved