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

AlexSF

  • Давно я тут
  • 678
  • 68 / 0
  • В споре истина рождается
Всем доброго времени суток.
 Есть  некий модуль (на пример: mod_mainmenu), в стандартных настройках  доступ  ограничивается группами  ВСЕ, ЗАРЕГИСТРИРОВАННЫЕ, СПЕЦИАЛЬНЫЙ.  Необходимо чтобы к данному модулю имели доступ  только люди группы  АВТОР или УПРОВЛЯЮЩИЙ
 Как  реализовать  такую  задумку?
Задаёте вопрос - не забудьте приложить ссылку на проблемный сайт
При проблеме с CSS рекомендую использовать Mozilla Firefox и её плагин FireBug
И по максимуму изучите, или поставьте в закладки - http://htmlbook.ru/css
Notepad++ поможет почти в любом деле
*

AlexSF

  • Давно я тут
  • 678
  • 68 / 0
  • В споре истина рождается
Re: Ограничения прав доступа к модулю
« Ответ #1 : 07.08.2009, 20:38:54 »
Спасибо, но этот вариант я уже попробовал безрезультатно.
Однако возможно изменив что либо в ядре, это снимет необходимость в изменении кода в пяти модулях. Но где искать .....?
Задаёте вопрос - не забудьте приложить ссылку на проблемный сайт
При проблеме с CSS рекомендую использовать Mozilla Firefox и её плагин FireBug
И по максимуму изучите, или поставьте в закладки - http://htmlbook.ru/css
Notepad++ поможет почти в любом деле
*

chtec

  • Захожу иногда
  • 230
  • 100 / 1
Re: Ограничения прав доступа к модулю
« Ответ #2 : 07.08.2009, 21:26:47 »
В модулях код менять не нужно, то условие, что привел kbar, ставите в шаблон и выводите под ним позицию модуля. А уже в эту позицию ставите нужные модули. То есть - одно условие в шаблоне, и все остальное правится через админку.
А в ядро лезть не стоит, тем более тому, у кого простое условие прошло "безрезультатно". Чтоб Joomla потом не переустанавливать.
Осень тоже хорошо.
*

AlexSF

  • Давно я тут
  • 678
  • 68 / 0
  • В споре истина рождается
Re: Ограничения прав доступа к модулю
« Ответ #3 : 07.08.2009, 23:30:00 »
Попробовал комбинировать в щаблоне
   
Цитировать
</div>       
        <?php $user =& JFactory::getUser(); ?>
        <?php if($user->get(‘usertype’) == ‘Author’) {?>
      <?php if ($this->countModules('right')): ?>
      <!-- BEGIN: RIGHT COLUMN -->
      <div id="ja-col2">       
         <jdoc:include type="modules" name="right" style="jarounded" />      
        </div><br />
      <!-- END: RIGHT COLUMN -->
      <?php endif; ?>
        <?php }?>
Вариант 2
Цитировать
<?php if ($this->countModules('right')): ?>
      <!-- BEGIN: RIGHT COLUMN -->
      <div id="ja-col2">
        <?php $user =& JFactory::getUser(); ?>
        <?php if($user->get(‘usertype’) == ‘Author’) {?>
         <jdoc:include type="modules" name="right" style="jarounded" />
      <?php }?>
        </div><br />
      <!-- END: RIGHT COLUMN -->
      <?php endif; ?>
Оба варианта убивают позицию модуля.  В чем ошибся?
 Ещё покопался в ядре и отыскал вроде бы логичную связь с настройками модулей:
administrator\components\com_modules\ controller.php  в районе 40 строки имеем код:

Цитировать
$this->registerTask( 'accesspublic',    'access' );
$this->registerTask( 'accessregistered','access' );
$this->registerTask( 'accessspecial',   'access' );
в районе 750 строки имеем код:

Цитировать
switch ( $task )
      {
         case 'accesspublic':
            $access = 0;
            break;

         case 'accessregistered':
            $access = 1;
            break;

         case 'accessspecial':
            $access = 2;
            break;
      }
