Новости 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 Ответов
  • 2996 Просмотров
*

klubnichkaaa

  • Захожу иногда
  • 302
  • 16 / 2
Сортировка полей в Joomla 1.6
« : 13.06.2011, 20:50:49 »
Приветствую всех! Хотел бы узнать как в 1.6 сделать сортировку полей! А именно у меня есть компонент и всё что мне нужно это сделать сортировку и сделать сохранение ordering. Вся проблема именно в этом, стандартные компоненты я просмотрел попробовал сделать наподобие, но из за большого кода мне не понятно. Хотел бы увидеть краткий код по данной проблеме. Что вы писали в моделе, виде и шаблоне! Буду очень признателен! +
Делай с другими то же, что они собираются сделать с тобой: бей первым.
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Сортировка полей в Joomla 1.6
« Ответ #1 : 14.06.2011, 12:34:17 »
что значит краткий код? :)
вот тут можно глянуть, но предупреждаю, там не все нюансы с сортировкой описаны.
*

klubnichkaaa

  • Захожу иногда
  • 302
  • 16 / 2
Re: Сортировка полей в Joomla 1.6
« Ответ #2 : 14.06.2011, 13:33:40 »
Спасибо за ссылку! Я видел это мануал! Но увы пока не пашет!

В своём тестовом компоненте я пишу код модели mycomponents.php

Цитировать
<?php

defined('_JEXEC') or die('Restricted access');

// import the Joomla modellist library
jimport('joomla.application.component.modellist');

/**
 * HelloWorlds Model
 */
class MycomponentModelMycomponents extends JModelList
{

   protected function getListQuery()
   {

      // Create a new query object.
      $db = JFactory::getDBO();
      $query = $db->getQuery(true);

      // Select some fields
      $query->select('*');

      // From the hello table
      $query->from('#__mycomponent');
      
$orderCol   = $this->state->get('list.ordering');
$orderDirn   = $this->state->get('list.direction');
$query->order($db->getEscaped($orderCol.' '.$orderDirn));

      return $query;
   }
   
       protected function populateState($ordering = null, $direction = null)
{
   parent::populateState('name', 'asc');
}

}

Затем в виде дописываю.
Цитировать
<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
 
// import Joomla view library
jimport('joomla.application.component.view');
 
/**
 * HelloWorlds View
 */
class MycomponentViewMycomponents extends JView
{

   /**
    * HelloWorlds view display method
    * @return void
    */
   function display($tpl = null)
   {
   
      // Get data from the model
      $items = $this->get('Items');
      $pagination = $this->get('Pagination');
       $state = $this->get('State');
      // Check for errors.
      if (count($errors = $this->get('Errors')))
      {
         JError::raiseError(500, implode('<br />', $errors));
         return false;
      }
      // Assign data to the view
      $this->items = $items;
      $this->pagination = $pagination;
      $this->state = $state;
      // Set the toolbar
      $this->addToolBar();
 
      // Display the template
      parent::display($tpl);
 
      // Set the document
      $this->setDocument();
   }
 
   /**
    * Setting the toolbar
    */
   protected function addToolBar()
   {
      JToolBarHelper::title(JText::_('COM_HELLOWORLD_MANAGER_HELLOWORLDS'), 'mycomponent');
      JToolBarHelper::deleteListX('', 'mycomponents.delete');
      JToolBarHelper::editListX('mycomponent.edit');
      JToolBarHelper::addNewX('mycomponent.add');
      JToolBarHelper::custom('mycomponents.publish', 'publish.png', 'publish_f2.png','JTOOLBAR_PUBLISH');
      JToolBarHelper::custom('mycomponents.unpublish', 'unpublish.png', 'unpublish_f2.png', 'JTOOLBAR_UNPUBLISH');
   }
   /**
    * Method to set up the document properties
    *
    * @return void
    */
 
 
   
   protected function setDocument()
   {
      $document = JFactory::getDocument();
      $document->setTitle(JText::_('COM_HELLOWORLD_ADMINISTRATION'));
   }
}

А после в default_body.php
Цитировать
<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted Access');
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
JHtml::_('behavior.tooltip');
JHtml::_('script','system/multiselect.js', false, true);

$user      = JFactory::getUser();
$userId      = $user->get('id');
$listOrder   = $this->state->get('list.ordering');
$listDirn   = $this->state->get('list.direction');
$canOrder   = $user->authorise('core.edit.state', 'com_mycomponents.category');
$saveOrder   = $listOrder == 'a.ordering';
?>
<?php foreach($this->items as $i => $item):
         $ordering   = ($listOrder == 'a.ordering');
         $item->cat_link   = JRoute::_('index.php?option=com_mycomponents&extension=com_mycomponents&task=edit&type=other&cid[]='. $item->catid);
         $canCreate   = $user->authorise('core.create',      'com_mycomponents.category.'.$item->catid);
         $canEdit   = $user->authorise('core.edit',         'com_mycomponents.category.'.$item->catid);
         $canCheckin   = $user->authorise('core.manage',      'com_checkin') || $item->checked_out==$user->get('id') || $item->checked_out==0;
         $canChange   = $user->authorise('core.edit.state',   'com_mycomponents.category.'.$item->catid) && $canCheckin;
