如何在 HMENU 站点地图中包含指向翻译的链接?
How to include links to translations in HMENU sitemap?
我想通过 TypoScript 创建站点地图,其中还包含所有可用翻译的链接。
不幸的是,special=language 功能仅适用于当前页面,不适用于多个页面。
将常规 HMENU 与其项目中的 special=language 菜单结合起来将是完美的。
我的做法:
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
}
这几乎可以工作,但不幸的是,还会为不可用的翻译生成链接。
如您所说:您为不存在翻译的页面生成链接。
但是您可以选择使用条件。
添加 stdWrap.if
并检查该页面是否存在翻译:
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
}
}
您可以使用拼写错误 select 查询来检查翻译的页面是否存在:
2.if.isTrue.numRows {
table = pages_language_overlay
select {
languageField = 0
where = sys_language_uid = 1
pidInList.field = uid
}
}
注意:languageField
用于select语言字段,我们需要禁用以便在where子句中设置sys_language_uid
字段。要禁用 languageField
,我们需要设置 languageField = 0
。查看更多信息 here.
我想通过 TypoScript 创建站点地图,其中还包含所有可用翻译的链接。 不幸的是,special=language 功能仅适用于当前页面,不适用于多个页面。 将常规 HMENU 与其项目中的 special=language 菜单结合起来将是完美的。
我的做法:
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
}
这几乎可以工作,但不幸的是,还会为不可用的翻译生成链接。
如您所说:您为不存在翻译的页面生成链接。
但是您可以选择使用条件。
添加 stdWrap.if
并检查该页面是否存在翻译:
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
}
}
您可以使用拼写错误 select 查询来检查翻译的页面是否存在:
2.if.isTrue.numRows {
table = pages_language_overlay
select {
languageField = 0
where = sys_language_uid = 1
pidInList.field = uid
}
}
注意:languageField
用于select语言字段,我们需要禁用以便在where子句中设置sys_language_uid
字段。要禁用 languageField
,我们需要设置 languageField = 0
。查看更多信息 here.