Но как сюда ввести АВТОР и УПРОВЛЯЮЩИЙ ?
Задаёте вопрос - не забудьте приложить ссылку на проблемный сайт
При проблеме с CSS рекомендую использовать Mozilla Firefox и её плагин FireBug
И по максимуму изучите, или поставьте в закладки - http://htmlbook.ru/css
Notepad++ поможет почти в любом деле
*

AlexSF

  • Давно я тут
  • 678
  • 68 / 0
  • В споре истина рождается
Re: Ограничения прав доступа к модулю
« Ответ #4 : 09.08.2009, 14:48:56 »
Всем спасибо за помощь.
Взяв шаблон который не был стандартно предустановлен и, введя в него предложенный  Вами код все заработало.
Цитировать
</div>
                <div class="clear"></div>
                <div id="modules_l"><jdoc:include type="modules" name="left" style="xhtml" /></div>
                <div id="modules_la"><?php $user =& JFactory::getUser (); ?>
                 <?php $userType = $user->get ('usertype');?>
                 <? if ($user->get ('usertype') == 'Author'):?>
                    <jdoc:include type="modules" name="left-2" style="xhtml" /></div>
                 <?php endif; ?>
                <div id="modules_la"><?php $user =& JFactory::getUser (); ?>
                 <?php $userType = $user->get ('usertype');?>
                 <? if ($user->get ('usertype') == 'Editor'):?>
                    <jdoc:include type="modules" name="left-3" style="xhtml" /></div>
                 <?php endif; ?>
                <div id="modules_la"><?php $user =& JFactory::getUser (); ?>
                 <?php $userType = $user->get ('usertype');?>
                 <? if ($user->get ('usertype') == 'Publisher'):?>
                    <jdoc:include type="modules" name="left-4" style="xhtml" /></div>
                 <?php endif; ?>
                <div class="clear"></div>
        </td>
« Последнее редактирование: 17.08.2009, 18:38:42 от AlexSF »
Задаёте вопрос - не забудьте приложить ссылку на проблемный сайт
При проблеме с CSS рекомендую использовать Mozilla Firefox и её плагин FireBug
И по максимуму изучите, или поставьте в закладки - http://htmlbook.ru/css
Notepad++ поможет почти в любом деле

Re: Ограничения прав доступа к модулю
« Ответ #5 : 24.08.2009, 01:07:02 »
у меня подобная проблема! дело в том, что у меня на сайте две регистрации...для рожениц и для клиник...и нужно сделать так, что когда пользователь входит как будущая мать (группа registred) для нее скрывалось в шапке сайта "регистрация для клиник" и  в меню добавлялся пунк меню "Подать заявку".....тоже самое когда входят на сайт как клиника (группа "author")...убиралась в шапке регистрация для будущих мам...и  в меню появлились два новых пункта! напиши пожалуйста подробно как это сделать!

вот HTML моего шаблона со всеми позициями:

Код
<?php
/**
* @copyright Copyright (C) 2009 JoomlaPraise. All rights reserved.
*/

// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" >
<head>
<?php // Detecting Home
$menu = & JSite::getMenu();
if ($menu->getActive() == $menu->getDefault()) {
$siteHome = 1;
}

// Detecting Active Component
$pageOption = JRequest::getVar('option', '');

// set custom template theme for user
$user = &JFactory::getUser();
if( !is_null( JRequest::getCmd('templateTheme', NULL) ) ) {
$user->setParam($this->template.'_theme', JRequest::getCmd('templateTheme'));
$user->save(true);
}

