Новости Joomla

Обновление пакета плагинов JL Like 5.0

Обновление пакета плагинов  JL Like 5.0

Обновление пакета плагинов JL Like 5.0.0Команда JoomLine рада представить долгожданное обновление плагина социальных кнопок JL Like — версию 5.0.0! В этом релизе мы сделали акцент на совместимости с последними версиями Joomla, улучшении производительности и расширении функционала.👩‍💻 Что нового в JL Like 5.0.0?- Полная совместимость с Joomla 5 — теперь плагин работает на всех актуальных версиях Joomla, включая Joomla 5.- Рефакторинг и оптимизация кода — проведена масштабная чистка и обновление внутренних классов для повышения стабильности и скорости работы.- Удаление устаревших зависимостей — полностью отказались от использования jQuery, что ускорило загрузку страниц и повысило безопасность.- Обновление CSS и удаление неиспользуемых стилей — интерфейс стал еще легче и современнее.- Удалена поддержка устаревших виджетов — например, функциональность твиттер-виджета вынесена из плагина.- Поддержка twitter:card — улучшена интеграция с социальными сетями для красивого отображения ссылок.- Гибкая настройка счетчиков лайков — теперь можно включать и отключать рандомизацию количества лайков.- Улучшено подключение скриптов — переход на WebAssetManager для более корректной работы с ресурсами.- Обновлены языковые переменныеРасширения всё ещё наследуют старую архитектуру плагинов Joomla 3, но были протестированы на Joomla 5.3.Новость на сайте JoomlineСтраница расширенияGitHub расширения@joomlafeed#расширения

Совет по Joomla: $db->getQuery(true) стал устаревшим

Совет по Joomla: $db->getQuery(true) стал устаревшим

👩‍💻 Совет по Joomla: $db->getQuery(true) стал устаревшим.Раньше при создании запросов в базу данных мы всегда получали объект запроса с помощью метода

getQuery(). Если передавался параметр
$new =
true, то получали новый запрос. Если без - последний.

use Joomla\CMS\Factory;$db = Factory::getContainer()->get('DatabaseDriver');$query = $db->getQuery(new: true);// и строим запрос
Под капот Joomla 4 вошёл Joomla Framework (PHP фреймворк а-ля Laravel, Yii и т.д.), а для Joomla 5 он обновился - версия 3.4.1 вышла 6 октября 2023г. В методе фреймворка есть примечание о том, что параметр
$new, который передавался в метод
getQuery() помечен как устаревший и будет удалён в версии фреймворка 4.0.
The parameter $new is deprecated and will be removed in 4.0, use %s::createQuery() instead.В Joomla 4 версия Joomla Framework была 2.x., в Joomla 5 - 3.x. Поэтому есть предположение, что с выходом Joomla 6 обновится и версия фреймворка - станет 4.0. Поэтому для получения объекта для новых запросов следует использовать метод
createQuery(). Он уже представлен в ядре и широко используется. При этом метод
getQuery() останется, но, скорее всего, будет выполнять функцию только геттера - получения текущего запроса.
@joomlafeed#joomla #php #разработка

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

artmasterpro

  • Осваиваюсь на форуме
  • 44
  • 9 / 0
Возможно глупые вопросы:
Вот прочитал линк http://joomla-book.ru/development/creating-component/mvc-joomla-1-5-step-1-fundamentals повторил, работает, вроде понял.

Но не пойму как мне сделать 2ю задачу в контроллере и вторую обработку в модели.
Например простенький компонент написать: на странице три кнопки, в зависимости от нажатой кнопки меняется переменная task в ссылке и выводиться разный текст на страницу.
« Последнее редактирование: 18.03.2011, 16:17:27 от artmasterpro »
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Re: Первый компонент
« Ответ #1 : 18.03.2011, 16:16:53 »
в контроллере просто вызывается метод по имени переменной task.
а как менять переменную task на странице - посмотрите на почти любой компонент в админке - там по нажатию кнопок в тулбаре он меняется.
*

artmasterpro

  • Осваиваюсь на форуме
  • 44
  • 9 / 0
Re: Пишу первый в жизни MVC компонент
« Ответ #2 : 18.03.2011, 16:21:16 »
Разберемся с точкой входа и контроллером!

Точка входа:

Код
require_once( JPATH_COMPONENT.DS.'controller.php' );

// Require specific controller if requested
if($controller = JRequest::getVar( 'controller' )) {
require_once( JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php' );
}

// Create the controller
$classname    = 'HelloController'.$controller;
$controller   = new $classname( );
 
// Perform the Request task
$controller->execute(JRequest::getVar('task'));


// Redirect if set by the controller
$controller->redirect();

Контроллер:
Код
class HelloController extends JController
{
   
    function display()
    {
   parent::display();
    }

    function one()
    {
   // а что здесь ?
    }

    function two()
    {
   // а что здесь ?
    }

}

например у меня переменная task может принимать 3 значения: one , two , three

Как это должно выглядеть в контроллере ?
« Последнее редактирование: 18.03.2011, 16:30:13 от artmasterpro »
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Re: Пишу первый в жизни MVC компонент
« Ответ #3 : 18.03.2011, 16:30:08 »
Код
class HelloController extends JController
{
    /**
     * Method to display the view
     *
     * @access    public
     */
    function display()
    {

    parent::display();
    }
    function one()
    {
    }
    function two()
    {
    }
    function three()
    {
    }
   

}
*

artmasterpro

  • Осваиваюсь на форуме
  • 44
  • 9 / 0
Re: Пишу первый в жизни MVC компонент
« Ответ #4 : 18.03.2011, 16:34:48 »
Это я уже понял а что пишем внутри этих функций чтобы вызвать обработку моделью ? И как связать названия функций контроллера с названиями функций модели?

Вот мой код модели:

Код

class HelloModelHello extends JModel
{
 

   function one()
    {
       $one = '111';
       return $one;
    }

  function two()
    {
       $two = '222';
       return $two;
    }
  function three()
    {
       $three = '333';
       return $three;
    }
}
« Последнее редактирование: 18.03.2011, 16:43:00 от artmasterpro »
*

icom

  • Давно я тут
  • 830
  • 202 / 4
Re: Пишу первый в жизни MVC компонент
« Ответ #5 : 18.03.2011, 16:54:47 »
примерно так

class HelloController extends JController
{
    /**
     * Method to display the view
     *
     * @access    public
     */
    function display()
    {
   
    parent::display();
    }
    function one()
    {
      global $mainframe;
      $model = $this->getModel('hello');
   
      if ($model->one() == '111') {
         $msg = $mainframe->enqueueMessage(JText::_('true'));
      }
      else {
         $msg = $mainframe->enqueueMessage(JText::_('false'), 'error');
      }
      
      $link = 'index.php?option=com_mycomponent&view=myview';
      $this->setRedirect($link, $msg);
    }
    function two()
    {
    }
    function three()
    {
    }
    

}
*

artmasterpro

  • Осваиваюсь на форуме
  • 44
  • 9 / 0
Re: Пишу первый в жизни MVC компонент
« Ответ #6 : 18.03.2011, 17:01:43 »
т.е. в контроллере достаточно оставить пустые функции? (а что в них обычно пишут?)

можно прокомментировать эту часть кода ?
Код
if ($model->one() == '111') {
         $msg = $mainframe->enqueueMessage(JText::_('true'));
      }


Перейдем View:

вот мой код:
Код
  function search($tpl = null)
    {
   $model = $this->getModel();
one = $model->getOne();
        $this->assignRef( 'one', $one );

        parent::display($tpl);


    }
он не верный, а как должно быть?
*

icom

  • Давно я тут
  • 830
  • 202 / 4
Re: Пишу первый в жизни MVC компонент
« Ответ #7 : 18.03.2011, 17:22:19 »
в контроллере вызываем функции модели

 function one()
    {

      $model = $this->getModel('hello');
   
      if ($model->one() == '111') { // если функция модели возвращает 111, то все ок, если возвращает что-то другое то все плохо
         $msg = $mainframe->enqueueMessage(JText::_('true')); //в $msg записываем сообщение для пользователей
      }
      else {
         $msg = $mainframe->enqueueMessage(JText::_('false'), 'error');
      }
     
      $link = 'index.php?option=com_mycomponent&view=myview';
      $this->setRedirect($link, $msg); //переходим на ссылку $link и выводим сообщение $msg
    }

аналогично для других функций, только $model->two(), $model->three()...

можно проще

 function one()
    {

      $model = $this->getModel('hello');
   
      $model->one();
     
      $this->setRedirect('index.php?option=com_mycomponent&view=myview');
    }
*

artmasterpro

  • Осваиваюсь на форуме
  • 44
  • 9 / 0
Re: Пишу первый в жизни MVC компонент
« Ответ #8 : 18.03.2011, 17:29:01 »
Код

function one()
    {

      $model = $this->getModel('hello');.. ..это вызов модели?
   
      $model->one(); // ..это говорим какая функция нам нужна ?
     
      $this->setRedirect('index.php?option=com_mycomponent&view=myview'); // это адресация на вывод?
    }

тогда получатеся код модели будет такой :

Код
function one()
    { $text='Один'
}


и еще вопрос, почему мы пропускаем View ?
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
Re: Пишу первый в жизни MVC компонент
« Ответ #9 : 18.03.2011, 18:21:53 »
надо как бы пропускать контроллер, если нужен просто вывод
*

artmasterpro

  • Осваиваюсь на форуме
  • 44
  • 9 / 0
Re: Пишу первый в жизни MVC компонент
« Ответ #10 : 22.03.2011, 16:53:03 »
ВОт код моей модели:

почему в модели на работает условие выбора, наверное потому что не получена переменная search. Почему переменная не создаеться    $search = JRequest::getVar('search'); ?

Почему она чудено создаеться когда return $search;

и не могу передать $_data для обработки запроса в view.html.php тоже пустая

Код
defined('_JEXEC') or die('Restricted access');

jimport('joomla.application.component.model');

class HelloModelHello extends JModel {

     var $_data;
   
     function getData() {
 
    $search = JRequest::getVar('search');
       
     $db =& JFactory::getDBO();
 
       if (($search == '111 ') )
         
     {
    $query ="SELECT * FROM #__comprofiler;";
       } else {
       $query ="SELECT * FROM #__jcomments;";
        }

        $db->setQuery($query);
             
 
  $_data=$db->loadObjectList();
          return  $_data;
 
    }
}   
*

artmasterpro

  • Осваиваюсь на форуме
  • 44
  • 9 / 0
Re: Пишу первый в жизни MVC компонент
« Ответ #11 : 23.03.2011, 10:32:36 »
Люди я замахался, дайте пример компонента, с выводом таблицы из БД.
Суть такая в компоненте форма, в зависимости от выбора поля select меняется запрос к БД.

Низкий поклон всем кто уделит время !
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
*

artmasterpro

  • Осваиваюсь на форуме
  • 44
  • 9 / 0
Re: Пишу первый в жизни MVC компонент
« Ответ #13 : 24.03.2011, 09:20:37 »
могу дать пример для Joomla 1.6

выложите тут я думаю всем пригодиться
*

artmasterpro

  • Осваиваюсь на форуме
  • 44
  • 9 / 0
Re: Пишу первый в жизни MVC компонент
« Ответ #14 : 24.03.2011, 09:26:39 »
Вакладываю код файлов компонента для 1.5

controller

Код
class HelloController extends JController
{
    /**
     * Method to display the view
     *
     * @access    public
     */
    function display()
    {

    parent::display();
    }

Model

Код
<?php
defined('_JEXEC') or die('Restricted access');

jimport('joomla.application.component.model');

class HelloModelHello extends JModel {

var $_data;

function getData() {


$search = JRequest::getVar('search');
 $db =& JFactory::getDBO();
           $query = "SELECT name FROM #__users WHERE id>'".$search."';";
         $db->setQuery($query);
         $this->_data = $db->loadObjectList();

         return $this->_data;
    }
}

view.html.php

Код
defined('_JEXEC') or die('Restricted access');

jimport('joomla.application.component.view');

class HelloViewHello extends JView {
   
    function display($tpl = null) {

     $items =& $this->get('Data');
 
        $this->assignRef('items', $items);
 

 



        parent::display($tpl);
    }
}

default.php

Цитировать
<?php // no direct access
defined('_JEXEC') or die('Restricted access'); ?>


<form id="Form" name="Form" method="post" action="<?php echo "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; ?>">
<input name="search" type="text" />
 
<input name="" type="submit" />
 
<input type="hidden" name="view" value="hello" />
<input type="hidden" name="option" value="com_hello" />
 
</form>

<?php   

print_r ($this->items);

 

?>
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Надо переделать готовый компонент Генератор Купонов J2.5 на J1.5

Автор mkoff

Ответов: 3
Просмотров: 2144
Последний ответ 18.12.2014, 10:22:04
от assa1988
Компонент вывода информации из внешней базы данных

Автор rambeer

Ответов: 33
Просмотров: 11275
Последний ответ 12.09.2014, 05:01:34
от Mad_Doc
Модифицировать компонент

Автор karabert

Ответов: 0
Просмотров: 1450
Последний ответ 28.11.2011, 22:39:04
от karabert
Новый компонент. Реализация поиска/фильтрации таблицы в админке.

Автор passat

Ответов: 6
Просмотров: 3748
Последний ответ 26.03.2011, 12:21:45
от yunoshev
Шаблонизация компонентов в Joomla1.5. Первый взгляд.

Автор userxp

Ответов: 29
Просмотров: 24596
Последний ответ 30.01.2011, 23:56:42
от shprota