Новости 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 Гость просматривают эту тему.
  • 5 Ответов
  • 1112 Просмотров
*

smls

  • Захожу иногда
  • 137
  • 8 / 1
Сам скрипт
Код
function rating_bar($id,$units='',$static='') { 

require('_config-rating.php'); // get the db connection info

//set some variables
$ip = $_SERVER['REMOTE_ADDR'];
if (!$units) {$units = 10;}
if (!$static) {$static = FALSE;}

// get votes, values, ips for the current rating bar
$query=mysql_query("SELECT total_votes, total_value, used_ips FROM $rating_dbname.$rating_tableName WHERE id='$id' ")or die(" Error: ".mysql_error());

// insert the id in the DB if it doesn't exist already
if (mysql_num_rows($query) == 0) {
$sql = "INSERT INTO $rating_dbname.$rating_tableName (`id`,`total_votes`, `total_value`, `used_ips`) VALUES ('$id', '0', '0', '')";
$result = mysql_query($sql);
}

$numbers=mysql_fetch_assoc($query);

if ($numbers['total_votes'] < 1) {
$count = 0;
} else {
$count=$numbers['total_votes']; //how many votes total
}
$current_rating=$numbers['total_value']; //total number of rating added together and stored
$tense=($count==1)? "vote" : "votes"; //plural form votes/vote

// determine whether the user has voted, so we know how to draw the ul/li
$voted=mysql_num_rows(mysql_query("SELECT used_ips FROM $rating_dbname.$rating_tableName WHERE used_ips LIKE '%".$ip."%' AND id='".$id."' "));

// now draw the rating bar
$rating_width = @number_format($current_rating/$count,2)*$rating_unitwidth;
$rating1 = @number_format($current_rating/$count,1);
$rating2 = @number_format($current_rating/$count,2);

if ($static == 'static') {

$static_rater = array();
$static_rater[] .= "\n".'<div class="ratingblock">';
$static_rater[] .= '<div id="unit_long'.$id.'">';
$static_rater[] .= '<ul id="unit_ul'.$id.'" class="unit-rating" style="width:'.$rating_unitwidth*$units.'px;">';
$static_rater[] .= '<li class="current-rating" style="width:'.$rating_width.'px;">Currently '.$rating2.'/'.$units.'</li>';
$static_rater[] .= '</ul>';
$static_rater[] .= '<p class="static">'.$id.'. Rating: <strong> '.$rating1.'</strong>/'.$units.' ('.$count.' '.$tense.' cast) <em>This is \'static\'.</em></p>';
$static_rater[] .= '</div>';
$static_rater[] .= '</div>'."\n\n";

return join("\n", $static_rater);

} else {

      $rater ='';
      $rater.='<div class="ratingblock">';

      $rater.='<div id="unit_long'.$id.'">';
      $rater.='  <ul id="unit_ul'.$id.'" class="unit-rating" style="width:'.$rating_unitwidth*$units.'px;">';
      $rater.='     <li class="current-rating" style="width:'.$rating_width.'px;">Currently '.$rating2.'/'.$units.'</li>';

      for ($ncount = 1; $ncount <= $units; $ncount++) { // loop from 1 to the number of units
           if(!$voted) { // if the user hasn't yet voted, draw the voting stars
              $rater.='<li><a href="db.php?j='.$ncount.'&amp;q='.$id.'&amp;t='.$ip.'&amp;c='.$units.'" title="'.$ncount.' out of '.$units.'" class="r'.$ncount.'-unit rater" rel="nofollow">'.$ncount.'</a></li>';
           }
      }
      $ncount=0; // resets the count

      $rater.='  </ul>';
      $rater.='  <p';
      if($voted){ $rater.=' class="voted"'; }
      $rater.='>'.$id.' Rating: <strong> '.$rating1.'</strong>/'.$units.' ('.$count.' '.$tense.' cast)';
      $rater.='  </p>';
      $rater.='</div>';
      $rater.='</div>';
      return $rater;
 }
}
Подключаю его в шаблоне компонента (joomla 2.5):
Код
<?php require('/rating/_drawrating.php'); ?>
<?php echo rating_bar('2id',5); ?>
Сам файл подключается, но то что внутри "function rating_bar" недоступно. Если вставить этот-же код в простой php файл, там всё работает, а в компоненте (в любом) не работает. Проблема я так понимаю в
Код
<?php echo rating_bar('2id',5); ?>
Как-то по другому для Joomla писать нужно. Как?
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Проблема в require('_config-rating.php');
В подключаемой функции подключается еще один файл, и вот тут пути расходятся (пишите правильный путь из функции rating_bar до файла _config-rating.php)

P.S. использовать в движке стандартные mysql_query не стоит, перепишите функцию согласно стандартным API движка, там решены все базовые вопросы безопасности)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

smls

  • Захожу иногда
  • 137
  • 8 / 1
_drawrating.php и _config-rating.php в одной папке лежат, но я пробовал и путь менять и вместо require('_config-rating.php'); содержимое этого скрипта вставлять. Не работает и ошибки не пишет.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Ошибок мы не видим, вы их не указали, путь подключения скрипта\файла нужно указывать от корня сервера.
Ошибки в админке нужно включить максимальные (общие настройки)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

smls

  • Захожу иногда
  • 137
  • 8 / 1
в _config-rating.php указаны данные для подключения к БД, если закомментировать require('_config-rating.php'); тогда ошибка появляется "Error: Access denied for user ''@'localhost' (using password: NO)" видимо подключается к _config-rating.php когда не закомментировано.
Цитировать
использовать в движке стандартные mysql_query не стоит, перепишите функцию согласно стандартным API движка, там решены все базовые вопросы безопасности)
Не стоит только из соображений безопасности или может вообще не работать?
Цитировать
Ошибки в админке нужно включить максимальные (общие настройки)
Они включены, но Консоль отладки Joomla! не видна, всё обрывается после echo rating_bar('2id',5);
*

smls

  • Захожу иногда
  • 137
  • 8 / 1
Проблема была в _config-rating.php
Код
$joomla_config = 'configuration.php';
require($joomla_config);
$jconfig = new JConfig();
Убрал первые  2 строчки и заработало в компоненте ...правда перестало работать в просто PHP скрипте.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Функция из модели в публичной части компонента в админке

Автор denism300

Ответов: 2
Просмотров: 995
Последний ответ 23.11.2016, 14:01:39
от denism300
Одна функция для изменения состояний нескольких параметров элемента

Автор denism300

Ответов: 7
Просмотров: 1360
Последний ответ 22.10.2016, 16:49:46
от denism300
Функция округления вниз или отсечения дробных в less или чистом js

Автор AlekVolsk

Ответов: 7
Просмотров: 1322
Последний ответ 21.02.2016, 12:00:29
от AlekVolsk
Функция mail() не работает

Автор Old_skorpin

Ответов: 6
Просмотров: 1843
Последний ответ 08.08.2013, 21:13:33
от Aleks.Denezh