?>
   <tr class="row<?php echo $i % 4; ?>">
      <td>
         <?php echo $item->id; ?>
      </td>
      <td>
         <?php echo JHtml::_('grid.id', $i, $item->id); ?>
      </td>
      <td>
         <a href="<?php echo JRoute::_('index.php?option=com_mycomponent&view=mycomponent&layout=edit&id='.(int) $item->id); ?>"><?php echo $item->name; ?></a>
         </td>
         <td>
         <?php echo JHtml::_('jgrid.published', $item->published, $i, 'mycomponents.', $canChange, 'cb', $item->publish_up, $item->publish_down); ?>
      </td>
      <td class="order">
               <?php if ($canChange) : ?>
                  <?php if ($saveOrder) : ?>
                     <?php if ($listDirn == 'asc') : ?>
                        <span><?php echo $this->pagination->orderUpIcon($i, (@$this->items[$i-1]->catid == $item->catid), 'banners.orderup', 'JLIB_HTML_MOVE_UP', $ordering); ?></span>
                        <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, (@$this->items[$i+1]->catid == $item->catid), 'banners.orderdown', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span>
                     <?php elseif ($listDirn == 'desc') : ?>
                        <span><?php echo $this->pagination->orderUpIcon($i, (@$this->items[$i-1]->catid == $item->catid), 'banners.orderdown', 'JLIB_HTML_MOVE_UP', $ordering); ?></span>
                        <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, (@$this->items[$i+1]->catid == $item->catid), 'banners.orderup', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span>
                     <?php endif; ?>
                  <?php endif; ?>
                  <?php $disabled = $saveOrder ?  '' : 'disabled="disabled"'; ?>
                  <input type="text" name="order[]" size="5" value="<?php echo $item->ordering;?>" <?php echo $disabled;?> class="text-area-order" />
               <?php else : ?>
                  <?php echo $item->ordering; ?>
               <?php endif; ?>
      </td>
   </tr>
<?php endforeach; ?>

И уже в шапке дописываю код default_head.php

Цитировать
<?php echo JHtml::_('grid.sort',  'name', 'name', $listDirn, $listOrder); ?>

поля
Цитировать
      <input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" />
      <input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" />

Тоже присутствуют! Но сортировка не работает, никаких ошибок нет. Мне кажется тут что то с видом или моделью.
Может подскажешь что тут не так, я вот пробую щас посмотреть в стандартных компонентах, но пока безуспешно.
Делай с другими то же, что они собираются сделать с тобой: бей первым.
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Сортировка полей в Joomla 1.6
« Ответ #3 : 14.06.2011, 13:46:30 »
во первых в модели поля должны фильтроваться
Код
class MycomponentModelMycomponents extends JModelList
{
public function __construct($config = array())
{
if (empty($config['filter_fields'])) {
$config['filter_fields'] = array(
'name' // ... сюда нужно добавить все поля по которым есть сортировка
);
}

parent::__construct($config);
}
....

может там еще что-то не так, сложно так сказать.
*

klubnichkaaa

  • Захожу иногда
  • 302
  • 16 / 2
Re: Сортировка полей в Joomla 1.6
« Ответ #4 : 14.06.2011, 14:06:41 »
Прекрасно понимаю что сложно, не свой код непонятно что и как! но даже добавив этот код в модель не помогло, естественно я посмотрел как в родных компонентах попробовал, но так же никакой реакции. И ещё рисунок когда сортируешь не появляется рядом с названием. А в контроллере и в папке tables нужно что нибудь!?
Делай с другими то же, что они собираются сделать с тобой: бей первым.
*

Yazi

  • Осваиваюсь на форуме
  • 46
  • 0 / 0
Re: Сортировка полей в Joomla 1.6
« Ответ #5 : 21.07.2011, 12:08:24 »
При использовании данного мануала и пытаясь сделать самостоятельно.
Выдается ошибка:
Call to a member function get() on a non-object in /home1/.../administrator/components/com_catalog/views/catalogs/tmpl/default_head.php on line 9
Это соответсвует строчке:
$listOrder   = $this->state->get('list.ordering');
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Документация по созданию модуля для Joomla 2.5 и Joomla 3.x

Автор b2z

Ответов: 1
Просмотров: 2284
Последний ответ 29.07.2015, 09:40:30
от b2z
JPluginHelper::importPlugin('content') в Joomla 1.7

Автор Dutch

Ответов: 2
Просмотров: 4750
Последний ответ 30.03.2015, 14:22:51
от twins717
Документация по созданию компонента для Joomla 2.5

Автор Sulpher

Ответов: 74
Просмотров: 57240
Последний ответ 17.11.2014, 13:43:07
от limon142
Документация по созданию плагина для Joomla 2.5 и Joomla 3.x

Автор b2z

Ответов: 8
Просмотров: 14277
Последний ответ 27.08.2014, 09:52:02
от skinny
Как составить запрос по правилам Joomla ?

Автор mainet

Ответов: 7
Просмотров: 1741
Последний ответ 03.02.2014, 22:56:05
от Aleks.Denezh