Как включить ссылки на переводы в карту сайта HMENU? - PullRequest
0 голосов
/ 16 ноября 2018

Я хотел бы создать карту сайта с помощью 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
}

Это почти работает, но, к сожалению, ссылки будут также генерироваться для недоступных переводов.

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

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

2.if.isTrue.numRows {
    table = pages_language_overlay
    select {
        languageField = 0
        where = sys_language_uid = 1
        pidInList.field = uid
    }
}

Примечание: languageField предназначено для выбора поля языка, нам нужно отключить, чтобы установить поле sys_language_uid в предложении where. Для отключения languageField нам нужно установить languageField = 0. Проверьте больше информации здесь .

0 голосов
/ 16 ноября 2018

Как вы уже сказали: вы генерируете ссылки для страниц, на которых нет перевода.
Но у вас есть возможность использовать условия.

Добавьте 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
    }
}
...