Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   сложная структура меню (http://forum.typo3.ru/showthread.php?t=7875)

GAZok 29.07.2009 15:49

сложная структура меню
 
...может не для всех она сложная, но помощь нужна мне в следующем:

При помощи вот этого скрипта:
Код:

temp.topmenu_2 = HMENU
temp.topmenu_2.entryLevel = 2
temp.topmenu_2.1 = TMENU
temp.topmenu_2.1 {

  NO.allWrap = <div class="m_top"> | </div>

  ACT = 1
  ACT.ATagParams = id="active"
  ACT.allWrap = <div class="m_top"> | </div>
 
  ACTIFSUB = 1
  ACTIFSUB.ATagParams = id="active"
  ACTIFSUB.allWrap = <div class="m_top"> |
}

temp.topmenu_2.2 = TMENU
temp.topmenu_2.2 {
  wrap = <div class="m_down"> | </div></div>
 
  NO.allWrap = <div class="m_down_item"> | </div>

  ACT = 1
  ACT.ATagParams = id="active"
  ACT.allWrap = <div class="m_down_item"> | </div>
 
  ACTIFSUB = 1
  ACTIFSUB.ATagParams = id="active"
  ACTIFSUB.allWrap = <div class="m_down_item"> |
}

temp.topmenu_2.3 = TMENU
temp.topmenu_2.3 {
  wrap = <div class="m_down"> | </div></div>
 
  NO.allWrap = <div class="m_down_item"> | </div>

  ACT = 1
  ACT.ATagParams = id="active"
  ACT.allWrap = <div class="m_down_item"> | </div>
}

Мне удалось создать следующий ХТМЛ код:
Код:

<div class="submenu" id="topmenu_2">
        <div class="m_top"><a href="index.php?id=1">page 1</a></div>
        <div class="m_top"><a href="index.php?id=2" id="active">page 2</a>
                <div class="m_down">

                        <div class="m_down_item"><a href="index.php?id=3">sub-page 3</a></div>
                        <div class="m_down_item"><a href="index.php?id=4">sub-page 4</a></div>
                </div>
        </div>
</div>

В нем мне необходимо ссылку на активную страницу поместить в другое место. А именно:
Код:

<div class="submenu" id="topmenu_2">
        <div class="m_top"><a href="index.php?id=1">page 1</a></div>
        <div class="m_top">
                <div class="m_down">

                        <div class="m_down_item"><a href="index.php?id=3">sub-page 3</a></div>
                        <div class="m_down_item"><a href="index.php?id=4">sub-page 4</a></div>
                </div><a href="index.php?id=2" id="active">page 2</a>
        </div>
</div>

Как изменить ТупоСкрипт для этого, не знаю. Приходила мысль, может можно в дочернем уровне меню, как то указать ссылку на отцовский пункт меню, а в самом отцовском обработчике закомментировать активний пункт. То есть ХТМЛ код получился бы такой:
Код:

<div class="submenu" id="topmenu_2">
        <div class="m_top"><a href="index.php?id=1">page 1</a></div>
        <div class="m_top"><!-- <a href="index.php?id=2" id="active">page 2</a> -->
                <div class="m_down">

                        <div class="m_down_item"><a href="index.php?id=3">sub-page 3</a></div>
                        <div class="m_down_item"><a href="index.php?id=4">sub-page 4</a></div>
                </div><a href="index.php?id=2" id="active">page 2</a>
        </div>
</div>

Это возможно?

GAZok 29.07.2009 17:30

Вопрос почти решен. Необходимая структура генерируется, но как вписать название отцовской страницы?
Код:

temp.topmenu_2 = HMENU
temp.topmenu_2.entryLevel = 2
temp.topmenu_2.1 = TMENU
temp.topmenu_2.1 {

  NO.allWrap = <div class="m_top"> | </div>

  ACT = 1
  ACT.ATagParams = id="active"
  ACT.allWrap = <div class="m_top"> | </div>
 
  ACTIFSUB = 1
  #ACTIFSUB.ATagParams = id="active"
  #ACTIFSUB.doNotLinkIt = 1
  ACTIFSUB.allWrap = <div class="m_top"><!-- | -->
}

temp.topmenu_2.2 = TMENU
temp.topmenu_2.2 {
  wrap = <div class="m_down"> | </div>
 
  NO.allWrap = <div class="m_down_item"> | </div> |*| <div class="m_down_item"> | </div> |*| <div class="m_down_item"> | </div></div><a href="index.php?id={field:pid}" id="active">[название отцовской страницы]</a>
  NO.allWrap.insertData = 1

  ACT = 1
  ACT.ATagParams = id="active"
  ACT.allWrap = <div class="m_down_item"> | </div> |*| <div class="m_down_item"> | </div> |*| <div class="m_down_item"> | </div></div><a href="index.php?id={field:pid}" id="active">[название отцовской страницы]</a>
  NO.allWrap.insertData = 1
 
  ACTIFSUB = 1
  #ACTIFSUB.ATagParams = id="active"
  #ACTIFSUB.doNotLinkIt = 1
  ACTIFSUB.allWrap = <div class="m_down_item"><!-- | -->
}

temp.topmenu_2.3 = TMENU
temp.topmenu_2.3 {
  wrap = <div class="m_down"> | </div>
 
  NO.allWrap = <div class="m_down_item"> | </div> |*| <div class="m_down_item"> | </div> |*| <div class="m_down_item"> | </div></div><a href="index.php?id={field:pid}" id="active">[название отцовской страницы]</a>
  NO.allWrap.insertData = 1

  ACT = 1
  ACT.ATagParams = id="active"
  ACT.allWrap = <div class="m_down_item"> | </div> |*| <div class="m_down_item"> | </div> |*| <div class="m_down_item"> | </div></div><a href="index.php?id={field:pid}" id="active">[название отцовской страницы]</a>
  NO.allWrap.insertData = 1
}

{field:pid} - использую в качестве ID отцовской страницы, а название???

void 29.07.2009 21:15

{data:leveltitle:-1} то ли просто {leveltitle:-1}

GAZok 29.07.2009 21:25

Код:

{leveltitle:-1}
пробовал, но по ходу открытия 2, 3, 4-го уровней меню это значений показывает название отцовской страницы от старицы на которой пользователь находится на данный момент. А нужно чтобы leveltitle:-1 привязывался не к поточной странице, а к пункта меню к которому он задействован. Правда может я не правильно что написал, но...

У меня есть одна идея, но никак не могу довести ее до ума:
Код:

  before.cObject=LOAD_REGISTER
  before.cObject{

    mainMenuNumber.cObject=TEXT
    mainMenuNumber.cObject{
      value={DB : pages:27:title}
      insertData=1
    }
  }

При использовании этого кода у меня все работает нормально, но как вы видите ID страницы хардкодед. Пытался как то подставить (вместо 27) {field:pid} но безрезультатно. Получался такой код:
Код:

value={DB : pages:{field:pid}:title}
Может как то можно это обойти чтобы использовать pid?

GAZok 04.08.2009 12:27

питаюсь вытащить заголовок страницы при помощи даного кода:
Код:

mainMenuNumber = CONTENT
mainMenuNumber{
  table = pages
  select{
    languageField=sys_language_uid
    max=10
    selectFields=uid,title
    where=uid=27
  }

  cObject= COA
  cObject{
    wrap = |
    10 = TEXT
    10.field = uid
  }
}

Но он не работает корректно. В целях тестирования вместо title возвращаю uid. Не смотря на то, что задано конкретное условие (where=uid=27) в результате получаю 34. Такое впечатление что условие не срабатывает. Видите здесь явные ошибки?

GAZok 04.08.2009 14:31

Наверное нужно уточнить что данная часть кода используется в меню. Как я успел заметить єтот код работает корректно вне меню. Полностью не рабочий код выглядит так:
Код:

temp.topmenu_2.2 = TMENU
temp.topmenu_2.2 {
  wrap = <div class="m_down"> | </div>
 
  NO{

  before.cObject=LOAD_REGISTER
  before.cObject{

        mainMenuNumber = TEXT
        mainMenuNumber{
          table = pages
          select{
            languageField=sys_language_uid
            max=10
            selectFields=uid,title
            where=uid=27
          }

          cObject= COA
          cObject{
            wrap = |
            10 = TEXT
            10.field = uid
          }
        }

  }

  allWrap = <div class="m_down_item"> | </div> |*| <div class="m_down_item"> | </div> |*| <div class="m_down_item"> | </div></div><a href="index.php?id={field:pid}" id="active">{register:mainMenuNumber}</a>
    allWrap.insertData = 1
  }

  ACT = 1
  ACT.ATagParams = id="active"
  ACT.allWrap = <div class="m_down_item"> | </div> |*| <div class="m_down_item"> | </div> |*| <div class="m_down_item"> | </div></div><a href="index.php?id={field:pid}" id="active">={leveltitle:-1}=</a>
  NO.allWrap.insertData = 1
 
  ACTIFSUB = 1
  ACTIFSUB.allWrap = <div class="m_down_item"><!-- | -->
}


GAZok 04.08.2009 18:57

Проблему решил таким вот хитрым способом:
Код:

temp.topmenu_2.2 = TMENU
temp.topmenu_2.2 {
  wrap = <div class="m_down"> | </div>

  NO{
  before.cObject=LOAD_REGISTER
  before.cObject{

    mainMenuNumber = TEXT
    mainMenuNumber{
    cObject= COA
    cObject{
      wrap = |
      10 = TEXT
      10.value = {field:pid}
      10.insertData = 1
    }
    wrap = {DB : pages:|:title}
    insertData = 1
    }
  }

  allWrap = <div class="m_down_item"> | </div> |*| <div class="m_down_item"> | </div> |*| <div class="m_down_item"> | </div></div><a href="index.php?id={field:pid}" id="active">{register:mainMenuNumber}</a>
  allWrap.insertData = 1
  }

  ACT = 1
  ACT{
  ATagParams = id="active"

  before.cObject=LOAD_REGISTER
  before.cObject{

    mainMenuNumber = TEXT
    mainMenuNumber{
    cObject= COA
    cObject{
      wrap = |
      10 = TEXT
      10.value = {field:pid}
      10.insertData = 1
    }
    wrap = {DB : pages:|:title}
    insertData = 1
    }
  }

  allWrap = <div class="m_down_item"> | </div> |*| <div class="m_down_item"> | </div> |*| <div class="m_down_item"> | </div></div><a href="index.php?id={field:pid}" id="active">{register:mainMenuNumber}</a>
  allWrap.insertData = 1
  }
 
  ACTIFSUB = 1
  ACTIFSUB.allWrap = <div class="m_down_item"><!-- | -->
}

Жалко только что никто не помог - потерял несколько дней :(


Часовой пояс GMT +4, время: 13:03.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot