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

Den JW

  • Осваиваюсь на форуме
  • 26
  • 2 / 0
Добрый день!
Столкнулся с такой проблемкой...
Появилась необходимость создания большого количества пунктов меню, и, само собой, решил ее реализовать ч/з SQL запросы.
Но при добавлении пунктов послетали все привязки и сортировка. Проблемой явились поля lft rgt.  С самим явлением lft rgt разобрался, но появилось еще больше вопросов, т.к. добавляя один пункт, я должен менять сразу несколько других...
Если кто-то с подобным сталкивался, помогите разобраться. 
*

voland

  • Легенда
  • 10974
  • 583 / 111
  • Эта строка съедает место на вашем мониторе
*

pavelrer

  • Давно я тут
  • 603
  • 10 / 2
Re: Создание пункта меню через БД
« Ответ #2 : 18.03.2020, 20:43:01 »
Цитировать
С самим явлением lft rgt разобрался
точно!?
lft rgt - что за зверь поля?
Роберту СПС, до сих пор не могу осмыслить(Оправдание - Нет времени! :) )
! А ежли к вашему решению с lft rgt сверх компонент не дурной дабавим?
Прошу поделиться опытом с lft rgt! (+1 в lft и +1 в rgt от lft : - не решение!)
*

sivers

  • Завсегдатай
  • 1548
  • 214 / 0
Re: Создание пункта меню через БД
« Ответ #3 : 18.03.2020, 21:51:26 »
Прошу поделиться опытом с lft rgt! (+1 в lft и +1 в rgt от lft : - не решение!)
Это порядок сортировки в древовидных структурах. Разность между rgt и lft (между правым и левым) показывает сколько элементов внутри (т.е. сколько дочерних). Рассчитать их можно, если построить все дерево, а потом пробежаться по нему рекурсивно. А смысл их в том, что когда уже рассчитаны, то можно выстраивать отсортированные элементы без необходимости строить все дерево предварительно.
На связи в телеге @sivers
*

pavelrer

  • Давно я тут
  • 603
  • 10 / 2
Re: Создание пункта меню через БД
« Ответ #4 : 18.03.2020, 22:07:53 »
Цитировать
sivers
В чем фича перед оптимизированным! запросом в базУ!
По простому если можно :)
*

sivers

  • Завсегдатай
  • 1548
  • 214 / 0
Re: Создание пункта меню через БД
« Ответ #5 : 18.03.2020, 22:28:30 »
По простому если можно
Например, есть у вас большое древовидное меню (а то и несколько). Вы из параметров страницы получаете ИД текущего пункта меню. Допустим это 184. И вам надо вытащить из базы все дочерние подпункты (и их подпункты - у нас же дерево) этого вот пункта меню. Как это сделать?
Вы читаете сначала запись этого пункта из БД. Там есть parent_id. В принципе, этого отношения к родителю достаточно, чтоб построить все дерево меню и потом из него "выкусить" ваш пункт с его дочками. Но это же нерационально как-то. А в lft-rgt подходе достаточно выполнить запрос вида
Код
WHERE `lft` > $itemLft AND `rgt` < $itemRgt
где $ItemLft и $itemRgt - это lft и rgt вашего 184-го пункта меню соответственно.
На связи в телеге @sivers
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как обернуть первое слово ссылки у меню в тег <span>?

Автор timofe

Ответов: 9
Просмотров: 176
Последний ответ 17.01.2021, 12:06:44
от timofe
Как настроить класс current у пунктов меню и подменю?

Автор VanyaTihonov

Ответов: 2
Просмотров: 83
Последний ответ 12.01.2021, 21:01:19
от VanyaTihonov
Joomla 3.9.23 не работают ссылки в меню на материалы

Автор Anna78

Ответов: 2
Просмотров: 145
Последний ответ 08.01.2021, 11:18:50
от Anna78
Пакетная загрузка 1000 фото и создание 1000 материалов

Автор slepoy

Ответов: 2
Просмотров: 117
Последний ответ 04.01.2021, 00:51:55
от pavelrer
Вопрос по меню и Seo

Автор virtual-3

Ответов: 11
Просмотров: 204
Последний ответ 28.12.2020, 04:58:58
от rsn