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=7510)

ksevelyar 18.03.2009 19:42

Подменю для главной страницы сайта
 
Если мне требуется ссылка на главную страницу в меню - на уровне других страниц меню (обычно втором) создаётся страница "Главная", её тип изменяется на ярлык, который ведёт на главную.

Если мне требуется подменю на главной странице - создаётся страница "главная", внутри этой страницы создаются страницы составляющие это самое подменю.

После этого уже корневая страница делается ярлыком на эту квази-главную страницу.

Квази-главная страница не должна показываться в меню, поэтому ставим соответствующую опцию в её свойствах.

Когда вводится адрес сайта - site.ru, например, пользователь видит подменю.

Нюанс: квази-главная страница не исчезает, чтобы поисковики не индексировали её, она запрещается в robots.ini.

А что делать если нужно чтобы было и подменю на главной странице и ссылка на главную страницу в меню?

Логично создать ещё одну страницу главная-ярлык и сделать её ярлыком уже на главную - однако это не работает. Не работает и изменение типа страницы на внешнюю ссылку, адрес которой site.ru

-=UncleByte=- 19.03.2009 06:43

Код:

lib.mainmenu = COA
lib.mainmenu {
  10 = TEXT
  10.value = Главная
  10.typolink.parameter.data = leveluid:0
  10.wrap = <li>|</li>
  20 = HMENU
  20 {
  1 = TMENU
  1 {
    NO {
        linkWrap = <li>|</li>
      }
    ACT = 1
    ACT {
        linkWrap = <li>|</li>
        ATagParams = class="active"
      }
    }
  }
 }


[treeLevel = 0]
lib.mainmenu = COA
lib.mainmenu {
  10 = TEXT
  10.value = Главная
  10.typolink.parameter.data = leveluid:0
  10.wrap = <li>|</li>
  10.typolink.ATagParams = class="active"
  20 = HMENU
  20 {
  1 = TMENU
  1 {
    NO {
        linkWrap = <li>|</li>
      }
    ACT = 1
    ACT {
        linkWrap = <li>|</li>
      }
    }
  }
}
[end]

Примерно так.

ksevelyar 19.03.2009 17:01

Спасибо, для моего сайта с automaketemplate рабочее решение выглядит так:

Код:

subparts.rmenu = HMENU
subparts.rmenu.entryLevel = 1
subparts.rmenu.1 = TMENU
subparts.rmenu.1.expAll = 1
subparts.rmenu.1 {
    NO {
    linkWrap = <div class="l1">|</div>
    10 = TEXT
    10.text.field = title
    }
    ACT = 1
    ACT.linkWrap = <div class="l1act">|</div>
    CUR = 1 
    CUR < .ACT   
    CUR.doNotLinkIt = 1
}

subparts.rmenu.2 = TMENU
subparts.rmenu.2 {
    NO {
    linkWrap = <div class="l2">|</div>
    20 = TEXT
    20.text.field = title
    }
    ACT = 1
    ACT.linkWrap = <div class="l2act">|</div>
    CUR = 1 
    CUR < .ACT   
    CUR.doNotLinkIt = 1
}
 
[treeLevel = 0]
subparts.rmenu.entryLevel = 0
subparts.rmenu.special = directory
subparts.rmenu.special.value = 80
[end]

Ключевым является условие [treeLevel = 0] ... [end]

И не менее важная информация, которую я узнал в процессе - настройки первого меню - наследуются!

То есть показанный Вами пример можно сократить до следующего:

Код:

lib.mainmenu = COA
lib.mainmenu {
  10 = TEXT
  10.value = Главная
  10.typolink.parameter.data = leveluid:0
  10.wrap = <li>|</li>
  20 = HMENU
  20 {
  1 = TMENU
  1 {
    NO {
        linkWrap = <li>|</li>
      }
    ACT = 1
    ACT {
        linkWrap = <li>|</li>
        ATagParams = class="active"
      }
    }
  }
 }


[treeLevel = 0]
lib.mainmenu.10.typolink.ATagParams = class="active"
[end]


-=UncleByte=- 19.03.2009 17:30

Наследуются, да, все верно.

Alex Podusov 13.04.2012 17:59

Вот не выходит "золотой ключик", и всё тут! ))
Код:

lib.localmenu = COA
lib.localmenu {
  wrap = <ul>|</ul>
  10 = TEXT
  10.field = title
  10.typolink.parameter.data = leveluid:0
  10.wrap = <li>|</li>
  20 = HMENU
  20 {
  1 = TMENU
  1 {
    NO {
        linkWrap = <li>|</li>
      }
    ACT = 1
    ACT {
        linkWrap = <li>|</li>
        ATagParams = class="active"
      }
    }
  }
 }


[treeLevel = 0]
lib.localmenu = COA
lib.localmenu {
  wrap = <ul>|</ul>
  10 = TEXT
  10.field = title
  10.typolink.parameter.data = leveluid:0
  10.wrap = <li>|</li>
  10.typolink.ATagParams = class="active"
  20 = HMENU
  20 {
  1 = TMENU
  1 {
    NO {
        linkWrap = <li>|</li>
      }
    ACT = 1
    ACT {
        linkWrap = <li>|</li>
      }
    }
  }
}
[end]

тут всё подставляет верно. Что делаю дальше: на странице определены: заголовок страницы "Добро пожаловать!", альтернативный заголовок "Точка отсчета", и для эксперимента добавил ещё подзаголовок "Точка отсчета1" :)
меняю title на subtitle - так и показывает "Добро пожаловать!" Кэши где только ни чистил. Далее. 10.field = title меняю на 10.value = title - теперь показывает title, то есть с кэшем всё в порядке, он ни при чем.

-=UncleByte=- 13.04.2012 18:26

Можно попробовать добавить
Код:

lib.localmenu.10.allStdWrap.insertData = 1

Alex Podusov 13.04.2012 23:04

Прошу прощения, немного не дописал...
если в первом блоке пишу field = title, а для [treeLevel = 0] пишу field = subtitle - всегда показывает только значение поля title, и для внутренних, и для корневой страницы
а если для внутренних пишу value = внутренние а в [treeLevel = 0] пишу value = главная - то в этом случае да, все нормально, для внутренних страниц в этом месте пишет "внутренние", а для корневой - "главная".
Может я чего-то не понимаю...
вот конфиг:
Код:

lib.localmenu = COA
lib.localmenu {
  wrap = <ul>|</ul>
  10 = TEXT
  10.value = Точка отсчета
  10.typolink.parameter.data = leveluid:0
  10.wrap = <li>|</li>
  20 = HMENU
  20 {
  1 = TMENU
  1 {
    NO {
        linkWrap = <li>|</li>
      }
    ACT = 1
    ACT {
        linkWrap = <li>|</li>
        ATagParams = class="active"
      }
    }
  }
 }


[treeLevel = 0]
lib.localmenu = COA
lib.localmenu {
  wrap = <ul>|</ul>
  10 = TEXT
  10.value = Точка отсчета
  10.typolink.parameter.data = leveluid:0
  10.wrap = <li>|</li>
  10.typolink.ATagParams = class="active"
  20 = HMENU
  20 {
  1 = TMENU
  1 {
    NO {
        linkWrap = <li>|</li>
      }
    ACT = 1
    ACT {
        linkWrap = <li>|</li>
      }
    }
  }
}
[end]


# Lib's
lib.imgtitle = TEXT
lib.imgtitle.value = Территория творчества

lib.searshform = TEXT
lib.searshform.value = ФОРМА

lib.mytitle = TEXT
lib.mytitle.field = title

lib.copiright = HTML
lib.copiright.value = &copy; 2009-2012, Сергиев Посад

# Default PAGE object:
page = PAGE
page.10 = USER
page.10.userFunc = tx_templavoila_pi1->main_page

не стал заморачиваться с полем title в менюшке - поставил value, надо будет - не сложно и в конфиге поменять. Но настала другая пробдема.
lib.imgtitle, lib.searshform и lib.copiright прекрасно выводят свои значения.
А вот lib.mytitle - ну ни в какую не хочет!!! lib.mytitle - без ошибки, скопировал из разметки.

-=UncleByte=- 14.04.2012 09:56

А если в случае с field для начала написать 10.field > и только потом присвоить 10.field = subtitle?

Alex Podusov 14.04.2012 13:33

Цитата:

Сообщение от -=UncleByte=- (Сообщение 33567)
А если в случае с field для начала написать 10.field > и только потом присвоить 10.field = subtitle?

хех, пробовал и такой вариант - не выходит каменный цветок. Я вот думаю, может собака зарыта под тем, что для корневой страницы один и тот же объект указывается два раза... Хотя это же конфиг, вроде бы для одних и тех же параметров более ранние значения затираются более поздними. Однако есть у меня такая мысль, что тот же конфиг берется, и построчно выполняется? тогда не создаются ли два COA для корневой страницы?
Но с этим я потом поэкспериментирую. Это не так важно - заменил вывод из nav_title ручным вводом.
Вот такая ситуевина:
Код:

lib.mytitle = TEXT
lib.mytitle.field = title

не хочет ничего выводить, и всё тут! в том, что область разметки работает, меня убеждает такое действо:
Код:

lib.mytitle = TEXT
lib.mytitle.value = Заголовок 1

выводит в нужном месте "Заголовок 1". Вот в чем может быть загвоздка? Что я упустил из виду? В шаблоне из включений только CSS Styled Content
Вот что пишет про это поле темплавуаля для DS:
Цитата:

Заголовк страницы (field_title)

"Укажите блок заголовка"

введенное/вычисленное значение будет приведено к целому
введенное/вычисленное значение будет передано в объект html [код HTML будет отображен как есть]
введенное/вычисленное значение будет помещено в обертку

Преднастройка для элемента:
TypoScript Object Path
Позиционирование столбцов:
Normal [0]
TypoScript:

будет использована структура TS lib.mytitle, определенная внутри элемента <TypoScriptObjPath>
и для ТО
Цитата:

Локальная обработка XML:

ERROR: The input content failed XML parsing:

93 bytes

The element has no children!
Используется в: Используется в 1 элементах

Alex Podusov 16.04.2012 15:20

Ха!
Путем многочасовых перекуров и метода ненаучного тыка вывел, что в моем случае почему-то конструкция
Код:

lib.mytitle = TEXT
lib.mytitle.field = title

не работает в принципе. Рабочей оказалась только конструкция
Код:

lib.mytitle = TEXT
lib.mytitle.data = page:title

Это касается любых полей и данных, которые я пытался вытащить подобным образом. При этом: в этом конфиге
Код:

lib.localmenu = COA
lib.localmenu {
  wrap = <ul>|</ul>
  10 = TEXT
  10.value = Точка отсчета
  10.typolink.parameter.data = leveluid:0
  10.wrap = <li>|</li>
.............

в таком виде выводит указанный текст. Однако если я пишу
Код:

10.field = какое_нибудь_поле
какое бы я поле ни указал для вывода - выводит ВСЕГДА заголовок страницы. И только 10.data = page:nav_title - дало желаемый результат.
Может кто подсказать, в чем дело, что я не могу получить значение поля обычным путем, как делал это ранее?
И почему в одном месте .field = ничего не выводит в любом случае, а в COA выводит, хоть и совсем не то?


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

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