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

InstantCMS 2.X
#1 24 июня 2019 в 22:26
На сайте более 600 категорий и подкатегорий
определенное множество (около 100 штук)
перестали менять родителя

думаю, где-то проблема, где — не понятно.
Как проверить деревья?
#2 24 июня 2019 в 22:42
@iKrym,
Сохраните бэкап базы, потом Панель управления — Контент — (ваш_тип_контента) — Порядок.
И жмите "сохранить до тех пор пока категории не распределятся нормально.
#3 24 июня 2019 в 22:54
Ris,
перешел

Панель — тип контента — свойства (вкладки Порядок, нет)
и на вкладке порядок — есть "сохранить порядок"
нужно нажимать "сохранить порядок"? Нужно выделять "больную" категорию? Или выделять "все"?


Настройки
Заголовки
Поля
Свойства
Доступ
Наборы
Модераторы
Связи
#4 24 июня 2019 в 22:59

нужно нажимать "сохранить порядок"?

@iKrym
Да
#5 24 июня 2019 в 23:51
Ris, я наверно делаю что-то не то
не помогает
причем на сайте — отображается верно а в админке — нет

так же, этот косяк наблюдается в "хлебных" крошках
#6 25 июня 2019 в 00:01
@iKrym,
Вот это попробуйте:
/blogs/stranyi-blog/utilita-sadovod-dlja-icms-2-0.html

Но, чтобы пользоваться этой утилитой, нужно понимать, что делаете.
Про nested sets читайте тут:
www.getinfo.ru/article610.html
#7 25 июня 2019 в 08:41

На сайте более 600 категорий и подкатегорий
определенное множество (около 100 штук)

@iKrym
Какого уровня вложенность подкатегорий, шаблон дефолтный, какая "Тема оформления для панели управления", сторонние компоненты установлены?
#8 25 июня 2019 в 11:42
Ris, у меня тоже тематика — растения дом сад огород — там оооочень много категорий
#9 25 июня 2019 в 11:46

Какого уровня вложенность подкатегорий, шаблон дефолтный, какая "Тема оформления для панели управления", сторонние компоненты установлены ?

@noname

Сторонних — нет
Вложенность… проблемы начались после сокращения вложенности =)
этот сайт живет еще с версии 1.2.1
и натерпелся…

раньше в базе были блоги, новости, объявления, форум, каталог статей (с огромной вложенностью категорий), вопрос-ответ, faq
я это все сократил до

записи
блоги (с привязкой к записям)
объявления

Всё!
скинул в одну кучу
сохранил категории

осталось только подправить вложенность — которая пляшет только в "хлебных крошках" и админке
на сайте (показывать категории сверху над статьями) и (категории в виджете) — все правильно
#10 25 июня 2019 в 11:51

скинул в одну кучу

@iKrym

думаю, где-то проблема, где — не понятно.

@iKrym
#11 25 июня 2019 в 12:01

Вот это попробуйте:
/blogs/stranyi-blog/utilita-sadovod-dlja-icms-2-0.html

