typo3: социальные иконки в гибком шаблоне с опечаткой

Я начну с фрагментов, которые я пытаюсь заставить работать ...

Я определяю социальные аккаунты в constants.ts:

myExtension.configuration {

    socials {
        # cat=myExtension/socials/05; type=string; label=Facebook account:
        facebook = facebook.com/
        # cat=myExtension/socials/10; type=string; label=Twitter account:
        twitter = twitter.com/
        # cat=myExtension/socials/15; type=string; label=Google Plus account:
        googlePlus = plus.google.com/
        # cat=myExtension/socials/20; type=string; label=Youtube account:
        youtube = youtube.com/
    }
}

Я объявляю переменную в page.ts

page = PAGE
page {
    # Page Main template
    10 = FLUIDTEMPLATE
    10 {
        file = EXT:myExtension/Resources/Private/Templates/Main.html
        variables {    
            socials = TEXT
            socials.value = {$myExtension.configuration.socials}
        }
    }
}

затем я пытаюсь использовать его в шаблоне:

<f:render section="socials" />


<f:section name="socials">
  <ul class="list-inline hidden-print">
    <f:for each="{socials}" as="social" key="icon">
      <li>
        <a href="{social}">
          <i class="fa fa-{icon} fa-fw">
        </a>
      </li>
    </f:for>
  </ul>
</f:section>

Я еще не очень хорошо разбираюсь в опечатке 3, так что это может быть очень просто, или вопрос очень глупый ... Я даже не понял, как правильно отлаживать (чтобы я мог прежде всего выяснить, как быть уверенным в переменный массив 'socials') ...


person webMan    schedule 03.07.2016    source источник
comment
По большей части выглядит хорошо. Единственная проблема, если я не ошибаюсь, нельзя распространить весь массив от констант на установку. Попробуйте определить все четыре службы в настройке и поочередно прочтите URL-адреса из констант.   -  person j4k3    schedule 04.07.2016
comment
Думаю, вы правы, я на шаг впереди ... спасибо   -  person webMan    schedule 04.07.2016


Ответы (1)


Сначала вам нужно получить ваши константы одну за другой (как предлагает j4k3) - или вообще пропустить эту часть и напрямую определить значение следующим образом:

page = PAGE
page {
    # Page Main template
    10 = FLUIDTEMPLATE
    10 {
        file = EXT:myExtension/Resources/Private/Templates/Main.html
        variables {    
            facebook = TEXT
            facebook.value = facebook.com/
            twitter = TEXT
            twitter.value = twitter.com/
            googlePlus = TEXT
            googlePlus.value = plus.google.com/
            youtube = TEXT
            youtube.value = youtube.com/
        }
    }
}

Затем, чтобы избежать дублирования кода, вы можете получить доступ к значениям, сначала сопоставив их на лету, а затем выполняя итерацию следующим образом:

<f:alias map="{socials: {facebook: facebook, twitter: twitter, googlePlus: googlePlus, youtube: youtube}}">
  <f:render section="socials" arguments="{socials: socials}"/>
</f:alias>



<f:section name="socials">
  <ul class="list-inline hidden-print">
    <f:for each="{socials}" as="social" key="icon">
      <li>
        <a href="{social}">
          <i class="fa fa-{icon} fa-fw">
        </a>
      </li>
    </f:for>
  </ul>
</f:section>
person sven    schedule 04.07.2016
comment
спасибо за ваше время, я на шаг впереди, но все равно что-то не работает ... я использовал средство просмотра, чтобы сформировать ссылку, и я объявил переменные отдельно ... 'code' facebook = TEXT facebook.value = {$ ionizer.configuration.socials.facebook}, но переменная {social} не передает uri ... - person webMan; 04.07.2016
comment
спасибо за ваше время, я на шаг впереди, но все равно что-то не работает ... я использовал средство просмотра, чтобы сформировать ссылку, и я объявил переменные отдельно ... `facebook = TEXT facebook.value = {$ ionizer.configuration.socials.facebook} `но переменная {social} не передает uri ... - person webMan; 04.07.2016
comment
ps: когда я использую {facebook} в шаблоне жидкости, я получаю uri, определенный в константе ... только для вашей информации ... - person webMan; 05.07.2016
comment
Что вы получите, если распечатаете массив социальных сетей с помощью ‹f: debug› {socials} ‹/ f: debug› внутри псевдонима ViewHelper? - person sven; 05.07.2016
comment
он находится в гибком шаблоне ... массив (5 элементов) facebook = ›NULL twitter =› NULL google-plus = ›NULL youtube-play =› NULL stack-overflow = ›NULL - person webMan; 06.07.2016
comment
если я показываю все это напрямую, а не ссылаюсь на раздел и помещаю его в раздел, он работает ... проблема в том, что мне нужно поместить его в различные операторы if then, это не чистое кодирование таким образом ... - person webMan; 06.07.2016
comment
спасибо за внимание, это работает для вас? Проверено с использованием переменных вне раздела, и это работает ... внутри раздела переменные остаются нулевыми - person webMan; 06.07.2016
comment
Вам нужно сначала сопоставить массив, а затем передать его частичному. Смотрите мой обновленный ответ. Извините, я пропустил это раньше. - person sven; 06.07.2016
comment
Спасибо !! не извиняйтесь, вы очень помогли - person webMan; 06.07.2016