if($user->getParam($this->template.'_theme')) {
$this->params->set('templateTheme', $user->getParam($this->template.'_theme'));
}
?>
<jdoc:include type="head" />
<script type="text/javascript" src="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template ?>/js/reflection.js"></script>
<link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/system/css/general.css" type="text/css" />
<link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/system/css/system.css" type="text/css" />
<link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template ?>/css/template.css" type="text/css" />
<link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template ?>/css/<?php echo $this->params->get('templateTheme'); ?>.css" type="text/css" />
<!--[if IE 6]>
<link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template ?>/css/ie6.css" type="text/css" />
<![endif]-->
<!-- PNG FIX -->
<!--[if IE 6]>
<style type="text/css"> img { behavior: url(<?php echo $this->baseurl; ?>/templates/<?php echo $this->template ?>/css/iepngfix.htc); } </style>
<![endif]-->
<style type="text/css">
<?php if($this->params->get('fontFamily') == "times") { ?>
body{font-family:"Times New Roman", Times, serif;}
<?php } elseif($this->params->get('fontFamily') == "courier") { ?>
body{font-family:"Courier New", Courier, monospace;}
<?php } elseif($this->params->get('fontFamily') == "georgia") { ?>
body{font-family:Georgia,"Times New Roman", Times, serif;}
<?php } ?>
<?php if($this->params->get('headingFontFamily') == "arial") { ?>
h1, h2, h3, h4, h5, h6, .componentheading, .contentheading{font-family:Arial, Helvetica, sans-serif;}
<?php } elseif($this->params->get('headingFontFamily') == "times") { ?>
h1, h2, h3, h4, h5, h6, .componentheading, .contentheading{font-family:"Times New Roman", Times, serif;}
<?php } elseif($this->params->get('headingFontFamily') == "courier") { ?>
h1, h2, h3, h4, h5, h6, .componentheading, .contentheading{font-family:"Courier New", Courier, monospace;}
<?php } ?>
<?php if(($this->countModules('left') == 0) && ($this->countModules('right') == 0)) { ?>
#mainbody {width:100%;} #content {width:100%;}
#container-inner {background:transparent url(<?php echo $this->baseurl; ?>/templates/<?php echo $this->template ?>/images/<?php echo $this->params->get('templateTheme'); ?>/container-inner.png) repeat-y scroll 0 0;}
#container-inner3 {background:transparent url(<?php echo $this->baseurl; ?>/templates/<?php echo $this->template ?>/images/<?php echo $this->params->get('templateTheme'); ?>/mainbody.png) no-repeat scroll 0 0;}
<?php } ?>

<?php if(($this->countModules('left') >= 1) && ($this->countModules('right') == 0)) { ?>
#mainbody {width:100%;} #content{width:78.125%;} #sidebar{width:20.6%;}
#container-inner {background:transparent url(<?php echo $this->baseurl; ?>/templates/<?php echo $this->template ?>/images/<?php echo $this->params->get('templateTheme'); ?>/container-inner-2cl.png) repeat-y scroll 0 0;}
#container-inner3 {background:transparent url(<?php echo $this->baseurl; ?>/templates/<?php echo $this->template ?>/images/<?php echo $this->params->get('templateTheme'); ?>/mainbody-2cl.png) no-repeat scroll 0 0;}
<?php } ?>

<?php if(($this->countModules('left') == 0) && ($this->countModules('right') >= 1)) { ?>
#content {width:100%;}
#container-inner {background:transparent url(<?php echo $this->baseurl; ?>/templates/<?php echo $this->template ?>/images/<?php echo $this->params->get('templateTheme'); ?>/container-inner-2cr.png) repeat-y scroll 0 0;}
#container-inner3 {background:transparent url(<?php echo $this->baseurl; ?>/templates/<?php echo $this->template ?>/images/<?php echo $this->params->get('templateTheme'); ?>/mainbody-2cr.png) no-repeat scroll 0 0;}
<?php } ?>
<?php if($this->params->get('fontColor')){ ?>
body{color:<?php echo $this->params->get('fontColor'); ?>}
<?php } ?>
<?php if($this->params->get('headingColor')){ ?>
h1, h2, h3, h4, h5, h6, .componentheading, .contentheading{color:<?php echo $this->params->get('headingColor'); ?>}
<?php } ?>
<?php if($this->params->get('linkColor')){ ?>
a:link, a:active, a:visited{color:<?php echo $this->params->get('linkColor'); ?>}
<?php } ?>
<?php if($this->params->get('linkHoverColor')){ ?>
a:hover{color:<?php echo $this->params->get('linkHoverColor'); ?>}
<?php } ?>
<?php if($this->params->get('elementsHeight')){ ?>
.elements .module div div div,
.elements .module_menu div div div,
.elements .module_text div div div,
.elements .module-ms1 div div div,
.elements .module-ms2 div div div,
.elements .module-ms3 div div div,
.elements .module-ms4 div div div
{height:<?php echo $this->params->get('elementsHeight'); ?>}
<?php } ?>
</style>
</head>
<body>
<div id="bar"></div>
<div id="wrapper">
  <?php if (($this->countModules('user1')) || ($this->countModules('user2'))) { ?>
  <div id="toolbar">
    <div class="inside">
      <?php if ($this->countModules('user1')) { ?>
      <div id="navigation">
        <jdoc:include type="modules" name="user1" />
        <div class="clr"></div>
      </div>
      <?php } ?>
      <?php if ($this->countModules('user2')) { ?>
      <div id="search">
        <jdoc:include type="modules" name="user2" />
        <div class="clr"></div>
      </div>
      <?php } ?>
      <div class="clr"></div>
    </div>
  </div>
  <?php } ?>
  <?php if (($this->countModules('banner1')) || ($this->countModules('banner2'))) { ?>
  <div id="banner">
    <?php if ($this->countModules('banner1')) { ?>
    <div id="banner-left">
      <jdoc:include type="modules" name="banner1" />
    </div>
    <?php } ?>
    <?php if ($this->countModules('banner2')) { ?>
    <div id="banner-right">
      <jdoc:include type="modules" name="banner2" style="rounded" />
    </div>
    <?php } ?>
    <div class="clr"></div>
  </div>
  <?php } ?>
  <div id="header">
    <div class="inside"> <a href="<?php echo $mainframe->getCfg('live_site'); ?>" id="logo" title="<?php echo $mainframe->getCfg('sitename'); ?>"></a>
      <?php if ($this->countModules('inset') || $this->params->get('tagLine')) { ?>
      <div id="tagline">
        <jdoc:include type="modules" name="inset" />
      <?php if ($this->countModules('inset') || $this->params->get('tagLine')) {
        echo "<h2>" . $this->params->get('tagLine'). "</h2>";
      } ?>
      </div>
      <?php } ?>
      <div class="clr"></div>
    </div>
  </div>
  <div id="container">
    <div class="inside">
      <div id="container-inner">
        <div id="container-inner2">
          <div id="container-inner3">
            <div id="mainbody">
              <div id="content">
                <div class="inside">
                  <?php if (($this->countModules('user3')) || ($this->countModules('user4')) || ($this->countModules('user5'))) { ?>
                  <table width="100%" border="0" class="elements">
                    <tr>
                      <?php if ($this->countModules('user3')) { ?>
                      <td align="left" valign="top" class="elements-left"><jdoc:include type="modules" name="user3" style="rounded" />
                      </td>
                      <?php } ?>
                      <?php if ($this->countModules('user4')) { ?>
                      <td align="left" valign="top" class="elements-mid"><jdoc:include type="modules" name="user4" style="rounded" />
                      </td>
                      <?php } ?>
                      <?php if ($this->countModules('user5')) { ?>
                      <td align="left" valign="top" class="elements-right"><jdoc:include type="modules" name="user5" style="rounded" />
                      </td>
                      <?php } ?>
                    </tr>
                  </table>
                  <?php } ?>
                  <?php if ($this->countModules('top')) { ?>
                  <div id="top">
                    <jdoc:include type="modules" name="top" style="rounded" />
                  </div>
                  <?php } ?>
                  <jdoc:include type="message" />
                  <jdoc:include type="component" />
                  <?php if ($this->countModules('bottom')) { ?>
                  <div id="bottom">
                    <jdoc:include type="modules" name="bottom" style="rounded" />
                  </div>
                  <?php } ?>
                  <?php if (($this->countModules('user6')) || ($this->countModules('user7')) || ($this->countModules('user8'))) { ?>
                  <table width="100%" border="0" class="elements">
                    <tr>
                      <?php if ($this->countModules('user6')) { ?>
                      <td align="left" valign="top" class="elements-left"><jdoc:include type="modules" name="user6" style="rounded" />
                      </td>
                      <?php } ?>
                      <?php if ($this->countModules('user7')) { ?>
                      <td align="left" valign="top" class="elements-mid"><jdoc:include type="modules" name="user7" style="rounded" />
                      </td>
                      <?php } ?>
                      <?php if ($this->countModules('user8')) { ?>
                      <td align="left" valign="top" class="elements-right"><jdoc:include type="modules" name="user8" style="rounded" />
                      </td>
                      <?php } ?>
                    </tr>
                  </table>
                  <?php } ?>
                </div>
              </div>
             




