【问题标题】:Enable sliding for page resources with Fluid Powered TYPO3 vhs使用 Fluid Powered TYPO3 vhs 为页面资源启用滑动
【发布时间】:2014-08-21 11:22:00
【问题描述】:

大家好,

我已经配置了我的页面模板,以便我可以创建 FAL 关系。我能够读取当前页面的数据并吐出图像。

但我真正想要的是我可以向上滑动 - 如果当前页面没有 FAL 关系,那么我想在父页面中查找图像 - 如果父页面本身没有图片,则查看父页面FAL 关系(等等 - 直到我在根页面)。

阅读文档后,内容可能会出现这样的情况,但我找不到任何提示如何处理页面资源。

希望有人能帮忙

马库斯

【问题讨论】:

    标签: typo3 fedext


    【解决方案1】:

    您可以将 vhs viewhelper v:page.resource 与 slide 参数结合使用,从 vhs 版本 2.3.3 开始支持。

    {namespace v=FluidTYPO3\Vhs\ViewHelpers}
    
    <v:page.resources.fal table="pages" field="media" uid="{page.uid}" as="images" slide="-1" >
      <f:for each="{images}" as="image">
        <f:image src="{image.url}" alt="{image.alternative} {image.name}" title="{image.title}" />
      </f:for>
    </v:page.resources.fal>
    

    第一个元素的内联语法示例

    <v:resource.image identifier="{v:page.resources.fal(field: 'media', uid: '{page.uid}' slide:'-1') -> v:iterator.extract(key: 'id') -> v:iterator.first()}" treatIdAsReference="1" maxWidth="1500"/>
    

    【讨论】:

      【解决方案2】:

      VHS ViewHelper 无法做到这一点,因为 Resource / Record / FalViewHelper 不像 Content / GetViewHelper 那样支持内容滑动。你可以做什么:

      使用您的解决方案编写功能请求或拉取请求。

      或

      编写您自己的 ViewHelper。

      或

      使用好旧(或坏?)的排版:

      lib.slider = FILES
      lib.slider {
          references {
              data = levelmedia:-1, slide
          }
          renderObj = COA
          renderObj {
              10 = IMAGE
              10 {
                  file.import.data = file:current:publicUrl
                  file.width = 960
                  titleText.data = file:current:title
                  wrap = <li>|</li>
              }
          }
          stdWrap.wrap = <ul>|</ul>
      }
      

      并在您的模板中使用它,例如:

      <f:cObject typoscriptObjectPath="lib.slider" />
      

      【讨论】:

        【解决方案3】:

        对于TYPO3 8.7,您必须使用 TypoScript,vhs 和 v:page.resources.fal 不再有效(issue) - 就我而言。请参阅上面 N1ck 的示例。

        我使用带有来自页面属性(媒体/资源)的图像的子页面站点地图。

        流体:

        <f:if condition="{menu}">
            <ul class="ce-menu ce-menu-1">
                <f:for each="{menu}" as="page">
                    <li>
                        <a href="{page.link}"{f:if(condition: page.target, then: ' target="{page.target}"')} title="{page.title}">
                            <f:format.raw>{page.title}</f:format.raw>
                            <f:cObject typoscriptObjectPath="lib.mediaResources" data="{uid:'{page.data.uid}'}" />
                        </a>
                    </li>
                </f:for>
            </ul>
        </f:if>
        

        打字稿:

        lib.mediaResources = FILES
        lib.mediaResources {
            references {
              table = pages
              #Seiten-ID ubergabe
              uid.dataWrap= {field:uid}
              fieldName = media
            }
            renderObj = IMAGE
            renderObj {
              file.width = 50c
              file.height = 50c
              file.import.data = file:current:uid
              file.crop.data = file:current:crop
              file.treatIdAsReference = 1
              altText.data = file:current:title
              params = class="ce-menu-1-image"
              wrap = |
            }
        }
        

        完美运行,无需 vhs 扩展。使用 FLUID 的解决方案会很好。

        【讨论】:

          猜你喜欢
          • 2015-04-14
          • 2015-05-29
          • 2015-04-06
          • 1970-01-01
          • 2012-01-04
          • 2015-04-20
          • 2013-09-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多