Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   Templavoila и меню (http://forum.typo3.ru/showthread.php?t=11731)

agravin 14.05.2015 14:01

Templavoila и меню
 
Добрый день. Прошу помощи у форумчан. Уже несколько дней бьюсь с наверное не сложной задачей, но никак не могу одолеть. Прикручивая html-шаблон к движку, с помощью Templavoila, написал такой скрипт:
Код:

lib.menu = HMENU
lib.menu.1 = TMENU
lib.menu.1 {
  expAll = 1
  noBlur = 1
  wrap = |
  NO {       
        allWrap = <li>|</li>   
  }
  IFSUB = 1
  IFSUB {
  allWrap = <li class="with_menu">|<ul class="sub_menu">
  }
    ACT = 1
    ACT.allWrap = <li class="active"> |
}

lib.menu.2 = TMENU
  lib.menu.2 {
  expAll = 1
  noBlur = 1
  wrap = |</ul></li>
  NO {
wrapItemAndSub = <li>|</li> 
  }
 
  }

Исходный код, который показывает браузер, соответствует тому, который написал верстальщик:
Код:

<ul>
        <li class="with_menu"><a href="/">Раздел 1</a>
            <ul class="sub_menu">
                <li><a href="/">Подраздел 1</a></li>
            <li><a href="/">Подраздел 2</a></li>
        </ul>
    </li>
    <li><a href="/">Раздел 2</a></li>
    <li><a href="/">Раздел 3</a></li>
    <li><a href="/">Раздел 4</a></li>
    <li><a href="/">Раздел 5</a></li>
</ul>

А стили поехали. Я так подозреваю, что допустил ошибку в скрипте, но парсер Templavoila ее пропустил и доделывает меню, но как-то криво. Только ошибки я и не могу найти :mad:

Николай Сипко 15.05.2015 00:01

Стандартный код трехуровневого меню TYPO3:
===========

lib.menu = HMENU
lib.menu {
wrap = <div class="menu menu_ul">|</div>
entryLevel = 0
1 = TMENU
1 {
wrap = <div class="menu_1"><ul>|</ul></div>
target = _top
NO {
wrapItemAndSub = <li>|</li>
}
ACT < .NO
ACT = 1
CUR < .NO
CUR = 1
CUR {
allWrap = <div class="menu_act">|</div>
}
}
2 = TMENU
2 {
expAll = 1
wrap = <div class="menu_2"><ul>|</ul></div>
target = _top
NO {
wrapItemAndSub = <li>|</li>
}
ACT < .NO
ACT = 1
CUR < .NO
CUR = 1
CUR {
allWrap = <div class="menu_act">|</div>
}
}
3 = TMENU
3 {
expAll = 1
wrap = <div class="menu_3"><ul>|</ul></div>
target = _top
NO {
wrapItemAndSub = <li>|</li>
}
ACT < .NO
ACT = 1
CUR < .NO
CUR = 1
CUR {
allWrap = <div class="menu_act">|</div>
}
}
}

agravin 15.05.2015 18:28

Николай, спасибо за ответ.

Ни один из известных мне скриптов меню не помог. Проблема оказалась в том, что парсер выдает исходный код в одну строку, что каким-то образом влияет на верстку. Разлепить теги пока не удалось. Пользовался
Цитата:

Например так работает
wrap(
<li>
|
</li>
)
от Валерия Романчева и
Цитата:

Раздел Установка - пункт 4 All Configuration. Там определи значение для [FE][tidy] = 1
от Полтиников.

В принципе можно вставить в код <wbr> , но хочется найти более красивое решение.

Николай Сипко 15.05.2015 18:56

Если речь идет о templavoila, то исходный код меню вставляют в setup.ts, например:
=======
config.htmlTag_langKey = ru
config.no_cache = 0
config.disablePrefixComment = 1

page = PAGE
page.typeNum = 0
page.10 = USER
page.10.userFunc = tx_templavoila_pi1->main_page

page.shortcutIcon = favicon.ico

page.includeCSS {
file = fileadmin/templates/ns.css
file.media = all
}
lib.menu = HMENU
lib.menu {
wrap = <div class="menu menu_ul">|</div>
entryLevel = 0
1 = TMENU
1 {
wrap = <div class="menu_1"><ul>|</ul></div>
target = _top
NO {
wrapItemAndSub = <li>|</li>
}
ACT < .NO
ACT = 1
CUR < .NO
CUR = 1
CUR {
allWrap = <div class="menu_act">|</div>
}
}
2 = TMENU
2 {
expAll = 1
wrap = <div class="menu_2"><ul>|</ul></div>
target = _top
NO {
wrapItemAndSub = <li>|</li>
}
ACT < .NO
ACT = 1
CUR < .NO
CUR = 1
CUR {
allWrap = <div class="menu_act">|</div>
}
}
3 = TMENU
3 {
expAll = 1
wrap = <div class="menu_3"><ul>|</ul></div>
target = _top
NO {
wrapItemAndSub = <li>|</li>
}
ACT < .NO
ACT = 1
CUR < .NO
CUR = 1
CUR {
allWrap = <div class="menu_act">|</div>
}
}
}
=======
В templavoila при разметке html лишь указывают путь к этому объекту (lib.menu).

Или я что-то не так понял?

А вообще-то я тоже приверженец templavoila, но сейчас осваиваю FLUIDTEMPLATE и прихожу во все больший восторг. Кстати, примеры и кодов, и их применений можно найти на http://typo3buddy.com/home/

agravin 15.05.2015 19:38

Да, я делаю с Templavoila.

Практически решил задачу. Осталось только понять, как сделать правильно ACT и IFSUB. Оказалось, что пример приведенный Валерием работает, но для wrapItemAndSub, wrap и прочее, разный синтаксис. Сейчас пока так
Код:

lib.menu = HMENU
lib.menu.1 = TMENU
lib.menu.1 {
  expAll = 1
  noBlur = 1
  wrap = |
 NO.allStdWrap.noTrimWrap (
|
<li>|</li>
|

  IFSUB = 1
  IFSUB {
  allWrap = <li class="with_menu">|<ul class="sub_menu">
  allStdWrap.noTrimWrap (
|
|
|
)
  }
    ACT = 1
    ACT.allWrap = <li class="active"> | </li>
        allStdWrap.noTrimWrap (
|
|
|
)
}

lib.menu.2 = TMENU
  lib.menu.2 {
  expAll = 1
  noBlur = 1
  wrap = |</ul></li>
  NO.allStdWrap.noTrimWrap (
|
<li>|</li>
|

  }
 
  }

Как доделаю подразделы, выложу корректный код.

Николай Сипко 15.05.2015 22:16

Цитата:

Сообщение от agravin (Сообщение 39484)
Исходный код, который показывает браузер, соответствует тому, который написал верстальщик:
<ul>
<li class="with_menu"><a href="/">Раздел 1</a>
<ul class="sub_menu">
<li><a href="/">Подраздел 1</a></li>
<li><a href="/">Подраздел 2</a></li>
</ul>
</li>
<li><a href="/">Раздел 2</a></li>
<li><a href="/">Раздел 3</a></li>
<li><a href="/">Раздел 4</a></li>
<li><a href="/">Раздел 5</a></li>
</ul>

Если вы про такое меню http://nsf11.ru/index.php?id=1, то сделано оно на основе стандартного кода средствами css.
Или я что-то не понимаю?

agravin 15.05.2015 22:43

Если Вы посмотрите исходный код меню, в указанном Вами примере, то увидите, что его код идет одной строкой. Почему-то некоторые стили/скрипты этого иногда не любят и отображают меню криво. Как в моем случае. Именно для этого нужно разлепить теги, сделав их читаемыми.

Николай Сипко 15.05.2015 22:59

Вы первый человек, от которого я узнал, что TYPO3 код своего site-map отображает "криво".

Приятной работы!

agravin 15.05.2015 23:48

Я не говорил, что TYPO3 отображает криво. Я сказал, что отображает в одну строку (проглатывая пробелы и перенос строки). И это в редких случаях плохо.

Доделал скрипт (немного кривоват, но работает).

Можете вставить в свой сетап и посмотреть разницу в исходном коде браузера (Ctrl+U), до и после.
Код:

lib.menu = HMENU
lib.menu.1 = TMENU
lib.menu.1 {
  expAll = 1
  noBlur = 1
  wrap = |
 NO.allStdWrap.noTrimWrap (
|
<li>|</li>
|

  IFSUB = 1
  IFSUB {
  allWrap = <li class="with_menu">|<ul class="sub_menu">
  allStdWrap.noTrimWrap (
|
|
|
)
  }
  ACTIFSUB = 1
  ACTIFSUB {
  allWrap = <li class="active with_menu">|<ul class="sub_menu">
  allStdWrap.noTrimWrap (
|
|
|
)
  }
 
    ACT = 1
    ACT.allWrap = <li class="active"> | </li>
        allStdWrap.noTrimWrap (
|
|
|
)
}

lib.menu.2 = TMENU
  lib.menu.2 {
  expAll = 1
  noBlur = 1
  stdWrap.noTrimWrap (
|
|</ul></li>
|
)
  NO.allStdWrap.noTrimWrap (
|
<li>|</li>
|

}


Николай Сипко 16.05.2015 11:04

Вставил в свой сетап и посмотрел разницу в исходном коде браузера (Ctrl+U), до и после:

До
=======
<div id="menu" class="header"><div class="menu menu_ul"><div class="menu_1"><ul><li><a href="index.php?id=40" target="_top">Естествознание</a></li><li><div class="menu_act"><a href="index.php?id=1" target="_top">Вопросы</a></div><div class="menu_2"><ul><li><a href="index.php?id=2" target="_top">Внушения</a></li><li><a href="index.php?id=3" target="_top">Цель</a></li><li><a href="index.php?id=4" target="_top">Место</a></li><li><a href="index.php?id=5" target="_top">Тела</a></li><li><a href="index.php?id=6" target="_top">Вращения</a></li><li><a href="index.php?id=7" target="_top">Атомы</a></li><li><a href="index.php?id=8" target="_top">Зенон</a></li></ul></div></li><li><a href="index.php?id=9" target="_top">Светила</a></li><li><a href="index.php?id=17" target="_top">Моменты</a></li><li><a href="index.php?id=25" target="_top">Понятия</a></li><li><a href="index.php?id=33" target="_top">Идеи</a></li></ul></div></div></div>

После
=======
<div id="menu" class="header">
<li class="with_menu"><a href="index.php?id=40">Естествознание</a><ul class="sub_menu">
<li><a href="index.php?id=39">Администрация</a></li>
</ul></li>
<li class="active with_menu"><a href="index.php?id=1">Вопросы</a><ul class="sub_menu">
<li><a href="index.php?id=2">Внушения</a></li>
<li><a href="index.php?id=3">Цель</a></li>
<li><a href="index.php?id=4">Место</a></li>
<li><a href="index.php?id=5">Тела</a></li>
<li><a href="index.php?id=6">Вращения</a></li>
<li><a href="index.php?id=7">Атомы</a></li>
<li><a href="index.php?id=8">Зенон</a></li>
</ul></li>
<li class="with_menu"><a href="index.php?id=9">Светила</a><ul class="sub_menu">
<li><a href="index.php?id=10">Парадоксы</a></li>
<li><a href="index.php?id=11">Модели</a></li>
<li><a href="index.php?id=12">Маятники</a></li>
<li><a href="index.php?id=13">Аналеммы</a></li>
<li><a href="index.php?id=14">Мироздание</a></li>
<li><a href="index.php?id=15">Свет</a></li>
<li><a href="index.php?id=16">Человек</a></li>
</ul></li>
<li class="with_menu"><a href="index.php?id=17">Моменты</a><ul class="sub_menu">
<li><a href="index.php?id=18">Коперник</a></li>
<li><a href="index.php?id=19">Кеплер</a></li>
<li><a href="index.php?id=20">Галилей</a></li>
<li><a href="index.php?id=21">Ньютон</a></li>
<li><a href="index.php?id=22">Исчисление</a></li>
<li><a href="index.php?id=23">Гравитация</a></li>
<li><a href="index.php?id=24">Законы</a></li>
</ul></li>
<li class="with_menu"><a href="index.php?id=25">Понятия</a><ul class="sub_menu">
<li><a href="index.php?id=26">Кинетика</a></li>
<li><a href="index.php?id=27">Масса</a></li>
<li><a href="index.php?id=28">Энергия</a></li>
<li><a href="index.php?id=29">Начала</a></li>
<li><a href="index.php?id=30">Энтропия</a></li>
<li><a href="index.php?id=31">Материя</a></li>
<li><a href="index.php?id=32">Отношения</a></li>
</ul></li>
<li class="with_menu"><a href="index.php?id=33">Идеи</a><ul class="sub_menu">
<li><a href="index.php?id=34">Вымыслы</a></li>
<li><a href="index.php?id=35">Аналогии</a></li>
<li><a href="index.php?id=36">Кванты</a></li>
<li><a href="index.php?id=37">Излучения</a></li>
<li><a href="index.php?id=38">Движущее</a></li>
</ul></li>
</div>
=======

Поясните, пожалуйста, что это дает?

И, как "написал верстальщик:
Код:
<ul>
<li class="with_menu"><a href="/">Раздел 1</a>
<ul class="sub_menu">
<li><a href="/">Подраздел 1</a></li>
<li><a href="/">Подраздел 2</a></li>
</ul>
</li>
<li><a href="/">Раздел 2</a></li>
<li><a href="/">Раздел 3</a></li>
<li><a href="/">Раздел 4</a></li>
<li><a href="/">Раздел 5</a></li>
</ul>"

Задача "верстальщика" не решена.

Может проще тогда, не мурдствуя лукаво, повставлять везде элемент site-map и вперед к css типа:

.csc-sitemap li a{
text-decoration:none;
text-shadow: 1px 4px 3px rgba(0,0,0,0.2), 0px -5px 35px rgba(255,255,255,0.3);
}
.csc-sitemap a:hover {
color: #fff;
text-shadow:
-1px -1px 0 #000,
1px -1px 0 #000,
-1px 1px 0 #000,
1px 1px 0 #000,
1px 4px 3px rgba(0,0,0,0.2), 0px -5px 35px rgba(255,255,255,0.3);
}


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

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