Новости Joomla

Вышли релизы Joomla 6.0.3 и Joomla 5.4.3

Релиз Joomla 6.0.3 и Joomla 5.4.3

Проект Joomla рад сообщить о выпуске Joomla 6.0.3 и Joomla 5.4.3. Это релиз исправлений ошибок и улучшений для серии Joomla 6.0 и Joomla 5.4.

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

В процессе работы с Joomla бывает необходимо работать с пользовательским интерфейсом более тонко, чем обычно. Все формы Joomla состоят из стандартных полей, содержанием, стилем отображения, состоянием (включено/выключено, доступно для редактирования или нет и т.д.) можно управлять с помощью плагинов. Да и для нестандартных проектов хорошей практикой является создание одного системного или нескольких плагинов групп "под проект", в которых храниться весь "нестандарт".

В этой статье описаны все триггеры, которые вызываются через Event Dispatcher из administrator/components/com_fields/src/Helper/FieldsHelper.php, с привязкой к жизненному циклу (порядку этапов работы запроса), аргументам, изменяемым данным и дальнейшему распространению по Joomla. Это поможет вам работать с Joomla свободнее и не опасаясь при этом потерять изменения при очередном обновлении движка.

Подходы, описанные в статье, полезны в тех случаях, когда вы работаете с данными в com_fields - механизме создания и редактирования пользовательских полей ядра Joomla и при использовании FieldsHelper. Многие сторонние компоненты не используют эту возможность, поэтому данная статья будет полезна лишь частично.

🏆 Открыто голосование за Joomla в премии CMS Critic People’s Choice Awards 2025

🏆 Открыто голосование за Joomla в  премии CMS Critic People’s Choice Awards 2025

🗓 Голосование продлится до 27 февраля 2026 года.

👩‍💻 Проголосовать! 👩‍💻

Номинации, в которых можно проголосовать за Joomla:
⭐️ Best Free CMS
⭐️ Best Open Source CMS
⭐️ Best Enterprise CMS

Также в номинации Best e-Commerce Solution участвуют компоненты интернет-магазинов для Joomla:
⭐️ HikaShop
⭐️ Virtuemart

В номинации Best Website Builder оказались:
⭐️ YooTheme
⭐️ SP Page Builder

Что такое CMS Critic Awards?
С 2012 года премия CMS Critic Awards занимает особое место в сообществе систем управления контентом (CMS). Это единственный в своем роде сайт, который составляет рейтинг системы управления контентом и связанных с ними решений на рынке — от малого до крупного и подчеркивает их инновации и услуги.

Каждый год награда CMS Critic Awards присуждается одному победителю в различных отраслевых категориях, таких как: «Лучшая облачная CMS», «Лучший DXP», «Лучшая Headless CMS и других. Затем результаты оглашаются через СМИ вместе с выбором редакции CMS Critic.
В этом году премия вернулась к своим традициям и только TOP-5 движков по количеству номинаций попали в 2-й этап - голосование.

@joomlafeed

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

serwiz

  • Новичок
  • 5
  • 0 / 0
Вывод всех товаров
« : 11.02.2010, 11:54:38 »
Доброго времени суток!
Встал вопрос создания постраничного вывода всех товаров категории, включая все товары из подкатегорий.
Сейчас на странице категории отображается список подкатегории с количеством товаров в них, а надо сделать чтоб отображались все товары из всех подкатегорий данной категории.
Возможно ли это реализовать?
*

serwiz

  • Новичок
  • 5
  • 0 / 0
Re: Вывод всех товаров
« Ответ #1 : 11.02.2010, 17:40:33 »
Выход из ситуации нашел такой: С помощью модуля "последние товары" вывел все товары и для навигации вручника написал разбиение по страницам. Вывел модуль на отдельной странице.
Не совсем то что хотел, но все работает нормально.
*

