Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typo3 如何在网站地图中包含翻译链接?_Typo3_Typoscript_Typo3 8.x - Fatal编程技术网

Typo3 如何在网站地图中包含翻译链接?

Typo3 如何在网站地图中包含翻译链接?,typo3,typoscript,typo3-8.x,Typo3,Typoscript,Typo3 8.x,我想创建一个网站地图通过打字脚本,其中也包括链接到所有可用的翻译。 不幸的是,special=language功能只适用于当前页面,而不适用于多个页面。 一个普通的Humenu和其项目中的special=语言菜单的组合将是完美的 我的做法: lib.menu = HMENU lib.menu { entryLevel = 0 1 = TMENU 1{ expAll = 1 NO{ doNotShowLink = 1

我想创建一个网站地图通过打字脚本,其中也包括链接到所有可用的翻译。 不幸的是,special=language功能只适用于当前页面,而不适用于多个页面。 一个普通的Humenu和其项目中的special=语言菜单的组合将是完美的

我的做法:

lib.menu = HMENU
lib.menu {
    entryLevel = 0
    1 = TMENU
    1{
        expAll = 1
        NO{
            doNotShowLink = 1
            allWrap{
                postCObject = COA
                postCObject{
                    stdWrap.wrap = <url>|</url>
                    1 = TEXT
                    1{
                        typolink.parameter.field=uid
                        typolink.returnLast = url
                        wrap = <loc>|</loc>
                    }

                    2 < .1
                    2.typolink.additionalParams = &L=1
                    2.wrap = <xhtml:link rel="alternate" hreflang="en" href="|" />
                }
            }
        }
    }
    2 < .1
    3 < .1
}
lib.menu=humenu
自由菜单{
entryLevel=0
1=t菜单
1{
expAll=1
没有{
doNotShowLink=1
全包装{
PostObject=COA
PostObject{
stdWrap.wrap=|
1=文本
1{
typlink.parameter.field=uid
typolink.returnLast=url
包裹=|
}
2 < .1
2.typlink.additionalParams=&L=1
2.2.2
}
}
}
}
2 < .1
3 < .1
}

这几乎是可行的,但不幸的是,也会为不可用的翻译生成链接。

正如您所说:您为不存在翻译的页面生成链接。
但是您可以选择使用条件

添加一个
stdWrap。如果
并检查该页面是否存在翻译:

postCObject {

    : as above

    2.if.isTrue.cObject = CONTENT
    2.if.isTrue.cObject {
        table = pages_languages_overlay
        select {
           # get records in current page
           pidInList.field = uid
           # ignore current language
           languageField = 0
           # build individual selection on language 1
           where = sys_language = 1
           selectFields = uid
        }
        renderObj = TEXT
        renderObj.field = uid
    }
}

您可以使用打字脚本选择查询检查翻译的页面是否存在:

2.if.isTrue.numRows {
    table = pages_language_overlay
    select {
        languageField = 0
        where = sys_language_uid = 1
        pidInList.field = uid
    }
}
注意:
languageField
用于选择语言字段,我们需要禁用以在where子句中设置
sys\u language\u uid
字段。要禁用
languageField
,我们需要设置
languageField=0
。查看更多信息