Новости Joomla

Как тестировать Joomla PHP-разработчику? Компонент Patch tester.

👩‍💻 Как тестировать Joomla PHP-разработчику? Компонент Patch tester.Joomla - open source PHP-фреймворк с готовой админкой. Его основная разработка ведётся на GitHub. Для того, чтобы международному сообществу разработчиков было удобнее тестировать Pull Requests был создан компонент Patch Tester, который позволяет "накатить" на текущую установку Joomla именно те изменения, которые необходимо протестировать. На стороне инфраструктуры Joomla для каждого PR собираются готовые пакеты, в которых находится ядро + предложенные изменения. В каждом PR обычно находятся инструкции по тестированию: куда зайти, что нажать, ожидаемый результат. Тестировщики могут предположить дополнительные сценарии, исходя из своего опыта и найти баги, о которых сообщить разработчику. Или не найти, и тогда улучшение или исправление ошибки быстрее войдёт в ядро Joomla. Напомню, что для того, чтобы PR вошёл в ядро Joomla нужны минимум 2 положительных теста от 2 участников сообщества, кроме автора. Видео на YouTubeВидео на VK ВидеоВидео на RuTubeКомпонент на GitHub https://github.com/joomla-extensions/patchtester@joomlafeed#joomla #php #webdev #community

0 Пользователей и 1 Гость просматривают эту тему.
  • 21 Ответов
  • 2536 Просмотров
*

baskethome

  • Захожу иногда
  • 110
  • 0 / 0
Всем привет! Не могу найти нормально описания по созданию модуля для Joomla 3.
Надо сделать модуль с выводом из 1 таблицы по 2 значениям:
Код
$result=mysql_query('SELECT * FROM `skb01_cin_films` WHERE city REGEXP "(^|[[:space:][:punct:]])0([[:space:][:punct:]]|$)" AND pokaz=0');
выводить все продукты, где в поле city есть 0 и поле pokaz 0. Это у меня просто в php файле.
А как сделать модуль с таким выводом, прошу помощи
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Re: Модуль С выводом данных ИЗ таблицы
« Ответ #1 : 21.01.2015, 21:35:57 »
Взять и написать модуль ) Даже не знаю что сказать, у меня в подписи есть ссылка на конструктор каркаса для модулей, можете базово каркас соорудить, а дальше делать что нужно с ним!
*

baskethome

  • Захожу иногда
  • 110
  • 0 / 0
Re: Модуль С выводом данных ИЗ таблицы
« Ответ #3 : 21.01.2015, 22:26:32 »
Код
// Устанавливаем поля для выборки
$fields = array('name', 'username');

// Конструируем запрос
$query->select($db->quoteName($fields))
->from($db->quoteName('#__users'))
->where($db->quoteName('block'). ' = 0')
->order($db->quoteName('registerDate'). ' DESC');

// Устанавливаем запрос
$db->setQuery($query, 0, $params->get('count', 5));

эту статью видел, просто не очень понятно как в конструктор записать
Код
$result=mysql_query('SELECT * FROM `skb01_cin_films` WHERE city REGEXP "(^|[[:space:][:punct:]])0([[:space:][:punct:]]|$)" AND pokaz=0');
если не сложно, опишите, пожалуйста
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Модуль С выводом данных ИЗ таблицы
« Ответ #4 : 21.01.2015, 22:32:39 »
Цитировать
REGEXP "(^|[[:space:][:punct:]])0([[:space:][:punct:]]|$)
за такое надо сразу по рукам
Как может city соответствовать этому?
*

baskethome

  • Захожу иногда
  • 110
  • 0 / 0
Re: Модуль С выводом данных ИЗ таблицы
« Ответ #5 : 21.01.2015, 22:36:27 »
я знаю мне уже писали об этом, но таблица 1, продукты могут быть в разных городах и поэтому стоит множественный выбор (0,1,2). а с помощью этой записи получается выводить те продукты, где присутствует 1 или 2 ил 0 и т.д.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Модуль С выводом данных ИЗ таблицы
« Ответ #6 : 21.01.2015, 22:45:28 »
Цитировать
1 или 2 ил 0
Код: sql
WHERE city IN (1, 2, 0)
city для меня сущность и должна иметь строковое значение, city_id числовое
*

baskethome

  • Захожу иногда
  • 110
  • 0 / 0
