Почему выпадающее меню имеет эту проблему упаковки? - PullRequest
0 голосов
/ 07 октября 2018

В моем выпадающем меню есть небольшая ошибка: группа li должна быть заключена в ul, но каждый li теперь имеет ul.

Typoscript is:

subparts.BREADCRUMBNAV-INTERACTIVE1 = HMENU
subparts.BREADCRUMBNAV-INTERACTIVE1.special = directory
subparts.BREADCRUMBNAV-INTERACTIVE1.special.value.data = leveluid:1
subparts.BREADCRUMBNAV-INTERACTIVE1.wrap = <div class="breadcrumb-nav1">|</div>
subparts.BREADCRUMBNAV-INTERACTIVE1.1 = TMENU
subparts.BREADCRUMBNAV-INTERACTIVE1.1 {
  expAll = 1
  noBlur = 1   
  NO.wrapItemAndSub = <ul class="dropdown">|</ul>
  NO.allWrap = <li class="dropdown-item1">|</li>
  ACT = 1
  ACT.allWrap = |
  ACT.ATagParams = class="btn btn-secondary clickme1" style="order:-1;"
} 

Вывод:

<div class="breadcrumb-nav1">

  <a href="frances.html" class="btn btn-secondary clickme1" style="order:-1;">Francés</a>

  <ul class="dropdown">
    <li class="dropdown-item1"><a href="ingles.html">Inglés</a></li>
  </ul>

  <ul class="dropdown">
    <li class="dropdown-item1"><a href="aleman.html">Alemán</a></li>
  </ul>

  <ul class="dropdown">
    <li class="dropdown-item1"><a href="italiano.html">Italiano</a></li>
  </ul>

</div>

Но вывод должен быть:

<div class="breadcrumb-nav1">

  <a href="frances.html" class="btn btn-secondary clickme1" style="order:-1;">Francés</a>

  <ul class="dropdown">
    <li class="dropdown-item1"><a href="ingles.html">Inglés</a></li>
    <li class="dropdown-item1"><a href="aleman.html">Alemán</a></li>
    <li class="dropdown-item1"><a href="italiano.html">Italiano</a></li>
  </ul>

</div>

Ответы [ 2 ]

0 голосов
/ 07 октября 2018

Чтобы достичь желаемой структуры полностью, TypoScript должен отличаться от моего первого ответа и быть более сложным.
В настоящее время невозможно создать ссылку с функцией typolink и проверитьactive -состояние.Поэтому ниже я создаю все меню как COA и для выделенной активной ссылки один HMENU, а также HMENU для списка неактивных элементов.

subparts.BREADCRUMBNAV-INTERACTIVE1 = COA
subparts.BREADCRUMBNAV-INTERACTIVE1 {
    wrap = <div class="breadcrumb-nav1">|</div>
    10 = HMENU
    10 {
        special = directory
        special.value.data = leveluid:1
        1 = TMENU
        1 {
            expAll = 1
            noBlur = 1 
            NO = 1
            NO.doNotShowLink = 1
            ACT = 1
            ACT.ATagParams = class="btn btn-secondary clickme1" style="order:-1;"
        }
    }
    20 = HMENU
    20 {
        special = directory
        special.value.data = leveluid:1
        wrap = <ul class="dropdown">|</ul>
        1 = TMENU
        1 {
            expAll = 1
            noBlur = 1 
            NO.linkWrap = <li class="dropdown-item1">|</li>
            ACT = 1
            ACT.doNotShowLink = 1
        }
    }
}

ПОСЛЕ РЕДАКТИРОВАНИЯ
... сейчас это проверено, тем не менее, дайте мне знать, если что-то не работает, как ожидалось.

0 голосов
/ 07 октября 2018

Это обходной путь или более простой ответ, тем не менее, он может быть полезен в некоторых случаях.Чтобы найти решение, которое на 100% соответствует вопросу, посмотрите мой второй ответ на этой странице.
Относительно переноса вашей задачи довольно сложно, но вместо решения вашей проблемы на уровне TypoScript, в первую очередь, я думаю, что она решена.уже на уровне CSS.
Таким образом, вам никогда не понадобится нужная структура, но вы можете положиться на свойство CSS order, чтобы получить текущий язык, показанный вверху.
Подробно это означает, что ваше менюструктура может выглядеть следующим образом:

<div class="breadcrumb-nav1">
    <ul class="dropdown">
        <li class="dropdown-item1"><a href="ingles.html">Inglés</a></li>
        <li class="btn btn-secondary clickme1" style="order:-1;"><a href="frances.html" >Francés</a></li>
        <li class="dropdown-item1"><a href="aleman.html">Alemán</a></li>
        <li class="dropdown-item1"><a href="italiano.html">Italiano</a></li>
    </ul>
</div>

Остальное - простая задача, и вам никогда не придется слишком много думать о TypoScript:

subparts.BREADCRUMBNAV-INTERACTIVE1 = HMENU
subparts.BREADCRUMBNAV-INTERACTIVE1.special = directory
subparts.BREADCRUMBNAV-INTERACTIVE1.special.value.data = leveluid:1
subparts.BREADCRUMBNAV-INTERACTIVE1.wrap = <div class="breadcrumb-nav1">|</div>
subparts.BREADCRUMBNAV-INTERACTIVE1.1 = TMENU
subparts.BREADCRUMBNAV-INTERACTIVE1.1 {
  expAll = 1
  noBlur = 1   
  wrap = <ul class="dropdown">|</ul>
  NO.linkWrap = <li class="dropdown-item1">|</li>
  ACT = 1
  ACT.linkWrap = <li class="btn btn-secondary clickme1" style="order:-1;">|</li>
} 

Вы все еще можете упростить его сейчас, какэто, результат должен быть таким же, как указано выше:

subparts.BREADCRUMBNAV-INTERACTIVE1 = HMENU
subparts.BREADCRUMBNAV-INTERACTIVE1.special = directory
subparts.BREADCRUMBNAV-INTERACTIVE1.special.value.data = leveluid:1
subparts.BREADCRUMBNAV-INTERACTIVE1.wrap = <div class="breadcrumb-nav1"><ul class="dropdown">|</ul></div>
subparts.BREADCRUMBNAV-INTERACTIVE1.1 = TMENU
subparts.BREADCRUMBNAV-INTERACTIVE1.1 {
  expAll = 1
  noBlur = 1   
  NO.linkWrap = <li class="dropdown-item1">|</li>
  ACT = 1
  ACT.linkWrap = <li class="btn btn-secondary clickme1" style="order:-1;">|</li>
} 

Для всех оберток, которые вы можете использовать для каждой ссылки, здесь по-прежнему ссылка , хотя она, вероятно, вам никогда не понадобится.

Еще одна вещь, которую я заметил, это то, что вы, кажется, используете каталоги для разделения языков.Если вы используете подход для использования переводов на каждой странице, вы можете использовать общее языковое меню TYPO3 , которое описано здесь , в общем случае, вероятно, вам придется заменить только ключевое слово directory на language.

...