<?php if ($this->countModules('left')) { ?>
              <div id="sidebar">
                <div class="inside">
                  <jdoc:include type="modules" name="left" style="rounded" />
                </div>
              </div>
              <?php } ?>





               






















              <div class="clr"></div>
            </div>
            <?php if ($this->countModules('right')) { ?>
            <div id="sidebar2">
              <div class="inside">
                <jdoc:include type="modules" name="right" style="rounded" />
              </div>
            </div>
            <?php } ?>
            <div class="clr"></div>
          </div>
        </div>
      </div>
    </div>
  </div>
  <?php if (($this->countModules('footer')) || ($this->countModules('user2'))) { ?>
  <div id="footer">
    <?php if ($this->countModules('user9')) { ?>
    <div id="link">
      <jdoc:include type="modules" name="user9"/>
    </div>
    <?php } ?>
    <?php if ($this->countModules('footer')) { ?>
    <div id="copy">
      <jdoc:include type="modules" name="footer"/>
      <?php /* You are free to remove or edit the following */ print "<a href=\"http://qsstudio.ru\" title=\"Быстрая поддержка сайтов\" target=\"_blank\">Создание и поддержка сайта от QSStudio</a>"; ?>
    </div>
    <?php } ?>
    <div class="clr"><!--LiveInternet counter--><script type="text/javascript"><!--
document.write("<a href='http://www.liveinternet.ru/click' "+
"target=_blank><img src='http://counter.yadro.ru/hit?t44.12;r"+
escape(document.referrer)+((typeof(screen)=="undefined")?"":
";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth?
screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+
";"+Math.random()+
"' alt='' title='LiveInternet' "+
"border='0' width='31' height='31'><\/a>")
//--></script><!--/LiveInternet-->
</div>
  </div>
  <?php } ?>
</div>
</body>
</html>
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Превышение процессом ограничения на использование процессора

Автор Zyklonss

Ответов: 6
Просмотров: 2542
Последний ответ 07.04.2016, 21:29:09
от Zyklonss
кэш, права доступа

Автор jomz

Ответов: 3
Просмотров: 1605
Последний ответ 14.03.2016, 16:18:50
от flyingspook
Права доступа в коде

Автор Vitalik36rus

Ответов: 2
Просмотров: 1528
Последний ответ 04.11.2014, 13:23:20
от Vitalik36rus
права доступа на хостинге

Автор Andrew1110

Ответов: 6
Просмотров: 2715
Последний ответ 28.09.2013, 03:28:24
от IceBerg
Нужно сделать слайдер с помощью скрипта. Нет доступа к файлам

Автор Viktoriia

Ответов: 4
Просмотров: 1596
Последний ответ 26.09.2013, 14:13:10
от kreker92