Новости Joomla

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором...

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором...

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором представлены новости, интервью, рецензии и есть небольшой магазин на JoomShopping. Возникла необходимость внутри Joomla статей вставлять упоминание релиза и кнопочку «добавить в корзину». Я взял плагин WT JShopping products anywhere Сергея Толкачева (@webtolkru). Плагин отображает название товара и ссылку. При помощи напильника, ИИ и навыков вёрстки появился Uikit макет для шаблонов на базе Yootheme Pro.Учитываается мобильная версия - телефоны и ipad.Кнопка добавления в корзину работает по Ajax и появляется всплывающее окно (Notification Bar от Uikit) с информацией.Пока это базовый вариант, требующий доведения до лоска, однако он уже работает и его можно применять на проектах.Взять макет можно здесь.А плагин вставки товаров в материалы можно забрать здесь.Приветствуется доведение до ума и оформление в виде PR.

WT Content Image Gallery v.1.2.3 - плагин галереи изображений для Joomla

WT Content Image Gallery v.1.2.3 - плагин галереи изображений для Joomla

👩‍💻 WT Content Image Gallery v.1.2.3 - плагин галереи изображений для Joomla.Пакет плагинов галереи изображений и видео для вставки в материалы и модули Joomla, а так же везде, где работают плагины группы content. Поддержка собственных макетов вывода для галерей. Смешанные фото+видео галереи. Плагин создан как замена Simple Image Gallery и поддерживает синтаксис {gallery}{/gallery}.👩‍💻 v.1.2.3. Что нового?- Обработка вступительного и полного текста для материалов Joomla. Добавлена обработка шорткодов в полном и вступительном текстах материалов Joomla.- Системные требования. Повышены минимальные требования до Joomla 5 и PHP 8.1.- Мелкие правки. Исправлена ошибка работы макета по умолчанию в плагине контента.- Joomla 6. Пакет плагинов успешно протестирован на Joomla 6.Страница расширения.GitHub расширенияJoomla Extensions Directory@joomlafeed#joomla #расширения

Совет по Joomla: несколько значений по умолчанию в XML-формах для стандартных полей типа list

👩‍💻 Совет по Joomla: несколько значений по умолчанию в XML-формах для стандартных полей типа list.При работе над плагином возникла необходимость указать стандартный набор из нескольких элементов стандартного поля списка. И хотелось указать их в стандартном же атрибуте default для полей. Когда это нужно?Когда Ваши пользователи устанавливают плагин и НЕ заходят в настройки - в коде вы можете использовать значения по умолчанию с помощью класса Registry (писал об этом ранее) и всегда быть уверенным, что хоть какие-то жизненно необходимые параметры к вам придут всегда. 🧐 Но как сделать то же самое для интерфейса админки?Пользователя нужно направлять, предлагать очевидный работоспособный сценарий для начала, а дальше он уже сам разберется. Когда человек заходит в параметры свежеустановленного плагина в Form ещё нет данных и параметры по умолчанию выставляются из атрибутов default в xml-полях.
<field name="showdesc" type="radio"                       label="PLG_CFI_PARAM_SHOWDESC"                       class="btn-group btn-group-yesno"                       default="1">                    <option value="0">JNO</option>                    <option value="1">JYES</option>                </field>
Здесь по умолчанию будет включено "Да". И если пользователь не переключит параметр, то при сохранении мы ожидаемо получим "да" в params плагина.Для поля списков type=&quot;list&quot; можно указать значение по умолчанию и многие знают, что его можно указать только одно.
<field type="list"                       name="article_fields"                       label="article_fields"                       description="article_fields_desc"                       layout="joomla.form.field.list-fancy-select"                       multiple="true"                       default="id"                >                    <option value="id">id</option>                    <option value="title">title</option>                    <option value="alias">alias</option>                    <option value="introtext">introtext</option>                    <option value="fulltext">fulltext</option>                    <option value="state">state</option></field>
Но у нас поле с множественным выбором (атрибут multiple) и хотелось бы указать несколько значений по умолчанию...Оказывается, так можно сделать. Для этого в атрибуте default нужно указать json с нужными параметрами в виде {int}key : {string} value.Например, default='{"0":"id","1":"title"}'.
<field type="list"                       name="article_fields"                       label="article_fields"                       description="article_fields_desc"                       layout="joomla.form.field.list-fancy-select"                       multiple="true"                       default='{"0":"id","1":"title"}'                >                    <option value="id">id</option>                    <option value="title">title</option>                    <option value="alias">alias</option>                    <option value="introtext">introtext</option>                    <option value="fulltext">fulltext</option>                    <option value="state">state</option></field>
⚠️ Обратите внимание на кавычки! Поскольку json_decode не понимает одинарные кавычки собственно json нужно писать с двойными, а значение для атрибута default писать в одинарные.🙏 За подсказанное решение огромное спасибо участникам нашего сообщества - разработчикам Дмитрию Васюкову (@fictionlabs) и Игорю Бердичевскому (@septdir).@joomlafeed#joomla #разработка #webdev #development

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

