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

Re: Документация по компонентам
« Ответ #150 : 20.05.2006, 17:29:11 »
Ну это понятно...хочу выводить данные на этой же странице вверху формы. Выводить буду типа так:

<div id="unik" style="display: none;">
Тут данные
</div>

Это вроде понятно. Непонятно то, что как данные в этот див передадуться после нажатия на кнопку предварительный просмотр. Как бы схема будет такой:
Предварительный просмотр->дальше куда?->в див который указан выше. Или схема не такая? Понятно, что див будет скрываться и при помощи JS отображаться...когда в див передали данные. Как передать данные в этот див? Куда данные должны передаться до дива?
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Документация по компонентам
« Ответ #151 : 20.05.2006, 17:45:03 »
Предварительный просмотр->дальше куда?->в див который указан выше. Или схема не такая?
можно и так. можно с перегрузкой страницы.
просто в первом случае код полностью формирует js, а во втором PHP

Понятно, что див будет скрываться и при помощи JS отображаться...когда в див передали данные. Как передать данные в этот див? Куда данные должны передаться до дива?
ну так это опять же зависит...
если данные сформированы ДО построения дива, это наверно лучше делать на рнр, если же данные формируются после, то это только JS по принципу document.id.innerHTML, но это зависит от местоположения объекта
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3

Re: Документация по компонентам
« Ответ #152 : 20.05.2006, 17:57:18 »
Вот буду очень рад, если пример какой нить дашь.  ;) Вот у меня див будет выше формы:

Код
<div id="unik" style="display: none;"></div>
<form action="index.php?option=$option" method="GET" name="Form">
<input type="text" name="adres" value="" size="10" class="text">
<input type="submit" value="отправить" class="button">
<input type="reset" value="Предварительный просмотр" class="button">
</form>
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Документация по компонентам
« Ответ #153 : 20.05.2006, 18:21:00 »
ну вот так, "на бегу":

<script>
function show(){
   unik.innerHTML = myform.adres.value;
}
</script>
<div id="unik"></div>

<form action="index.php?option=$option" method="GET" name="myform">
<input type="text" name="adres" value="allowable text" size="10" class="text">
<input type="button" onclick="show()" value="отправить" class="button" name="button">
</form>

при нажатии на кнопку текст из инпута будет скопирован в див
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

dreamwind

  • Захожу иногда
  • 166
  • 27 / 13
Re: Документация по компонентам
« Ответ #154 : 20.05.2006, 19:03:53 »
Господа, давайте не будем учить детей плохому?

<script>
function show(){
   unik.innerHTML = myform.adres.value;
}
</script>
<div id="unik"></div>

Будет работать только в ИЕ, используйте хотя бы

document.getElementById('unik').nnerHTML=myform.adres.value;

да и к элементу формы лучше обращаться

document.forms['myform'].adres

А еще лучше передавать объект формы прямо из button:

<script type="text/javascript">
function show(form){
   document.getElementById('unik').innerHTML = form.adres.value;
}
</script>

<div id="unik"></div>

<form action="index.php?option=$option" method="GET" name="myform">
<input type="text" name="adres" value="allowable text" size="10" class="text">
<input type="button" onclick="show(form)" value="отправить" class="button" name="button">
</form>

Re: Документация по компонентам
« Ответ #155 : 21.05.2006, 09:48:05 »
dreamwind
Спасибо за помощь!!)) Буду смотреть.
Господа, давайте не будем учить детей плохому?
Это Вы конечно зря так..))

userxp
Спасибо! Что получится дам знать!)
*

PyKaB

  • Захожу иногда
  • 88
  • 19 / 13
Re: Документация по компонентам
« Ответ #156 : 22.05.2006, 12:11:10 »
а вот еще вопросик(нравиться мне эта тема - прям интелектуальная инструкцая по апи + пхп + ява )) ). Хочу сделать колонку "опубликовано" ну и кнопку соответствующую. хочется чтоб работала кнопка при включенном чекбоксе(чекбоксы джумловским методом сделанны) и работало изменение по щелчку на иконку в строке(красный крест где). как такое делается?

