Новости Joomla

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

👩‍💻 Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1. Это релиз, в который включены уже проверенные изменения, но ещё очень многие исправления и улучшения ждут своей очереди. Joomla следит за качеством и безопасностью своего кода и каждое изменение должно быть успешно протестировано как минимум ещё двумя участниками сообщества. Разработка Joomla ведётся на платформе GitHub.Филипп Уолтон (Philip Walton) - один из разработчиков, кто активно вносит свой вклад в ядро Joomla. Он уже несколько месяцев посвящает свои послеполуденные часы пятницы работе с Joomla и предлагает присоединиться к нему. 📆 Пятница, 30 мая 2025, с 15:00 до 17:00 по UTC (Лондон) - с 18:00 до 20:00 по Москве.В чате Google Meet Филипп готов помочь с тестированием тем, кто будет делать это в первый раз. А так же он подготовил список лёгких Pull Request, которые можно протестировать довольно быстро. Чем больше тестов будет проведено сейчас, тем меньше ошибок вылезет потом. На данный момент 148 (уже 147 на момент написания заметки) PR на GitHub Joomla ждут тестирования.👩‍💻 Open to all. All together.Также вам поможет сделать первые шаги это видео.GitHub JoomlaДа, это вечер пятницы. Но тестирование занимает порой минут 15, а доброе дело сделано. Просто убедитесь, что разработчик чего-то не пропустил и всё работает как ожидается.#joomla #joomla6 #community

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

spirit1086

  • Захожу иногда
  • 115
  • 1 / 0
Дерево
« : 19.08.2015, 20:49:31 »
Здравствуйте, пишу свой компонент в нем хочу организовать вывод меню в древовидной структуре как в категориях, не пойму как записать в таблицу уровни, чтобы они были по порядку после манипуляций с меню.  Хотел посмотреть как Joomla делает это не нашел функцию сохранения записей категории. Подскажите с реализацией или статью какую 
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Re: Дерево
« Ответ #1 : 19.08.2015, 20:57:40 »
Запрос Google: "Nested Sets" , ну и "Adjacency List", тоже можно.
*

spirit1086

  • Захожу иногда
  • 115
  • 1 / 0
Re: Дерево
« Ответ #2 : 19.08.2015, 21:34:19 »
Почитал про Nested sets

Пытаюсь добавить в sql скрипт установки компонента процедуру выдает ошибка
Код
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax и дальше ниже описанная процедура
, не подскажите в чем проблема никогда процедуру не добавлял в sql установщик Joomla
Код
create table `#__mycategory` (
      `id` int auto_increment primary key,
      `name` varchar(255),
      `left_key` int,
      `right_key` int,
      `level` int
)

CREATE PROCEDURE category_add(IN _parent int, IN _name varchar(150))
BEGIN
      declare `@right_key` int;
      declare `@level` int;
      SELECT IFNULL(right_key,1),IFNULL(level,0) INTO `@right_key`,`@level` FROM #__mycategory WHERE id = _parent;
      SET `@right_key` = IFNULL(`@right_key`,1);
      SET `@level` = IFNULL(`@level`,0);
      UPDATE #__mycategory SET right_key = right_key + 2,  left_key = IF(left_key > `@right_key`, left_key + 2, left_key) WHERE right_key >= `@right_key`;
      INSERT INTO #__mycategory (left_key,right_key,level,name) VALUES (`@right_key`, `@right_key` + 1, `@level` + 1,_name);
END
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Дерево
« Ответ #3 : 19.08.2015, 21:56:54 »
Установщиком хранимые процедуры не поддерживаются. Пишите установочный скрипт и там добавляйте. В Joomla nested sets реализован программно через класс JTableNested. Для меню проще сделать materialized path, он тоже реализован там програмно. Зачем вам вообще процедуры и чето выдумывать вообще? Наследуйтесь от JTableNested, добавьте нужные поля в таблицу и вперед!
интернет-блог: http://websiteprog.ru
*

spirit1086

  • Захожу иногда
  • 115
  • 1 / 0
Re: Дерево
« Ответ #4 : 19.08.2015, 22:14:03 »
подскажите хороший мануал по  JTableNested, не могу найти, а лучше если у вас есть пример, заранее спасибо очень надо
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Дерево
« Ответ #5 : 19.08.2015, 22:27:30 »
Мануала нету, можно изучить сам класс в исходниках если интересно как работают его методы,  но в этом нет никакого смысла так как он наследуется от JTable в свою очередь и все методы JTable доступны там. О том как работать с JTable можете почитать  в доках:

https://docs.joomla.org/Using_the_JTable_class#Using_a_JTable_class_extensionх

Или нагуглить в интернете.  Вам вобщем-то потребуется только создать поля необходимые в таблице (patrent_id, rgt, lft, level, path). А дальше наследуйтесь от JTableNested и работаете как с JTable.  Отмечу только полезные методы  getTree() и rebuildPath(),  которые наверное придется изучить.
« Последнее редактирование: 19.08.2015, 22:41:31 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

zaboich

  • Осваиваюсь на форуме
  • 37
  • 11 / 0
Re: Дерево
« Ответ #6 : 25.08.2015, 02:44:58 »
Компонент com_categories позволяет другим расширениям хранить информацию о древовидных структурах в своих таблицах и управлять данными через свой функционал. Примеры использования можно посмотреть, например, в коде компонента com_banners.

Если количество категорий не большое, то использование com_categories - самый простой и удобный способ управления древовидными структурами.

Но com_categories использует для хранения древовидных структур комбинацию из трех методик: Список смежных вершин (Adjacency List) + Вложенные множества (Nested Set) + Материализованные пути (Materialized Path).
Каждая из этих методик дает свои преимущества при выборке данных. Например, Materialized Path позволяет строить красивые пути URL типа /category_lev1_1/category_lev2_2/.

Но как раз из-за использования метода Materialized Path любые операции с деревом - вставка, перемещение, удаление, приводит к полной рекурсивной перестройке дерева.
При количестве категорий или других древовидных элементов несколько тысяч перестройка занимает недопустимо много времени (минуты).

Если отказаться от использования материализованных путей, то можно в своем компоненте класс таблицы расширить от JTableNested и переопределить некоторые методы класса с учетом требований методик "Смежных вершин" и "Вложенных множеств".

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

В итоге требуется переопределить единственный метод  saveorder() из класса JTableNested и метод saveorder() из класса JModelAdmin. Этого будет достаточно, чтобы получить действующую модель работы с древовидными структурами.
Один из лучших циклов статей по вложенным структурам в реляционных базах данных Сергея Томулевича http://doc.prototypes.ru/database/
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться