Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Обсуждение общих технических вопросов > Общие вопросы

Ответ
 
Опции темы Опции просмотра
Старый 29.07.2009, 15:49   #1
GAZok
Продвинутый
 
Регистрация: 26.05.2009
Сообщений: 53
По умолчанию сложная структура меню

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

При помощи вот этого скрипта:
Код:
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   #2
GAZok
Продвинутый
 
Регистрация: 26.05.2009
Сообщений: 53
По умолчанию

Вопрос почти решен. Необходимая структура генерируется, но как вписать название отцовской страницы?
Код:
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
}
{fieldid} - использую в качестве ID отцовской страницы, а название???
GAZok вне форума   Ответить с цитированием
Старый 29.07.2009, 21:15   #3
void
Senior Member
 
Аватар для void
 
Регистрация: 14.03.2006
Адрес: Russia, Penza
Сообщений: 1,504
Отправить сообщение для void с помощью ICQ
По умолчанию

{data:leveltitle:-1} то ли просто {leveltitle:-1}
__________________
TYPO3 FAQ
void вне форума   Ответить с цитированием
Старый 29.07.2009, 21:25   #4
GAZok
Продвинутый
 
Регистрация: 26.05.2009
Сообщений: 53
По умолчанию

Код:
{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) {fieldid} но безрезультатно. Получался такой код:
Код:
value={DB : pages:{field:pid}:title}
Может как то можно это обойти чтобы использовать pid?
GAZok вне форума   Ответить с цитированием
Старый 04.08.2009, 12:27   #5
GAZok
Продвинутый
 
Регистрация: 26.05.2009
Сообщений: 53
По умолчанию

питаюсь вытащить заголовок страницы при помощи даного кода:
Код:
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   #6
GAZok
Продвинутый
 
Регистрация: 26.05.2009
Сообщений: 53
По умолчанию

Наверное нужно уточнить что данная часть кода используется в меню. Как я успел заметить єтот код работает корректно вне меню. Полностью не рабочий код выглядит так:
Код:
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   #7
GAZok
Продвинутый
 
Регистрация: 26.05.2009
Сообщений: 53
По умолчанию

Проблему решил таким вот хитрым способом:
Код:
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"><!-- | --> 
}
Жалко только что никто не помог - потерял несколько дней
GAZok вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рендеринг меню в таблицу AleXUnder Общие вопросы 3 26.03.2009 17:55
Создать ещё одно меню, как? djolejek Общие вопросы 6 03.12.2008 17:29
Сложная структура с новостями maaboo Общие вопросы 7 15.09.2008 19:11
Разметка каскадного вложенного меню в TemplaVoila maaboo Общие вопросы 7 27.07.2008 17:11
Меню из подстраниц Grank Общие вопросы 6 31.01.2005 18:46


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


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

Хостинг и техническая поддержка: TYPO3 Лаборатория