Re: Модуль С выводом данных ИЗ таблицы
« Ответ #7 : 21.01.2015, 22:50:02 »
пробовал, не работает, т.е. работает только на ед вывод. Т.е. если в поле таблицы только одно значение (1 или 0 и тд), а у меня в таблицу записывается (когда несколько городов у товара) - 1,0 или 0,1,2  и тд
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Модуль С выводом данных ИЗ таблицы
« Ответ #8 : 21.01.2015, 23:06:49 »
тогда Неправильная логика записи
создайте еще одну таблицу и пишите туда ид страны и ид фильма. Один ко многим.
*

baskethome

  • Захожу иногда
  • 110
  • 0 / 0
Re: Модуль С выводом данных ИЗ таблицы
« Ответ #9 : 21.01.2015, 23:15:56 »
переписывать заново компонент уже нет времени. Сколько будет стоить сделать такой модуль вывода? Только прошу не заламывать)
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Re: Модуль С выводом данных ИЗ таблицы
« Ответ #11 : 21.01.2015, 23:29:56 »
эту статью видел, просто не очень понятно как в конструктор записать
Код
$result=mysql_query('SELECT * FROM `skb01_cin_films` WHERE city REGEXP "(^|[[:space:][:punct:]])0([[:space:][:punct:]]|$)" AND pokaz=0');
если не сложно, опишите, пожалуйста
Зачем. Есть у вас модуль, напишите его на чистом php если с конструктором запросов Joomla проблемы. Очистите файл вообще, напишите
Код: php
echo 'мой модуль';
видите вывод во фронтенде? И вперед, на php как умеете.
*

baskethome

  • Захожу иногда
  • 110
  • 0 / 0
Re: Модуль С выводом данных ИЗ таблицы
« Ответ #12 : 21.01.2015, 23:40:41 »
Да, уже подумывал об этом,  только получается, что надо будет прописывать подключение к бд??
Код
$sdd_db_host='localhost'; 
$sdd_db_name='prosto';
$sdd_db_user='root';
$sdd_db_pass='';
@mysql_connect($sdd_db_host,$sdd_db_user,$sdd_db_pass);
@mysql_select_db($sdd_db_name);

$result=mysql_query('SELECT * FROM `skb01_cin_films` WHERE city REGEXP "(^|[[:space:][:punct:]])1([[:space:][:punct:]]|$)" AND pokaz=1');
 
и т.д.

p.s. извиняюсь, если глупый вопрос, только учусь)
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Re: Модуль С выводом данных ИЗ таблицы
« Ответ #13 : 22.01.2015, 00:00:13 »
Дай бог памяти вроде как-то так
Код: php
$db = JFactory::getDBO();
$sql = 'SELECT * FROM `skb01_cin_films` WHERE city REGEXP "(^|[[:space:][:punct:]])1([[:space:][:punct:]]|$)" AND pokaz=1';
$db->setQuery($sql);
$result = $db->loadObjectList();
var_dump($result);
*

baskethome

  • Захожу иногда
  • 110
  • 0 / 0
Re: Модуль С выводом данных ИЗ таблицы
« Ответ #14 : 22.01.2015, 00:53:05 »
Спасибо. Щас попробую. А ещё один вопрос. Можно ли сделать так, чтобы в модуле было поле, в него вписать запрос и этот запрос подставить в обработку.
Пример:в поле модуля вбиваю SELECT * FROM `skb01_cin_films` WHERE city REGEXP "(^|[[:space:][:punct:]])1([[:space:][:punct:]]|$)" AND pokaz=1 и это выводится в $sql.
А в php - $sql = '$zapros'; Это просто как пример.

В идеале кончено бы 2 поля чтобы можно было ввести 0 или 1 или 2 в поле city и поле pokaz

Просто модуль не один раз повторяться будет на сайте и разные выводы для городов
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Модуль С выводом данных ИЗ таблицы
« Ответ #15 : 22.01.2015, 09:16:20 »
Чтобы поля в админке были или во фронте? Фронт - это форма, в модуле получаете из реквеста, через JInput. Админка - имхо, в параметрах модуля можно, по приведенной ссылке в #2 ответе есть пример использования параметров.
*

baskethome

  • Захожу иногда
  • 110
  • 0 / 0
Re: Модуль С выводом данных ИЗ таблицы
« Ответ #16 : 22.01.2015, 11:51:20 »
Народ, спасайте. Попробовал написать модуль с полями. Сделал 2 поля cityfilm текстовое и pokazfilm список с 2 значениями.
Запрос на простом php $result=mysql_query('SELECT * FROM `skb01_cin_films` WHERE city REGEXP "(^|[[:space:][:punct:]])1([[:space:][:punct:]]|$)" AND pokaz=1');


файл XML
Код

<files>
<filename>mod_films.xml</filename>
<filename module="mod_films">mod_films.php</filename>
<filename>helper.php</filename>
<filename>index.html</filename>
<folder>tmpl</folder>
<folder>assets</folder>
<folder>language</folder>
</files>
<languages folder="language">
<language tag="ru-RU">ru-RU.mod_films.ini</language>
<language tag="ru-RU">ru-RU.mod_films.sys.ini</language>
</languages>

<config>
<fields name="params">
<fieldset name="basic">
<field name="cityfilm" type="text" default="" label="MOD_FILMS_FIELD_CITY_LABEL" description="MOD_FILMS_FIELD_CITY_DESC" filter="raw" />
<field name="pokazfilm" type="list" label="MOD_FILMS_FIELD_POKAZ_LABEL" description="MOD_FILMS_FIELD_POKAZ_DESC">
<option value="nowfi">MOD_FILMS_FIELD_POKAZ_TODAY</option>
<option value="soonfi">MOD_FILMS_FIELD_POKAZ_SOON</option>
</field>
</fieldset>
<fieldset
name="advanced">
<field
name="layout"
type="modulelayout"
label="JFIELD_ALT_LAYOUT_LABEL"
description="JFIELD_ALT_MODULE_LAYOUT_DESC" />

<field
name="moduleclass_sfx"
type="textarea" rows="3"
label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL"
description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC" />

<field
name="cache"
type="list"
default="1"
label="COM_MODULES_FIELD_CACHING_LABEL"
description="COM_MODULES_FIELD_CACHING_DESC">
<option
value="1">JGLOBAL_USE_GLOBAL</option>
<option
value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option>
</field>
<field
name="cache_time"
type="text"
default="900"
label="COM_MODULES_FIELD_CACHE_TIME_LABEL"
description="COM_MODULES_FIELD_CACHE_TIME_DESC" />
<field
name="cachemode"
type="hidden"
default="static">
<option
value="static"></option>
</field>
</fieldset>
</fields>
</config>
</extension>

файл default
Код
<?php

defined('_JEXEC') or die;
?>


<?php if (!empty($name)) : ?>
<ul class="films><?php echo $moduleclass_sfx ?>">
<?php foreach ($names as $name) : ?>
<li>
<?php echo $name->name; ?>
</li>
<?php endforeach;  ?>
</ul>
<?php endif; ?>

файл helper

Код
<?php

defined('_JEXEC') or die;

class ModFilmsHelper
{

public static function getFilms($params)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('*')
->order('id DESC')
->from('#__cin_films')
->where('city REGEXP "(^|[[:space:][:punct:]])$cityfilm([[:space:][:punct:]]|$)" AND pokaz=$pokazfilm');
$films = JFactory::getFilms();


$db->setQuery($query, 0, $params->get('cityfilm'));
$db->setQuery($query, 0, $params->get('pokazfilm'));
$result = $db->loadObjectList();



return (array) $result;
}

}

файл модуль php
Код
<?php

defined('_JEXEC') or die;

require_once __DIR__ . '/helper.php';

$cityfilm = $params->get('cityfilm');
$pokazfilm = $params->get('pokazfilm');
$moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx'));

require JModuleHelper::getLayoutPath('mod_films', $params->get('layout', 'default'));

*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Re: Модуль С выводом данных ИЗ таблицы
« Ответ #17 : 22.01.2015, 12:37:28 »
вот это бред:
$db->setQuery($query, 0, $params->get('cityfilm')); - установили запрос
$db->setQuery($query, 0, $params->get('pokazfilm')); - установили новый запрос, убив то что устанавливали строкой выше (эта команда не дополняет! Только заменяет!)
$result = $db->loadObjectList();
*

baskethome

  • Захожу иногда
  • 110
  • 0 / 0
Re: Модуль С выводом данных ИЗ таблицы
« Ответ #18 : 22.01.2015, 14:47:51 »
блин, парни, поправьте, что не так, пжл. Время на исходе, денег особо нет, могу если что на телефон кинуть, как спасибо. Выручайте.
всё ночь сидел смотрел ролик искал в инете как делают, но там примеры только по меню, а начинаю на примере делать, не работает
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Модуль С выводом данных ИЗ таблицы
« Ответ #19 : 22.01.2015, 15:07:58 »
Приведи значения столбца city.
Ибо REGEXP "(^|[[:space:][:punct:]])$cityfilm([[:space:][:punct:]]|$)" кроме как гoвнокодом назвать нечем. Тебе сколько человек сказало это
Столбцы по которым должна быть выборка должны быть индексируемыми (это тебе на заметку), чтобы запрос отрабатывал быстрее
*