Ris




  1.  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6. <title>Ремонтник деревьев Садовод 2.0</title>
  7. <style type="text/css">
  8. body{
  9. background: #AFEEEE;
  10. }
  11. #tab_01{
  12. weight: 100%;
  13. empty-cells: show;
  14. border-collapse:collapse;
  15. }
  16. .cell{
  17. width: 5%;
  18. border: 1px solid blue;
  19. }
  20. p{
  21. color: #000080;
  22. width: 90%;
  23. }
  24. #table_name{color: #ff0000;}
  25. </style>
  26. </head>
  27. <?php
  28. /////////////////////////
  29. // Настройки ремонтника//
  30. /////////////////////////
  31. //Таблица Вашей БД. По умолчанию "cms_menu". Напишите одну из: cms_con_articles_cats, cms_con_albums_cats, cms_con_board_cats, cms_con_news_cats, cms_con_posts_cats
  32. $table = 'cms_con_posts_cats';
  33. ////////////////////////
  34. //Какие пункты меню показывать: опубликованные 1, неопубликованные 0, все 2.
  35. $published = 2;
  36. ////////////////////////
  37. //Какие поля таблицы показывать, а какие из них редактировать. 0 - не редактировать, 1 - редактировать. Порядок показа полей зависит от порядка элементов в этом массиве.
  38. //Вы можете добавить еще поля (должны быть в таблице) или закомментировать существуюшие, для изменения числа показанных полей.
  39. //$filds['menu'] = 0;
  40. $filds['title'] = 0;
  41. $filds['id'] = 0;
  42. $filds['parent_id'] = 1;
  43. $filds['ns_left'] = 1;
  44. $filds['ns_right'] = 1;
  45. $filds['ns_level'] = 1;
  46. //$filds['ns_differ'] = 1;
  47. $filds['ns_ignore'] = 1;
  48. ////////////////////////
  49. //Фильтр показа результатов по значению поля menu. ВАЖНО!!!! Только для таблицы cms_menu! Для других таблиц снимите фильтр ($sort = '';)!
  50. //Раскомментируйте одно из значений. Если вы создали еще одно меню, добавьте его сюда
  51. //$sort = 'root'; // Показывается только меню root
  52. //$sort = 'mainmenu'; // Показывается только меню mainmenu
  53. //$sort = 'menu1'; // Показывается только меню menu1
  54. $sort = ''; // Выводится все без фильтра
  55. ////////////////////////
  56. //Эта настройка включает/выключает дополнительную таблицу, более наглядно представляющую деревья: 0 выключено, 1 включено.
  57. $view = 1;
  58. ////////////////////////
  59. // Конец настроек //
  60. ////////////////////////
  61.  
  62. // читаем файл config
  63. $conf_array = require_once 'system/config/config.php';
  64. $host = $conf_array['localhost'];
  65. $base = $conf_array['base'];
  66. $user = $conf_array['user'];
  67. $pass = $conf_array['123456'];
  68.  
  69. $charset_in = "UTF-8"; $charset_out = "utf8_general_ci";
  70. // подключаемся к БД
  71. mysql_connect($host, $user, $pass);
  72. mysql_query("SET NAMES 'utf8'");
  73. //echo "ERROR ".mysql_errno()." ".mysql_error()."\n";
  74. if($_POST){
  75. if(is_array($_POST)){
  76. foreach($_POST['fields'] as $id=>$field){
  77. //echo'id = '.$id.'$_POST = ';print_r($field);echo'<br>';
  78. foreach($field as $names=>$values){
  79. $sets[] = "$names='$values'";
  80. }
  81. $set = implode(', ', $sets);
  82. $sql = "UPDATE LOW_PRIORITY $table SET $set WHERE id=$id";
  83. mysql_query($sql);
  84. }
  85. }
  86. $_POST = array();
  87. }
  88. if($published < 1){$where = 'WHERE published=0'; if($sort){$where .=' AND menu="'.$sort.'"';}}
  89. if($published == 1){$where = 'WHERE published=1'; if($sort){$where .=' AND menu="'.$sort.'"';}}
  90. if($published > 1){$where = ''; if($sort){$where .='WHERE menu="'.$sort.'"';}}
  91. $sql = "SELECT * FROM {$table} {$where}";
  92. $result = mysql_query($sql);
  93. while($lines = mysql_fetch_array($result, MYSQL_ASSOC)){
  94. $menus[] = $lines;
  95. }
  96. $fildskey = array_keys($filds);
  97. //подготовка вспомогательной визуальной таблицы
  98. if($view){
  99. $sql = "SELECT MIN(ns_left) AS ns_left, MAX(ns_right) AS ns_right FROM {$table}";
  100. $result = mysql_query($sql);
  101. $nsminmax = mysql_fetch_assoc($result);
  102. $sql = "SELECT MIN(ns_level) AS LevelMin, MAX(ns_level) AS LevelMax FROM {$table}";
  103. $result = mysql_query($sql);
  104. $lvminmax = mysql_fetch_assoc($result);
  105. $sql = "SELECT id, title, ns_level AS 'level', ns_left AS 'left', ns_right AS 'right' FROM {$table}";
  106. $result = mysql_query($sql);
  107. while($m = mysql_fetch_assoc($result)){
  108. $ns[$m['id']] = array('level'=>$m['level'], 'left'=>$m['left'], 'right'=>$m['right'], 'title'=>$m['title']);
  109. }
  110. }
  111.  
  112. ?>
  113. <body>
  114. <p>Надеюсь, Вы уже сделали дамп таблицы. Вы пользуетесь ремонтным файлом на свой страх и риск. Никаких претензий автор не принимает. <br>
  115. Перед использованием откройте файл редактором и сделайте настройки. <br>
  116. Пока вы не нажали на кнопку "Изменить", никакого изменения в указаной Вами таблице не произойдет.
  117. </p>
  118. <?php if($view){ ?>
  119. Это таблица визуализации деревьев. Ее можно отключить в настройках ремонтника. При наведении на ns_left или ns_right элемента выпадает id этого элемента.
  120. <table>
  121. <tr>
  122. <td style="color: grey;">NS</td>
  123. <?php for($i=$nsminmax['ns_left'];$i<=$nsminmax['ns_right'];$i++){ ?> <td style="color: grey;"><?php echo $i; ?></td> <?php } ?>
  124. </tr>
  125. <?php for($n=$lvminmax['LevelMin'];$n<=$lvminmax['LevelMax'];$n++){ ?>
  126. <tr>
  127. <td style="color: grey;">L<?php echo $n; ?></td>
  128. <?php for($i=$nsminmax['ns_left'];$i<=$nsminmax['ns_right'];$i++){?>
  129. <td
  130. <?php foreach($ns as $id=>$item){
  131. if($item['level'] == $n){
  132. if($item['left'] == $i){echo 'title="id = '.$id.' title = '.$item['title'].'"';}
  133. if($item['right'] == $i){echo 'title="id = '.$id.' title = '.$item['title'].'"';}
  134. }
  135. }?>
  136. >
  137. <?php foreach($ns as $id=>$item){
  138. if($item['level'] == $n){
  139. if($item['left'] == $i){echo $i;}
  140. if($item['right'] == $i){echo $i;}
  141. }
  142. }?>
  143. </td>
  144. <?php } ?>
  145. </tr>
  146. <tr>
  147.  
  148. </tr>
  149. <?php } ?>
  150. </table>
  151. <?php } ?>
  152. Вы редактируете таблицу <span id='table_name'><?php echo $table; ?></span>
  153. <form action="/gardener.php" method="POST" target="_self" accept-charset="utf-8">
  154. <table id="tab_01">
  155. <tr>
  156. <?php if($menus){foreach($fildskey as $fild){echo'<th class="cell">'.$fild.'</th>';} ?>
  157. </tr>
  158. <?php $i=0;
  159. foreach($menus as $menu){
#12 25 июня 2019 в 12:12

[Tue Jun 25 12:09:43 2019] [error] [client 192.168.0.1] PHP Warning: mysql_connect(): Access denied for user ''@'localhost' (using password: NO) in /home/public_html/gard.php on line 70
[Tue Jun 25 12:09:43 2019] [error] [client 192.168.0.1] PHP Warning: mysql_select_db(): Access denied for user ''@'localhost' (using password: NO) in /home/public_html/gard.php on line 71
[Tue Jun 25 12:09:43 2019] [error] [client 192.168.0.1] PHP Warning: mysql_select_db(): A link to the server could not be established in /home/public_html/gard.php on line 71
[Tue Jun 25 12:09:43 2019] [error] [client 192.168.0.1] PHP Warning: mysql_query(): Access denied for user ''@'localhost' (using password: NO) in /home/public_html/gard.php on line 72
[Tue Jun 25 12:09:43 2019] [error] [client 192.168.0.1] PHP Warning: mysql_query(): A link to the server could not be established in /home/public_html/gard.php on line 72
[Tue Jun 25 12:09:43 2019] [error] [client 192.168.0.1] PHP Warning: mysql_query(): Access denied for user ''@'localhost' (using password: NO) in /home/public_html/gard.php on line 92
[Tue Jun 25 12:09:43 2019] [error] [client 192.168.0.1] PHP Warning: mysql_query(): A link to the server could not be established in /home/public_html/gard.php on line 92
[Tue Jun 25 12:09:43 2019] [error] [client 192.168.0.1] PHP Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/public_html/gard.php on line 93
[Tue Jun 25 12:09:43 2019] [error] [client 192.168.0.1] PHP Warning: mysql_query(): Access denied for user ''@'localhost' (using password: NO) in /home/public_html/gard.php on line 100
[Tue Jun 25 12:09:43 2019] [error] [client 192.168.0.1] PHP Warning: mysql_query(): A link to the server could not be established in /home/public_html/gard.php on line 100
[Tue Jun 25 12:09:43 2019] [error] [client 192.168.0.1] PHP Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /home/public_html/gard.php on line 101
[Tue Jun 25 12:09:43 2019] [error] [client 192.168.0.1] PHP Warning: mysql_query(): Access denied for user ''@'localhost' (using password: NO) in /home/public_html/gard.php on line 103
[Tue Jun 25 12:09:43 2019] [error] [client 192.168.0.1] PHP Warning: mysql_query(): A link to the server could not be established in /home/public_html/gard.php on line 103
[Tue Jun 25 12:09:43 2019] [error] [client 192.168.0.1] PHP Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /home/public_html/gard.php on line 104
[Tue Jun 25 12:09:43 2019] [error] [client 192.168.0.1] PHP Warning: mysql_query(): Access denied for user ''@'localhost' (using password: NO) in /home/public_html/gard.php on line 106
[Tue Jun 25 12:09:43 2019] [error] [client 192.168.0.1] PHP Warning: mysql_query(): A link to the server could not be established in /home/public_html/gard.php on line 106
[Tue Jun 25 12:09:43 2019] [error] [client 192.168.0.1] PHP Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /home/public_html/gard.php on line 107
[Tue Jun 25 12:09:43 2019] [error] [client 192.168.0.1] PHP Notice: Undefined variable: ns in /home/public_html/gard.php on line 130
[Tue Jun 25 12:09:43 2019] [error] [client 192.168.0.1] PHP Warning: Invalid argument supplied for foreach() in /home/public_html/gard.php on line 130
[Tue Jun 25 12:09:43 2019] [error] [client 192.168.0.1] PHP Notice: Undefined variable: ns in /home/public_html/gard.php on line 137
[Tue Jun 25 12:09:43 2019] [error] [client 192.168.0.1] PHP Warning: Invalid argument supplied for foreach() in /home/public_html/gard.php on line 137
[Tue Jun 25 12:09:43 2019] [error] [client 192.168.0.1] PHP Notice: Undefined variable: menus in /home/public_html/gard.php on line 156
[Tue Jun 25 12:09:43 2019] [error] [client 192.168.0.1] PHP Notice: Undefined variable: menus in /home/public_html/gard.php on line 174
ошибка говорит о том, что скрипт к базе не может подключиться
хотя данные верные
#13 25 июня 2019 в 12:38
разобрался — нужно было не указывать данные для подключения к базе =)
#14 25 июня 2019 в 13:10
Дерево перестроить не получается
  1. PHP Warning: Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini
ограничения хостинга
да и как решить — тоже без вреда, вряд-ли получится

вот косячная категория

#15 25 июня 2019 в 13:58
@iKrym, что значит перестали менять родителя? Можете объяснить на примере.
Тоже пилю сайт с большим количеством категорий, интересно, чего ждать в будущем )))
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.