Новости Joomla

👩‍💻 SW JProjects v.2.6.1 - компонент каталога расширений для веб-приложений.

👩‍💻 SW JProjects v.2.6.1 - компонент каталога расширений для веб-приложений.

Компонент позволяет сделать свой мини-Joomla Extensions Directory - каталог расширений для CMS (не только для Joomla) или файлов. Есть возможность скачивания по лицензионным ключам создания кастомных схем данных для сервера обновлений.

👩‍💻 v.2.6.1. Что нового?
- Правки наследования схем серверов обновлений. Улучшена логика наследования схем серверов обновлений для проектов компонент - категория - проект.
- Не стабильные релизы в сервере обновлений. Теперь в данные сервера обновлений попадают все версии (alpha, beta и т.д.), а не только stable.
- Косметические изменения. В шаблоне по умолчанию сделаны замены некоторых CSS-классов, уточнено присвоение атрибутов loading=lazy и fetchpriority.
- Рефакторинг и правки кода. Текущее обновление кодовой базы.
- Исправление ошибок.

👩‍💻 Больше спасибо за помощь в тестировании участникам нашего сообщества Александру Новикову (@pro_portal) и Александру Судьбинову (@alexrevo).

- Страница расширения
- GitHub расширения
- Joomla Extensions Directory

@joomlafeed

Событие Pizza, Bugs & Fun - 29-30 января 2026 года.

Событие Pizza, Bugs & Fun  - 29-30  января 2026 года.

Уже несколько лет в мире Joomla проводятся мероприятия "Pizza, Bugs & Fun" (#PBF), где каждый может посвятить несколько часов своего мозгового времени тому, чтобы наша любимая CMS стала ближе к идеалу.

Ссылки на видео и статьи из этого поста рассказывает об организационных вопросах, которые пригодятся для участия в PBF, а так же что и как делать.

В рамках события PBF все желающие могут собираться в общий онлайн чат, обсудить вопросы Joomla и приложить к их разрешению свою руку. Самый классный вариант, когда эта встреча происходит оффлайн: тогда организовывается пицца, напитки по вкусу и несколько часов совместного творчества.

Каждый помогает тем, что он умеет:

  • кто-то пишет недостающую документацию,
  • кто-то пишет код,
  • кто-то тестирует как исправлены ошибки или сделан новый функционал.

На сайте события есть карта, можно "захостить" свою локацию. Практически все движки в мире развиваются за счёт спонсирующих их компаний. Joomla одна из немногих, где развитие идёт только усилиями международного сообщества энтузиастов.

https://www.youtube.com/watch?v=a-FuVKXg_Uw 

На момент написания данного поста в репозитории Joomla 810 открытых Issue (как правило это баги) и 236 Pull request (PR, исправление багов и новый функционал). Все PR обязательно тестируются минимум двумя участниками сообщества, дабы в конечный код движка не проскочила ошибка.

Если каждый из участников только нашего сообщества сделает даже одно тестирование, то, боюсь, PR и Issue на всех не хватит 😀 И ничего не останется нашим коллегам из международных Joomla-чатов.

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

som555

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
В общем то фильтр какой хотел у меня получился:
Заменил функцию
Код
	public function getDBAccessString($user = null) {

if (is_null($user)) {
$user = $this->get();
}

if ($this->app->joomla->isVersion('1.5')) {
return "access <= ".(int) $user->get('aid', 0);
} else {
$groups = implode(',', $user->getAuthorisedViewLevels());
return "access IN ($groups)";
}
}
на
Код
	public function getDBAccessString($user = null) {
$search = "name LIKE '%".JRequest::getVar('search', '', 'default', 'string')."%' AND ";

if (is_null($user)) {
$user = $this->get();
}

if ($this->app->joomla->isVersion('1.5')) {
$search .= "access <= ".(int) $user->get('aid', 0);
} else {
$groups = implode(',', $user->getAuthorisedViewLevels());
$search .= "access IN ($groups)";
}
return $search;
}
в шаблон категории добавил форму
Код
		<form id="name-filter" action="<?php echo htmlspecialchars(JFactory::getURI()->toString()); ?>" method="post" name="searchForm" accept-charset="utf-8">
<input type="text" name="search" id="zoo-search" value="<?php echo JRequest::getVar('search', '', 'default', 'string');?>" />
<button onclick="this.form.submit();"><?php echo JText::_('Search'); ?></button>
<button onclick="document.getElementById('zoo-search').value='';this.form.submit();"><?php echo JText::_('Reset'); ?></button>
</form>
Но при переходе на другую страницу этого отфильтрованного списка параметр JRequest::getVar('search', '', 'default', 'string') пропадает.
Как параметр JRequest::getVar('search', '', 'default', 'string') передать на другую страницу?
*

som555

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Re: Хочу сделать фильтр в категории
« Ответ #1 : 30.03.2012, 14:55:43 »
Все не так как описал выше.
Задачу решил, пришлось в 3 местах править.
*

gayb

  • Новичок
  • 2
  • 0 / 0
Re: Хочу сделать фильтр в категории
« Ответ #2 : 15.04.2012, 10:04:47 »
Доброо времени суток! А поделитесь правильным кодом - а то очень надо  ^-^
*

-Dima-

  • Захожу иногда
  • 85
  • 14 / 0
Re: Хочу сделать фильтр в категории
« Ответ #3 : 18.04.2012, 22:01:51 »
Вы такого не делайте никогда!! :o
С таким кодом SQL-инъекция Вам обеспечена!
Не хитрыми манипуляциями можно получить пароли всех юзеров.
*

som555

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Re: Хочу сделать фильтр в категории
« Ответ #4 : 20.04.2012, 15:14:43 »
gayb
1. com_zoo\controllers\default.php
заменил
$item_count        = $this->category->id == 0 ? $this->app->table->item->getItemCountFromCategory($this->application->id, $category_id, true) : $this->category->itemCount();
на
$item_count        = $this->app->table->item->getItemCountFromCategory($this->application->id, $category_id, true);
Чтоб каждый раз пересчитывал количество строк.

2. administrator\components\com_zoo\tables\default.php
заменить 2 функции
   public function getByCategory($application_id, $category_id, $published = false, $user = null, $orderby = "", $offset = 0, $limit = 0) {

      // get database
      $db = $this->database;

      // get dates
      $date = $this->app->date->create();
      $now  = $db->Quote($date->toMySQL());
      $null = $db->Quote($db->getNullDate());

      // get item ordering
      $orderby = $this->_getItemOrder($orderby);

      if (isset($_POST['search']))
         $_SESSION['search'] = JString::strtolower($_POST['search']);

      if (isset($_SESSION['searchby'])) {
         if ($_SESSION['searchby'] != $category_id) {
            unset($_SESSION['search']);
            unset($_SESSION['searchby']);
         }
      } else
         $_SESSION['searchby'] = $category_id;

      if (isset($_SESSION['search'])) {
         $search = " AND LOWER(a.name) LIKE ".$db->Quote('%'.$_SESSION['search'].'%');
      } else
         $search = "";

      $query = "SELECT a.*"
         ." FROM ".$this->name." AS a"
         ." LEFT JOIN ".ZOO_TABLE_CATEGORY_ITEM." AS b ON a.id = b.item_id"
         .(isset($orderby['join'])? $orderby['join']: "")
         ." WHERE a.application_id = ".(int) $application_id
         .$search
         ." AND b.category_id ".(is_array($category_id)? " IN (".implode(",", $category_id).")" : " = ".(int) $category_id)
         ." AND ".$this->app->user->getDBAccessString($user)
         .($published == true ? " AND a.state = 1"
         ." AND (a.publish_up = ".$null." OR a.publish_up <= ".$now.")"
         ." AND (a.publish_down = ".$null." OR a.publish_down >= ".$now.")": "")
         ." GROUP BY a.id"
         ." ORDER BY a.priority DESC".(isset($orderby['query'])? ", ".$orderby['query'] : "")
         .(($limit ? " LIMIT ".(int)$offset.",".(int)$limit : ""));

      return $this->_queryObjectList($query);
   }


   public function getItemCountFromCategory($application_id, $category_id, $published = false, $user = null){

      // get database
      $db = $this->database;

      // get dates
      $date = $this->app->date->create();
      $now  = $db->Quote($date->toMySQL());
      $null = $db->Quote($db->getNullDate());

      if (isset($_SESSION['search']))
      $search = " AND LOWER(a.name) LIKE ".$db->Quote('%'.$_SESSION['search'].'%');
      else
      $search = "";

      $query = "SELECT a.*"
         ." FROM ".$this->name." AS a"
         ." LEFT JOIN ".ZOO_TABLE_CATEGORY_ITEM." AS b ON a.id = b.item_id"
         ." WHERE a.application_id = ".(int) $application_id
         .$search
         ." AND b.category_id ".(is_array($category_id)? " IN (".implode(",", $category_id).")" : " = ".(int) $category_id)
         ." AND ".$this->app->user->getDBAccessString($user)
         .($published == true ? " AND a.state = 1"
         ." AND (a.publish_up = ".$null." OR a.publish_up <= ".$now.")"
         ." AND (a.publish_down = ".$null." OR a.publish_down >= ".$now.")": "")
         ." GROUP BY a.id";

      $db->query($query);

      return $db->getNumRows();

   }

3. и в шаблоне templates\default\category.php
добавил форму
      <form id="name-filter" action="<?php echo (substr(JFactory::getURI()->toString(), -1)%10 ? '1' : JFactory::getURI()->toString()); ?>" method="post" name="searchForm" accept-charset="utf-8">
         <input type="text" name="search" id="zoo-search" value="<?php if (isset($_SESSION['search'])) echo $_SESSION['search'];?>" />
         <button onclick="this.form.submit();"><?php echo JText::_('Search'); ?></button>
         <button onclick="document.getElementById('zoo-search').value='';this.form.submit();"><?php echo JText::_('Reset'); ?></button>
      </form>   


ЗЫ: В Joomle есть функции работы с сессиями, позволяющие сделать код более красивый, но тогда я об этом еще не знал. И переменная сессии "search" очень просто названа, может с кем нибудь пересечься.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Дополнительное поле с редактором для категории. Zoo

Автор rch.sergeevich

Ответов: 1
Просмотров: 3004
Последний ответ 22.05.2022, 08:12:16
от arma
Поиск по + фильтр

Автор V1RTUS

Ответов: 3
Просмотров: 3733
Последний ответ 09.08.2021, 00:22:51
от triode-master
Вывод материала категории

Автор face2005

Ответов: 0
Просмотров: 3789
Последний ответ 28.09.2018, 18:26:52
от face2005
[Решено] Как в модуле ZOO Item вывести название и описание категории?

Автор frolov.ar

Ответов: 13
Просмотров: 6682
Последний ответ 01.04.2017, 13:29:52
от rivermc
URL нескольких страниц категории

Автор saschka

Ответов: 2
Просмотров: 2382
Последний ответ 08.02.2017, 13:45:36
от saschka