Re: Документация по компонентам
« Ответ #157 : 22.05.2006, 17:44:27 »
а вот еще вопросик(нравиться мне эта тема - прям интелектуальная инструкцая по апи + пхп + ява )) ). Хочу сделать колонку "опубликовано" ну и кнопку соответствующую. хочется чтоб работала кнопка при включенном чекбоксе(чекбоксы джумловским методом сделанны) и работало изменение по щелчку на иконку в строке(красный крест где). как такое делается?

А где хочешь сделать в админ части или на самом сайте?
*

PyKaB

  • Захожу иногда
  • 88
  • 19 / 13
Re: Документация по компонентам
« Ответ #158 : 22.05.2006, 18:30:25 »
в админ части...
*

grusha

  • Осваиваюсь на форуме
  • 21
  • 2 / 0
Re: Документация по компонентам
« Ответ #159 : 22.05.2006, 19:39:03 »
 а мне ктонить подскажите .......
у меня есть 2 таблицы categories и subcategories.
В таблице categories есть 2 поля : 'id' и 'name'
В Таблице subcategories 3 поля :'id' 'parent' 'name'
в таблице categories 'name' - название ,скажем , городов и имеет id
в таблице subcategories 'name' - название улиц и имеет parent=id из таблици categories.

вообщем мне надо чтоб при выборе города автоматически показывались улицы только этого города , сейчас я сделал у меня показывает все улицы независимо от того какой город выбран.
надо чтобы если в таблице categories у города id=1 то из базы subcategories выбирались улици у которых parent=1.
у еще вопросик...
это сделано как выпадающее меню , можно ли сделать обновление улиц без перезагрузки страници .
« Последнее редактирование: 22.05.2006, 19:57:19 от grusha »
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Документация по компонентам
« Ответ #160 : 22.05.2006, 20:20:03 »
вот такой запрос примерно 'SELECT name FROM #__subcategories WHERE parent='.$row->id , где $row->id - id таблицы categories
вопрос был - без перегрузки страницы.

2 grusha:
или грузи всё в массивы javascript или используй технологии AJAX
если инфы не много, то первое проще.
сколько записей в таблицах?
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

grusha

  • Осваиваюсь на форуме
  • 21
  • 2 / 0
Re: Документация по компонентам
« Ответ #161 : 23.05.2006, 00:28:17 »
записей будет около 500
*

grusha

  • Осваиваюсь на форуме
  • 21
  • 2 / 0
Re: Документация по компонентам
« Ответ #162 : 23.05.2006, 00:31:04 »
вот такой запрос примерно 'SELECT name FROM #__subcategories WHERE parent='.$row->id , где $row->id - id таблицы categories

спасибо , но он же будет брать id из subcategories а мне надо чтоб id он брал из categories
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Документация по компонентам
« Ответ #163 : 23.05.2006, 00:37:09 »
скажем по 50 символов * 4 (для массива) * 500 = прим. +100 кБ к ёмкости страницы.

я знаю?.. думай.
ИМХО - не есть гут.
попробуй пересчитать по реальным данным

а что, не перегружать - так критично?
« Последнее редактирование: 23.05.2006, 00:39:19 от userxp »
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

grusha

  • Осваиваюсь на форуме
  • 21
  • 2 / 0
Re: Документация по компонентам
« Ответ #164 : 23.05.2006, 00:44:07 »
ну с перерезагрузкой я разберусь а вот с выбором по таблице немогу ......
и правильно ли вообще что я в двух таблицах сделал два поля name или это неимеет значения ??
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Документация по компонентам
« Ответ #165 : 23.05.2006, 00:54:57 »
в общем:
если ты хочешь делать выборку с перезагрузкой, то придётся делать всё равно два запроса
1) просто SELECT id, name FROM .... - это для главного списка
при выборе нужно в GET дописать свой идентификатор, потом, после перезагрузки отбираешь $_GET['имя_параметра'] и по нему отсеиваешь:
2) SELECT поля FROM таблица WHERE условие выборки по $_GET['имя_параметра'] -> получишь отфильтрованные данные
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

grusha

  • Осваиваюсь на форуме
  • 21
  • 2 / 0
Re: Документация по компонентам
« Ответ #166 : 23.05.2006, 01:22:08 »
спасибо большое, буду пробовать
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Документация по компонентам
« Ответ #167 : 23.05.2006, 01:33:42 »
да пожалуйста, просто не хочется поисывать подробно, поскольку это как-то не совсем относится к джумле - это общий подход реализации и это можно прочитать в книгах, да и с уже готовыми примерами и пояснениями.
а джумла - это просто часть этой реализаци.
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3

Re: Документация по компонентам
« Ответ #168 : 23.05.2006, 06:53:26 »
в админ части...

Я делал вот так:

Код
<?php
for ($i=0, $n=count( $rows ); $i < $n; $i++) {

$row = &$rows[$i];

$pub = $row->published ? 'unpublish' : 'publish';
$im_g = $row->published ? 'tick.png' : 'publish_kr.png';
?>

<input type="checkbox" id="cb<?php echo $i;?>" name="id[]" value="<?php echo $row->id; ?>" onclick="isChecked(this.checked);" />  // Это чекбокс

<a href="javascript: void(0);" onclick="return listItemTask('cb<?php echo $i;?>','<?php echo $pub;?>')"><img src="images/<?php echo $im_g;?>" width="12" height="12" border="0" alt="" /></a>  // Это сама картинка по которой будешь переключать
}


К этому у тебя должен быть свой файл с классом, и должна быть описана функция публикации, у меня она выглядит так:

Код
<?php

    function publish_x( $cid=null, $publish=1,  $option ) {
global $database;
    if (!is_array( $cid ) || count( $cid ) < 1) {
$action = $publish ? 'publish' : 'unpublish';
echo "<script> alert('" . "messaga!!!" . " $action'); window.history.go(-1);</script>\n";
exit;
}
    $cids = implode( ',', $cid );
    $database->setQuery( "UPDATE #__tablename SET published='$publish' WHERE id IN ($cids)" );
if (!$database->query()) {
echo "<script> alert('".$database->getErrorMsg()."'); window.history.go(-1); </script>\n";
exit();
}
    mosRedirect( "index2.php?option=$option" );
}
?>
Сразу скажу, что у меня с первого раза не получилось...)) Так что у тебя тоже может такое быть. Но во всяком случае работать должно!)

« Последнее редактирование: 23.05.2006, 06:55:32 от Quexx »
*

PyKaB

  • Захожу иногда
  • 88
  • 19 / 13
Re: Документация по компонентам
« Ответ #169 : 23.05.2006, 12:57:28 »
хм... особо не понял... а когда будет вызываться publish_х?

Re: Документация по компонентам
« Ответ #170 : 23.05.2006, 13:26:51 »
хм... особо не понял... а когда будет вызываться publish_х?

Тебе нужно пробовать...чтобы понять. Вызываться будет когда по картинкам будешь кликать или когда выберешь чекбокс и нажмешь в меню публиковать/непубликовать. Publish_x это у меня, а ты можешь обозвать как тебе захочется. Потом ее нужно загнать в swich примерно таким образом:

Код
<?php
  switch ($task) {
case "publish":
publish_x( $id, 1, $option );
break;
case "unpublish":
publish_x( $id, 0, $option );
break;
?>

Re: Документация по компонентам
« Ответ #171 : 24.05.2006, 17:55:46 »

Пример использования функции strtotime()
<?php
echo strtotime("now"), "\n";
echo 
strtotime("10 September 2000"), "\n";
echo 
strtotime("+1 day"), "\n";
echo 
strtotime("+1 week"), "\n";
echo 
strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo 
strtotime("next Thursday"), "\n";
echo 
strtotime("last Monday"), "\n";
?> 


Вот не могу понять где тут мне может пригодится strtotime? Если возможно расскажи подробнее)) И допустим у меня есть в базе дата удаления 2006-06-25, как мне сравнить с текущей датой эту дату, и вывести юзеру сколь осталось дней?
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Документация по компонентам
« Ответ #172 : 24.05.2006, 18:44:41 »
сорьки, но ща сильно занят :(
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3

Re: Документация по компонентам
« Ответ #173 : 25.05.2006, 07:48:48 »
Оке...Ну если появится минутка, то напиши. Может я к тому времени..что и сам додумаю..))