shprota

  • Moderator
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Re: Вывод всех товаров
« Ответ #2 : 12.02.2010, 02:09:01 »
вроде в конфигурации меню была галочка. или просто в адрес добавить recursive=1
*

Ascold

  • Новичок
  • 4
  • 0 / 0
Re: Вывод всех товаров
« Ответ #3 : 17.03.2010, 14:57:09 »
Увы, галочки в настройках я не нашел. И решил, что вывод категории в том или ином виде дело довольно "интимное", т.е. может понадобится вывод категорий в рамках одного и того же каталога и в виде только списка категорий и в виде списка всех товаров подкатегорий (сам с таким столкнулся). Править шаблон под то что часть ссылок должна иметь параметр recursive, часть нет а кроме того есть же еще модули и плагины. Править еще и модули с плагинами это совсем неправильно. В общем я решил прикрутить такую настройку к каждой категории:
Для этого я к объекту модели категорий добавил поле recursive.
1) Добавил поле recursive TINIINT(1) в БД в таблицу _scatalog_category

2) файл /components/com_scatalog/models/category.php (строка 78), видно что при чтении данных из БД сценарий выбирает все поля таблицы _scatalog_category
Код
SELECT c.* ... FROM #__scatalog_category AS c ...
И нет необходимости заботится о том чтобы читать поле из БД оно и так прочтется, а функция _getList сформирует нужную структуру данных сама (строка 129 того же файла).

3) файл /components/com_scatalog/views/category/view.html.php (строка 81 и 88) на строке 81 находится вызов запроса на построение списка товаров категории
перед ним нужно добавить строку, в которой подредактировать одно из полей запроса
Код
  ...
  $options['recursive'] = ($category->recursive == 1 ? 1 : JRequest::getInt('recursive'));
  $products = $model->getProducts( $options );
  ...
Кроме того следует изменить параметр, характеризующий родительскую категорию товара, для которого мы ищем информацию, передаваемый в модули для получения специфической информации о каждом из товаров из модулей.  (строка 88 того же файла):
Код
  ...
  $result = $dispatcher->trigger('onScatalogProductsList', array(&$this, $products[$i] -> catid/*$categoryId*/, &$products[$i]));
  ...
Для этого меняем Id текущей отображаемой категории $categoryId на  $products[$i] -> catid

Теперь нужно внести изменения в административную часть.
4)  Файл /administrator/components/com_scatalog/views/categories/tpl/form.php (строка 76):
   Это форма редактирования параметров категории. необходимо добавить радиокнопки для выбора статуса отображения, для этого добавляем следующий HTML   код:
Код
  ...
  <table class="adminform">
    <tr>
      <td class="key">
<label for="title" width="100">
  <?php echo JText::_( 'Title' ); ?>:
</label>
      </td>
      <td>
<input class="text_area" type="text" name="title" id="title" value="<?php echo @$this->data->title; ?>" size="50" maxlength="255" title="<?php echo JText::_( 'A long name to be displayed in headings' ); ?>" />
      </td>
      <td width="120" class="key">
<?php echo JText::_( 'Published' ); ?>:
      </td>
      <td>
<?php echo $this->lists['published']; ?>
      </td>
     </tr>
     <tr>
<td></td><td></td>
<td width="120" class="key">
  <?php echo JText::_( 'Recursive' ); ?>:
</td>
<td>
  <?php echo $this->lists['recursive']; ?>
</td>
      </tr>
  ...
Только нужно не забыть добавить перевод "Recursive" в ресурсный файл, для русского языка.

5) В форме редактирования праметров категории я использовал предварительно подготовленный контрол с радиокнопками, по аналогии со свойством "Published": $this->lists['recursive']. Теперь его необходимо создать: $lists['recursive'] = JHTML::_('select.booleanlist',  'recursive', 'class="inputbox"', $isNew? true : $category->recursive );.
Файл /administrator/components/com_scatalog/views/categories/view.html.php (строка 68):
Код
  ...
  // build the HTML select list
  $lists['published'] = JHTML::_('select.booleanlist',  'published', 'class="inputbox"', $isNew? true : $category->published );
  $lists['recursive'] = JHTML::_('select.booleanlist',  'recursive', 'class="inputbox"', $isNew? true : $category->recursive );

  $editor =& JFactory::getEditor();
  ...