kupo

  • Захожу иногда
  • 62
  • 1 / 0
Ребята, проблема такова. Создаю компонент, который будет задавать вопрос из БД, на который пользователь должен ответить и если ответ будет правильный, выведется сообщение "ВЕРНО" если ответ неправильный "НЕВЕРНО". Я почти у же все сделал, данные через админку добавляются, через фронтэнд тоже. Но я никак не могу понять, как сделать проверку введенных ответов. Как я понимаю, для того чтобы кнопка отправить работала, необходимо создать функцию в контроллере. В этой функции будет переменная куда будут поступать введенный ответ. Но на сколько я понимаю, все действия с БД должны выполняться в модели, в которой я создал массив полей с ответами из БД. Так вот проблема в том что не могу понять, как отправить переменную с введенными данными из контроллера в модель, и сравнить с массивом ответов.

Вообще подскажите пожалуйста я правильно мыслю?
*

varX

  • Живу я здесь
  • 2466
  • 141 / 5
  • разработка компонентов
Цитировать
Вообще подскажите пожалуйста я правильно мыслю?

Вы даже неправильно пишете. А переменная в функцию модели передается так-же, как и в любую другую функцию.

Код: php
$model->func($var);
Разработка и ремонт. VirtueMart. JoomShopping. Свои компоненты. Принимаю заявки на plasma-web.ru.
*

kupo

  • Захожу иногда
  • 62
  • 1 / 0
Вы даже неправильно пишете.
Не спорю. Но скажите, пожалуйста, мысль верна или есть вариант лучше? Я просто только начинаю во всем разбираться.
*

varX

  • Живу я здесь
  • 2466
  • 141 / 5
  • разработка компонентов
Мысль то в чем заключается? Если по правилам все хочешь, то получай данные в контроллер, передавай в модель, обрабатывай, выводи видом.
Разработка и ремонт. VirtueMart. JoomShopping. Свои компоненты. Принимаю заявки на plasma-web.ru.
*

kupo

  • Захожу иногда
  • 62
  • 1 / 0
Если по правилам все хочешь, то получай данные в контроллер, передавай в модель, обрабатывай, выводи видом.
Так и хотел сделать. Спасибо.
*

kupo

  • Захожу иногда
  • 62
  • 1 / 0
Хммм... Получил введенные данные в контроллер, отправил их в модель, а как их вывести видом? Точнее, если введенный ответ равен тому, что в бд, тогда выводиться сообщение верно иначе не верно...
Я записал так:
если верно тогда $mess = JText::_('Верно');
если неверно тогда $mess = JText::_('Неверно');   

А как из контроллера передать переменную в вид? Так же?
$view->func($mess);

Тогда как её получить в виде? Я понимаю, что в файле view.html.php нужно создать функцию func($mess), а что нужно написать в ней, чтобы отображался текст переменной?
*

prometheus

  • Захожу иногда
  • 84
  • 7 / 0
в виде view.html.php

$mess = $model->func();
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Привет!

Какой смысл передавать в вид? Можно в контроллере выставлять $mess и отдавать в виде сообщения используя setMessage.

Я бы сделал так:

1. Получаем данные в контроллере.
2. Валидируем в моделе и возвращаем либо true либо false.
3. В контроллере в зависимости от того, что вернулось, выставляем сообщение.

Ну как-то вот так:

Код: php
$jinput = JFactory::getApplication()->input;
$myVar = $jinput->get('varname');

if ($model->validate($myVar))
{
$this->setMessage(JText::_('Верно'));
}
else
{
$this->setMessage(JText::_('Неверно'));
}

$this->setRedirect('url для редиректа');
*

kupo

  • Захожу иногда
  • 62
  • 1 / 0
Цитировать
Ну как-то вот так:
Спасибо! А не поможешь со сравниванием ответов? Я не могу понять, как сравнить введенный ответ с тем что в БД... Я думал что все делаю правильно, но нифига не получилось. Собственно вот моя функция в модели.

Код
public function getAuth($data)
{
                            $mess='Ответ не введен' // изначально переменная $mess будет выводить "Ответ не введен"

                            $query = 'SELECT ansver ' . ' FROM ' . '#__lesson';
       $this->_db->setQuery($query);
     $this->_teach = $this->_db->loadObjectList();
}

Как я понимаю, дальше нужно сделать условие в котором переменная $data должна совпадать с одной из записей из поля ansver. Но как это сделать я не могу понять....
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
А как хранятся записи в поле ansver? Как хранятся ответы? Без структуры БД тяжело ответить.

P.S.
Ответ по английски правильно answer, а не ansver.
*

kupo

  • Захожу иногда
  • 62
  • 1 / 0
Вот запрос который создавал таблицу
Код
CREATE TABLE `#__lesson` (
    id   bigint(20) unsigned NOT NULL auto_increment,
    name  CHAR(30),
    text  CHAR(128),
    ansver  CHAR(32),
PRIMARY KEY (`id`)
 ) TYPE=MyISAM;       

Как я понимаю нужен тип ячейки?
Да, я знаю что ошибся с буквой в слове, но менять не стал.
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
То есть делается выборка всех ansver независимо от lesson? Если так, то:

