1. Мы продолжаем публиковать интересные статьи на тему SocialEngine 4. Одна из статей посвящена правильному выбору сервера для вашей социальной сети, а другая содержит советы по увеличению производительности платформы. Также мы добавили большую статью о пользовательских уровнях. Ознакомиться со статьями вы можете в разделе Вопросы и Ответы SocialEngine 4.
  2. Вам кажется, что ваша версия SocialEngine 4, работает медленно?

    Голосуйте. Пишите свою версию системы, железо на чем работает и количество пользователей. Будем увеличивать производительность :-) Подробнее

  3. В связи с участившимися случаями попыток продажи пользователями форума различных "сборок" коммерческих социальных платформ, обычно основанных на SocialEngine 3, вводится новое правило для форума. Запрещается создание тем или размещение в уже созданных предложений о продаже или размещение ссылок на сайты, где происходит продажа "сборок". Пользователи, которые продолжат свою коммерческую деятельность в данном направлении, будут заблокированы. Подробнее.

Problem Многоуровневое меню

Discussion in 'Прочая Поддержка - Help Requests' started by Мухтар, Jun 2, 2013.

  1. Мухтар Thread starter User


    Offline
    Message Count:
    74
    Likes Received:
    1
    My version of SE:
    3.20
    Добрый день!
    Я очень долго мучился с выводом многоуровневого меню... И не добившись никакого результата обращаюсь к Вам. Надеюсь на скорую помощь!

    Есть база
    Code:
    ---------------------------------------------------------------------
    | id | name    | text | par (parent_id) | pos (position) | status |
    ---------------------------------------------------------------------
    | 1 | menu1   | text1| 0                    | 1                  | 1        |
    -----------------------------------------------------------------
    | 2 | sub_m1  | text| 1                     | 1                  | 1        |
    ----------------------------------------------------------------------
    | 3 | sub_m3  | text| 2                     | 1                  | 1        |
    ----------------------------------------------------------------------
    вывожу в PHP

    PHP:
    $result mysql_query("SELECT * FROM `tb_menu` ORDER BY id ASC");
    $menu = array();
    $menu_index = array();
    while(
    $row mysql_fetch_assoc($result)){
      if(
    $row['par'] == 0) {
        
    $menu[] = $row;
        
    $menu[sizeof($menu)-1]['child'] = array();
        
    $menu_index[$row['id']] = &$menu[sizeof($menu)-1];
      } else {
        
    $menu_index[$row['par']]['child'][] = $row;
        
    $menu_index[$row['id']] = &$menu_index[$row['par']]['child'][sizeof($menu_index[$row['par']]['child'])-1];
      }
    }
    /*print ( '<pre>' )  ;
            print_r ( $menu ) ;
            print ( '</pre>' ) ; exit();*/
    $smarty->assign('menu'$menu);
    если вывести данные через print_r получается
    Array
    (
    [0] => Array
    (
    [id] => 33
    [name] => 345
    [text] => 346
    [par] => 0
    [pos] => 1
    [status] => 1
    [child] => Array
    (
    [0] => Array
    (
    [id] => 40
    [name] => 359
    [text] => 360
    [par] => 33
    [pos] => 1
    [status] => 1
    )

    [1] => Array
    (
    [id] => 41
    [name] => 361
    [text] => 362
    [par] => 33
    [pos] => 2
    [status] => 1
    )

    [2] => Array
    (
    [id] => 42
    [name] => 363
    [text] => 364
    [par] => 33
    [pos] => 3
    [status] => 1
    )

    [3] => Array
    (
    [id] => 43
    [name] => 365
    [text] => 366
    [par] => 33
    [pos] => 4
    [status] => 1
    )

    [4] => Array
    (
    [id] => 44
    [name] => 367
    [text] => 368
    [par] => 33
    [pos] => 5
    [status] => 1
    )

    )

    )

    [1] => Array
    (
    [id] => 34
    [name] => 347
    [text] => 348
    [par] => 0
    [pos] => 2
    [status] => 1
    [child] => Array
    (
    [0] => Array
    (
    [id] => 45
    [name] => 369
    [text] => 370
    [par] => 34
    [pos] => 1
    [status] => 1
    )

    [1] => Array
    (
    [id] => 46
    [name] => 371
    [text] => 372
    [par] => 34
    [pos] => 2
    [status] => 1
    [child] => Array
    (
    [0] => Array
    (
    [id] => 48
    [name] => 375
    [text] => 376
    [par] => 46
    [pos] => 1
    [status] => 1
    )

    [1] => Array
    (
    [id] => 49
    [name] => 377
    [text] => 378
    [par] => 46
    [pos] => 2
    [status] => 1
    )

    [2] => Array
    (
    [id] => 50
    [name] => 379
    [text] => 380
    [par] => 46
    [pos] => 3
    [status] => 1
    )

    [3] => Array
    (
    [id] => 51
    [name] => 381
    [text] => 382
    [par] => 46
    [pos] => 4
    [status] => 1
    )

    )

    )

    [2] => Array
    (
    [id] => 52
    [name] => 383
    [text] => 384
    [par] => 34
    [pos] => 4
    [status] => 1
    )

    [3] => Array
    (
    [id] => 53
    [name] => 385
    [text] => 386
    [par] => 34
    [pos] => 5
    [status] => 1
    )

    [4] => Array
    (
    [id] => 54
    [name] => 387
    [text] => 388
    [par] => 34
    [pos] => 6
    [status] => 1
    )

    [5] => Array
    (
    [id] => 55
    [name] => 389
    [text] => 390
    [par] => 34
    [pos] => 7
    [status] => 1
    )

    [6] => Array
    (
    [id] => 56
    [name] => 391
    [text] => 392
    [par] => 34
    [pos] => 8
    [status] => 1
    )

    )

    )

    [2] => Array
    (
    [id] => 35
    [name] => 349
    [text] => 350
    [par] => 0
    [pos] => 3
    [status] => 1
    [child] => Array
    (
    )

    )

    [3] => Array
    (
    [id] => 36
    [name] => 351
    [text] => 352
    [par] => 0
    [pos] => 4
    [status] => 1
    [child] => Array
    (
    [0] => Array
    (
    [id] => 57
    [name] => 393
    [text] => 394
    [par] => 36
    [pos] => 1
    [status] => 1
    [child] => Array
    (
    [0] => Array
    (
    [id] => 58
    [name] => 395
    [text] => 396
    [par] => 57
    [pos] => 1
    [status] => 1
    )

    [1] => Array
    (
    [id] => 59
    [name] => 397
    [text] => 398
    [par] => 57
    [pos] => 2
    [status] => 1
    )

    [2] => Array
    (
    [id] => 60
    [name] => 399
    [text] => 400
    [par] => 57
    [pos] => 3
    [status] => 1
    [child] => Array
    (
    [0] => Array
    (
    [id] => 61
    [name] => 401
    [text] => 402
    [par] => 60
    [pos] => 1
    [status] => 1
    )

    [1] => Array
    (
    [id] => 62
    [name] => 403
    [text] => 404
    [par] => 60
    [pos] => 2
    [status] => 1
    )

    )

    )

    [3] => Array
    (
    [id] => 63
    [name] => 405
    [text] => 406
    [par] => 57
    [pos] => 4
    [status] => 1
    )

    )

    )

    [1] => Array
    (
    [id] => 64
    [name] => 407
    [text] => 408
    [par] => 36
    [pos] => 2
    [status] => 1
    [child] => Array
    (
    [0] => Array
    (
    [id] => 65
    [name] => 409
    [text] => 410
    [par] => 64
    [pos] => 1
    [status] => 1
    )

    [1] => Array
    (
    [id] => 66
    [name] => 411
    [text] => 412
    [par] => 64
    [pos] => 2
    [status] => 1
    )

    [2] => Array
    (
    [id] => 67
    [name] => 413
    [text] => 414
    [par] => 64
    [pos] => 3
    [status] => 1
    [child] => Array
    (
    [0] => Array
    (
    [id] => 68
    [name] => 415
    [text] => 416
    [par] => 67
    [pos] => 1
    [status] => 1
    )

    [1] => Array
    (
    [id] => 69
    [name] => 417
    [text] => 418
    [par] => 67
    [pos] => 2
    [status] => 1
    )

    )

    )

    [3] => Array
    (
    [id] => 70
    [name] => 419
    [text] => 420
    [par] => 64
    [pos] => 4
    [status] => 1
    )

    )

    )

    [2] => Array
    (
    [id] => 71
    [name] => 421
    [text] => 422
    [par] => 36
    [pos] => 3
    [status] => 1
    )

    )

    )

    [4] => Array
    (
    [id] => 37
    [name] => 353
    [text] => 354
    [par] => 0
    [pos] => 5
    [status] => 1
    [child] => Array
    (
    [0] => Array
    (
    [id] => 72
    [name] => 423
    [text] => 424
    [par] => 37
    [pos] => 1
    [status] => 1
    )

    [1] => Array
    (
    [id] => 73
    [name] => 425
    [text] => 426
    [par] => 37
    [pos] => 2
    [status] => 1
    [child] => Array
    (
    [0] => Array
    (
    [id] => 78
    [name] => 435
    [text] => 436
    [par] => 73
    [pos] => 1
    [status] => 1
    )

    [1] => Array
    (
    [id] => 79
    [name] => 437
    [text] => 438
    [par] => 73
    [pos] => 2
    [status] => 1
    )

    [2] => Array
    (
    [id] => 80
    [name] => 439
    [text] => 440
    [par] => 73
    [pos] => 3
    [status] => 1
    )

    [3] => Array
    (
    [id] => 81
    [name] => 441
    [text] => 442
    [par] => 73
    [pos] => 4
    [status] => 1
    )

    [4] => Array
    (
    [id] => 82
    [name] => 443
    [text] => 444
    [par] => 73
    [pos] => 5
    [status] => 1
    )

    [5] => Array
    (
    [id] => 83
    [name] => 445
    [text] => 446
    [par] => 73
    [pos] => 6
    [status] => 1
    )

    [6] => Array
    (
    [id] => 84
    [name] => 447
    [text] => 448
    [par] => 73
    [pos] => 7
    [status] => 1
    )

    )

    )

    [2] => Array
    (
    [id] => 74
    [name] => 427
    [text] => 428
    [par] => 37
    [pos] => 3
    [status] => 1
    )

    [3] => Array
    (
    [id] => 75
    [name] => 429
    [text] => 430
    [par] => 37
    [pos] => 4
    [status] => 1
    )

    [4] => Array
    (
    [id] => 76
    [name] => 431
    [text] => 432
    [par] => 37
    [pos] => 5
    [status] => 1
    )

    [5] => Array
    (
    [id] => 77
    [name] => 433
    [text] => 434
    [par] => 37
    [pos] => 6
    [status] => 1
    )

    )

    )

    [5] => Array
    (
    [id] => 38
    [name] => 355
    [text] => 356
    [par] => 0
    [pos] => 6
    [status] => 1
    [child] => Array
    (
    [0] => Array
    (
    [id] => 85
    [name] => 449
    [text] => 450
    [par] => 38
    [pos] => 1
    [status] => 1
    )

    [1] => Array
    (
    [id] => 86
    [name] => 451
    [text] => 452
    [par] => 38
    [pos] => 2
    [status] => 1
    )

    [2] => Array
    (
    [id] => 87
    [name] => 453
    [text] => 454
    [par] => 38
    [pos] => 3
    [status] => 1
    )

    [3] => Array
    (
    [id] => 88
    [name] => 455
    [text] => 456
    [par] => 38
    [pos] => 4
    [status] => 1
    )

    )

    )

    [6] => Array
    (
    [id] => 39
    [name] => 357
    [text] => 358
    [par] => 0
    [pos] => 7
    [status] => 1
    [child] => Array
    (
    )

    )

    )

    Как мне теперь это все вывести в tpl-файле, чтобы вид был
    HTML:
    <ul>
    <li><a href="">Первый уровень</a>
        <ul>
            <li><a href="">Второй уровень</a></li>
              ......................................
                <ul>
                      <li><a href="">N-уровень</a></li>
                <ul>
        </ul>
    </li>
    </ul>
    Пожалуйста помогите, горит!
    Заранее спасибо

Share This Page

All rights reserved SocEngine.ru ©