baskethome

  • Захожу иногда
  • 110
  • 0 / 0
Re: Модуль С выводом данных ИЗ таблицы
« Ответ #20 : 22.01.2015, 16:13:45 »
спасибо) критика это хорошо)))) я не особо знаю пока все эти нюансы, т.к. пока ещё учусь этому. Всё приходит с опытом. ну вроде выводит всё.
Только проблема осталась с полями настройки модуля. Выводит только через такую запись

Код
->where('city REGEXP "(^|[[:space:][:punct:]])0([[:space:][:punct:]]|$)" AND pokaz=1');

надо, чтобы были типа как переменные из 2-х полей параметра модуля

Тут 2 поля текстовое город и select показ

mod_films.xml
Код
<fields name="params">
<fieldset name="basic">
<field name="cityfilm" type="text" default="" label="MOD_FILMS_FIELD_CITY_LABEL" description="MOD_FILMS_FIELD_CITY_DESC" filter="raw" />
<field name="pokazfilm" type="list" label="MOD_FILMS_FIELD_POKAZ_LABEL" description="MOD_FILMS_FIELD_POKAZ_DESC">
<option value="nowfi">MOD_FILMS_FIELD_POKAZ_TODAY</option>
<option value="soonfi">MOD_FILMS_FIELD_POKAZ_SOON</option>
</field>
</fieldset>

helper

Код
<?php

class ModFilmsHelper
{

public static function getFilms($params)
{
$pokazfilm = $params->get('pokazfilm');
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('*')
->order('id DESC')
->from('#__cin_films')
->where('city REGEXP "(^|[[:space:][:punct:]])0([[:space:][:punct:]]|$)" AND pokaz=1');
$user = JFactory::getUser();



$db->setQuery($query, 0, $params->get('cityfilm'));
$result = $db->loadObjectList();

return (array) $result;
}
}


default

Код
<?php

defined('_JEXEC') or die;
?>


<?php if (!empty($names)) : ?>
<div class="cols"><?php echo $moduleclass_sfx ?>
<?php foreach ($names as $name) : ?>
<div class="col">
<img src="<?php echo $name->izo; ?>" alt="" />
<div class="title-film"><a href="index.php?option=com_cinema&view=films&id=<?php echo $name->id; ?>"><?php echo $name->name.((isset($name->category_id) && isset($name->params) && $name->category_id and $name->params->get('show_category'))? (' ('.$name->category_id.')') : '');  ?></a></div>
<div class="janr"><?php echo $name->janr; ?></div>
</div>
<?php endforeach;  ?>
</div>
<?php endif; ?>

mod_.php

Код
<?php

defined('_JEXEC') or die;

require_once __DIR__ . '/helper.php';

$cityfilm = $params->get('cityfilm');
$names = ModFilmsHelper::getFilms($params);
$pokazfilm = $params->get('pokazfilm');
$moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx'));

require JModuleHelper::getLayoutPath('mod_films', $params->get('layout', 'default'));
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Модуль С выводом данных ИЗ таблицы
« Ответ #21 : 22.01.2015, 23:10:48 »
Приведи значения столбца city.
Не привел данные из таблицы.
Ок. Сможешь тогда рассказать принцип работы регулярного выражения
REGEXP "(^|[[:space:][:punct:]])0([[:space:][:punct:]]|$)"
что оно по твоему ищет, откуда появляются записи удовлетворяющие условию
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Отправка файлов через ajax в модуль Joomla

Автор hemicide

Ответов: 19
Просмотров: 2352
Последний ответ 11.04.2022, 08:44:33
от sivers
Прописать условие для сохранения данных в БД

Автор semen1707

Ответов: 0
Просмотров: 528
Последний ответ 14.04.2021, 00:59:44
от semen1707
Пример представления компонента с выводом списка с фильтром по связанной таблице

Автор borro

Ответов: 36
Просмотров: 2747
Последний ответ 14.10.2020, 11:59:15
от b2z
Модель для представления, которое показывает списки данных разных типов

Автор borro

Ответов: 27
Просмотров: 1301
Последний ответ 06.05.2020, 11:57:12
от Septdir
Модуль обратной связи. Как использовать свойство context в ajax запросе

Автор ushangi

Ответов: 0
Просмотров: 729
Последний ответ 15.02.2020, 22:08:12
от ushangi