Код: php
// Выбираем в виде массива ответов.
$this->_teach =  $db->loadResultArray();

// Пока ответ не нашли.
$found = false;

// Проходим по массиву из базы.
foreach ($this->_teach as $teach)
{
// Если ответ из формы совпадает с ответом из базы.
if ($data['ansver'] == $teach)
{
// Ответ найден.
$found = true;
}
}

return $found;
*

kupo

  • Захожу иногда
  • 62
  • 1 / 0
Цитировать
Invalid argument supplied for foreach() in
Программа жалуется, только не могу понять на что...
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
*

kupo

  • Захожу иногда
  • 62
  • 1 / 0
А куда это вставить надо? Просто в функцию модуля? Или вместо чего-то?
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
*

kupo

  • Захожу иногда
  • 62
  • 1 / 0
Цитировать
syntax error, unexpected T_VARIABLE in
Вот что вывел после добавления этой строчки.
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Не, так тяжело! Приложите весть код модели, только спрячьте его под тег spoiler, чтобы не было сообщение на всю страницу.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
А куда это вставить надо? Просто в функцию модуля? Или вместо чего-то?
var_dump($this->_teach);
kupo вы задаете вопросы не зная синтаксиса php?
Может вы не в том направлении двигаетесь
Этого вам не достаточно будет для отлавливания
Код: html4strict
<form action="" method="post" name="myForm">
<input type="text" class="inputbox" name="otvet" size="20">
<input type="submit" class="button" name="send" value="Отправить ответ">
</form>
<?php
$otvet = JRequest::getVar('otvet', '', 'post');
if($otvet) {
echo 'Поймал ответ сравнил с данными базы и вывел результат';
}
?>
*

kupo

  • Захожу иногда
  • 62
  • 1 / 0
Цитировать

kupo вы задаете вопросы не зная синтаксиса php?
Я только начал изучать php. Да, виноват, забыл поставить точку с запятой. А вот в приведенном вами коде, собственно где происходит сравнивание?

b2z, вот весь код модели. Я все же решил передавать данные из модели в вид, как я понял это не критично, просто мне так пока что проще.  Кстати дамп выдает NULL.
Спойлер
[свернуть]
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Ну так конечно NULL, посмотрите на строку запроса:

Код: php
$query = 'SELECT * ' . ' FROM ' . '#__lesson' . 'WHERE ansver=$data' ;

1. Между #__lesson и WHERE у вас нет пробела.
2. У вас переменная $data хранит точное значение из формы или же это массив $_POST и значение хранится в $data['ansver']? Что приходит из формы?
3. Код WHERE ansver=$data ведет почти к 100% SQL инъекции. SQL инъекцию можно избежать обрамив переменную в quote()
Код: php
$query = 'SELECT * ' . ' FROM ' . '#__lesson' . ' WHERE ansver=' . $this->_db->quote($data['ansver']);
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Зачем делать второй запрос?
В функции function getTeach мы уже получили все данные
*

kupo

  • Захожу иногда
  • 62
  • 1 / 0
Ну так конечно NULL, посмотрите на строку запроса:

Код: php
$query = 'SELECT * ' . ' FROM ' . '#__lesson' . 'WHERE ansver=$data' ;

1. Между #__lesson и WHERE у вас нет пробела.
2. У вас переменная $data хранит точное значение из формы или же это массив $_POST и значение хранится в $data['ansver']? Что приходит из формы?
3. Код WHERE ansver=$data ведет почти к 100% SQL инъекции. SQL инъекцию можно избежать обрамив переменную в quote()
Код: php
$query = 'SELECT * ' . ' FROM ' . '#__lesson' . ' WHERE ansver=' . $this->_db->quote($data['ansver']);

Что-то я совсем не понимаю...
1. Как понять не стоит пробела?
2. Переменная содержит точное значение из формы.

Блин... А можете посоветовать книги или мануалы по которым можно научиться программированию на Joomla?
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Блин... А можете посоветовать книги или мануалы по которым можно научиться программированию на Joomla?
С этого и надо было начинать...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Передать параметры модуля в файл стилей CSS.php

Автор fbr

Ответов: 6
Просмотров: 2069
Последний ответ 13.02.2014, 19:46:44
от varX
Передать массив данных между двумя представлениями

Автор redline16

Ответов: 1
Просмотров: 1112
Последний ответ 19.09.2013, 15:38:16
от Fedor Vlasenko
AJAX запрос к функции контроллера и JFactory::getUser

Автор kathu

Ответов: 12
Просмотров: 3469
Последний ответ 10.09.2013, 23:27:24
от Fedor Vlasenko
Joomla 2.5 Можно ли переопределить контроллер и модель в своем шаблоне?

Автор FeaMor

Ответов: 4
Просмотров: 2492
Последний ответ 04.09.2013, 19:21:50
от zomby6888
[Решено] Как подключить вид, минуя модель?

Автор SindBAD

Ответов: 3
Просмотров: 1752
Последний ответ 20.01.2013, 00:34:08
от SindBAD