Re: Документация по компонентам
« Ответ #174 : 25.05.2006, 08:19:29 »
Вот не могу понять где тут мне может пригодится strtotime? Если возможно расскажи подробнее)) И допустим у меня есть в базе дата удаления 2006-06-25, как мне сравнить с текущей датой эту дату, и вывести юзеру сколь осталось дней?
Обязательно это средствами php делаь? Если значение с которым нужно узнать разницу в БД имхо решать такую задачу надо стредствами БД.
Например так:
SELECT DATEDIFF(NOW(),'2006-06-25')
*

PyKaB

  • Захожу иногда
  • 88
  • 19 / 13
Re: Документация по компонентам
« Ответ #175 : 25.05.2006, 09:29:16 »
toolbar.****.html.php подключается из toolbar.****.php,  а тот, в свою очередь, вызывается в файле: administrator/modules/mod_toolbar.php...

если тебе необходимо использовать русские языковые константы, то лучше их подключить в файле toolbar.****.php
а вот и нет :) тут дело не чисто :) в toolbar.****.php не определенна $mosConfig_lang, поэтому подключить проблематично, НО если подключить в admin.***.php, в котором $mosConfig_lang определен, то языковые константы работают в toolbar.****.html.php.... получается, что admin.***.php подключается первый и потом где-то удаляется переменная $mosConfig_lang.

Re: Документация по компонентам
« Ответ #176 : 25.05.2006, 15:41:31 »
Обязательно это средствами php делаь? Если значение с которым нужно узнать разницу в БД имхо решать такую задачу надо стредствами БД.
Например так:
SELECT DATEDIFF(NOW(),'2006-06-25')

Не так SELECT DATEDIFF(NOW(),'2006-06-25'), А так SELECT PERIOD_DIFF(NOW(),'2006-06-25'). Но это все равно не подходит, проверять нужно не одну строку, а больше 300..так что тут без рнр ни как.

to USERXP

Все проблему решил по описаному выше тобой примеру! Разницу между дат вычислил путем перевода даты из базы:

  $a 
strtotime ("$row->dropdate");
  
$c $a time(); 


Результат сам поделил на сутки и секунды. Получил что хотел. Удаление из базы проделал простым запросом.)) Ну и все соответственно в цикле.

ЗЫ. Чуть не забыл +1 сделать.)) Спасибо помог в очередной раз!
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Документация по компонентам
« Ответ #177 : 25.05.2006, 15:53:28 »
Спасибо/Пожалуйста!
Молодец, что разобрался.
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3

Re: Документация по компонентам
« Ответ #178 : 25.05.2006, 19:09:47 »
Не так SELECT DATEDIFF(NOW(),'2006-06-25'), А так SELECT PERIOD_DIFF(NOW(),'2006-06-25'). Но это все равно не подходит, проверять нужно не одну строку, а больше 300..так что тут без рнр ни как.
А в чем собственно проблемы? Зачем прекладывать на php ту работу с которой отлично справится БД...
А PERIOD_DIFF счиатет разниу в месяцах... а вы если память не изменяет хотели разницу в днях.

Re: Документация по компонентам
« Ответ #179 : 26.05.2006, 07:19:56 »
А в чем собственно проблемы? Зачем прекладывать на php ту работу с которой отлично справится БД...
А PERIOD_DIFF счиатет разниу в месяцах... а вы если память не изменяет хотели разницу в днях.

Да так и есть, и память вам не изменяет, именно в днях я и хотел. Вот тогда зачем Вы мне предложили PERIOD_DIFF? Ну не в этом суть я же говорил что сравнить нужно более 300 строк в которых не одна и таже дата, а все разные и получается что текущую дату нужно сравнить с тремя сотнями разных дат. Вот покажите мне пример запроса в базу (SELECT PERIOD_DIFF), без помощи рнр чтобы запрос вернул 300 значений - разностей дат.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор n_drey

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