Проверка дерева категорий instantcms 2

InstantCMS 2.X
#16 25 июня 2019 в 14:17

@iKrym, что значит перестали менять родителя? Можете объяснить на примере.

AndroS

Решил проблему изменением parent_id



При редактировании через стандартные функции редактирования категорий — он не менялся в parent_id
при правке руками — в базе данных
проблема решилась
#17 25 июня 2019 в 18:02
Вот еще одно
с удивлением для себя, обнаружил

Перехожу:
— админка
— контент
— Порядок
а категории-то
все смешанные в кучу
#18 25 июня 2019 в 18:16
может есть какая-нибудь функция
которая восстанавливает ns_left и ns_right ключи по parent_id
#19 25 июня 2019 в 20:10
@iKrym, гм, была у меня подобная ситуация… Не помню как выходил из нее. По-моему, просто в список контента в админке заходил и сохранял. Но это неточно (((
#20 25 июня 2019 в 20:22
AndroS, круто😊
главное — в категории — сверху, выводит правильно…

попробую все категории пересохранить, за одно, проверю тайтлы, описания…
#21 25 июня 2019 в 22:16
@iKrym, а во всех типах контента такая беда или только в одном?
#22 27 июня 2019 в 08:45
Олег Васильевич я, в одном
#23 27 июня 2019 в 20:43
Пересохранение категорий не помогло
#24 28 июня 2019 в 08:06
как это можно починить?
#25 28 июня 2019 в 09:33
@iKrym, попробуйте заменить в этой строк github.com/instantsoft/icms2/blob/master/system/controllers/admin/actions/content_cats_order.php#L14 это
  1. $categories = $content_model->getCategoriesTree($ctype['name'], false);
на это
  1. $categories = $content_model->limit(0)->getCategoriesTree($ctype['name'], false);
и потом заново сохранить порядок
#26 28 июня 2019 в 11:23
Loadырь,

На сколько я понимаю
в движке по-разному строится дерево категорий

Потому что, если по parent_id — то все отображается правильно,
а если по nested sets — то слетает
#27 28 июня 2019 в 11:49
думаю, даже если обнулить все деревья, поможет ли
#28 28 июня 2019 в 11:52
Нашел где-то в сети такую функцию проверки деревьев
ее к этому случаю можно применить?

  1.  
  2. function pp(){
  3. mysql_connect(DBSERVER,DBUSER,DBPASS);
  4. mysql_select_db(DBNAME);
  5. $sql='update FAT set cat_left=0,cat_right=0';
  6. $ds=mysql_query($sql);
  7. $sql='update FAT set cat_left=1,cat_right=2 where ID=1';
  8. $ds=mysql_query($sql);
  9. $sql='select * from FAT where Level>0 order by ABSPath asc';
  10. $ds=mysql_query($sql);
  11. $level=0;
  12. $last[0]=1;
  13. while ($row=mysql_fetch_array($ds)) {
  14. $rowparent=mysql_fetch_array(mysql_query('select * from FAT where ID='.$last[($row['Level']-1)]));
  15. $sql='UPDATE FAT SET cat_right = cat_right + 2, cat_left = IF(cat_left > '.$rowparent['cat_right'].', cat_left + 2, cat_left) WHERE cat_right >= '.$rowparent['cat_right'];
  16. mysql_query($sql);
  17. $sql='UPDATE FAT SET cat_left='.$rowparent['cat_right'].',cat_right='.($rowparent['cat_right']+1).' where ID='.$row['ID'];
  18. mysql_query($sql);
  19. $last[$row['Level']]=$row['ID'];
  20. }
  21. exit('Готово');
  22. }
  23.  
#29 30 июня 2019 в 13:41
Я не понимаю — это ведь реальная проблема для разработчиков —
с ней может столкнуться ЛЮБОЙ, кто на этой системе будет делать
что-то большее, чем пять страничек для себя

Почему нельзя помочь?
#30 30 июня 2019 в 22:58

Я не понимаю — это ведь реальная проблема для разработчиков

@iKrym
Вы не понимаете. Это вообще не проблема для разработчиков. Раньше была проблема с ограничением показа категорий в количестве 1000 штук. И в результате можно было упорядочивать и работать только с этой тысячей категорий. Потом для категорий это ограничение сняли.

Почему нельзя помочь?

@iKrym
Что у вас происходит, известно только вам и никто тут ничем не поможет. Создайте на демке 100500 категорий и попробуйте повторить проблему.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.