6) Надо добавить функцию сохранения введенного пользователем значения этого поля. Добавляем функцию updateRecursive, по аналогии с updatePublished
Файл /administrator/components/com_scatalog/models/category.php (строка 379):
Код
  ...
function updateRecursive($id, $recursive)
{
$query = "UPDATE #__scatalog_category SET recursive = $recursive WHERE id = $id";
$this->_db->setQuery($query);
if(!$this->_db->query()) {
$this->setError($this->_db->getErrorMsg());
return false;
}
return true;

  ...


7) Осталось создать обработчик посылки изменений параметра, добавив функцию updaterecursive, по аналогии с updatepublished.
Файл  /administrator/components/com_scatalog/controllers/categories.php (строка 183):
Код
 ...
  function updaterecursive()
{
global $mainframe;
$nodes = json_decode(JRequest::getVar('nodes'));
$model = $this->getModel( 'categories' );
foreach($nodes as $node)
{
if(!$model->updateRecursive($node->id, $node->recursive?1:0))
{
echo '{"error":"model error: '.addslashes($model->getError()).'"}';
$mainframe->close();
}
}
echo '{"success":"true"}';
$mainframe->close();
}
 ...

8 ) Последнее это подредактировать описание данных категории, нужно добавить туда переменную recursive.
Файл /administrator/components/com_scatalog/tables/categories.php (строка 70):
Код
 ...
/**
* @var string
*/
var $image = null;


/**
* @var int
*/
var $recursive = null;

/**
* @var int
*/
var $published = null;
 ...

Теперь каждая категория сама знает как ей отображаться.
Я пользуюсь платной версией каталога 1.1RC2.
« Последнее редактирование: 17.03.2010, 15:21:41 от Ascold »
*

shprota

  • Moderator
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Re: Вывод всех товаров
« Ответ #4 : 12.04.2010, 00:34:09 »
Ascold, не возражаете, если я ваши изменения внедрю в следующий релиз каталога?
*

Ascold

  • Новичок
  • 4
  • 0 / 0
Re: Вывод всех товаров
« Ответ #5 : 21.04.2010, 20:27:26 »
Конечно, не возражаю. Приятно, что я смог помочь в развитии каталога хоть немножко. Проект в котором я учавствовал, и который был реализован благодаря вашему каталогу, закончен (с моей стороны как разработчика). Можно немножко порекламировать :) http://www.nova-net.ru/
*

shprota

  • Moderator
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Re: Вывод всех товаров
« Ответ #6 : 21.04.2010, 22:49:48 »
Очень недурно. Надеюсь, не очень сильно пришлось допиливать компонент?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Убрать вывод подкатегорий

Автор resens

Ответов: 9
Просмотров: 8261
Последний ответ 02.03.2014, 10:22:46
от andy_car
Вывод картинки в категории и карточки товара

Автор resens

Ответов: 0
Просмотров: 5619
Последний ответ 05.12.2012, 15:41:08
от resens
Реализовать вывод ярлычков "Новинка", "Хит", "Акция" и т.д

Автор Lont

Ответов: 0
Просмотров: 5902
Последний ответ 13.08.2012, 13:40:44
от Lont
Проблема с загрузкой изображений для товаров

Автор Seeker

Ответов: 4
Просмотров: 3517
Последний ответ 17.02.2012, 08:44:34
от Seeker
Дублирование категорий и вывод их в меню

Автор zvivla

Ответов: 4
Просмотров: 2615
Последний ответ 26.11.2011, 18:53:12
от zvivla