1

ユーザーが RTE に入力したすべてのリンクにパラメーターを追加したいと考えています。

私の最初のアイデアはこれを行うことでした:

lib.parseFunc_RTE.tags.link {
    typolink.parameter.append = TEXT
    typolink.parameter.append.value = ?flavor=lemon
}

たとえば、次のようになります。

http://domain.com/mypage.php

になる

http://domain.com/mypage.php?flavor=lemon

リンクにクエリ文字列が含まれてない限り、これは素晴らしいことです。その場合、明らかに URL に 2 つの疑問符が表示されます。

たとえば、次のようになります。

http://domain.com/prefs.php?id=1234&unit=moon&qty=300

になる

http://domain.com/prefs.php?id=1234&unit=moon&qty=300?flavor=lemon

URL に既にクエリ文字列があるかどうかに応じて、正しい構文でパラメーターを追加する方法はありますか? ありがとう!

4

3 に答える 3

2

それが解決策です:

lib.parseFunc_RTE.tags.link {
    typolink.additionalParams = &flavor=lemon
}

& で始まる必要があることに注意してください。typo3 は有効なリンクを生成します。リンク内のパラメーターも、適切に構成されている場合、realURL で解析されます。

編集: 上記の解決策は、ドキュメントhttps://docs.typo3.org/typo3cms/TyposcriptReference/Functions/Typolink/Index.htmlで説明されているように、内部リンクに対してのみ機能します。

私が見るすべてのリンクで機能する唯一の解決策は、userFunc

lib.parseFunc_RTE.tags.link {
    typolink.userFunc = user_addAdditionalParams
}

次に、php スクリプトを作成し、次のように TS に含める必要があります。

includeLibs.rteScript = path/to/yourScript.php

includeLibs は古いので、TYPO3 8.x (およびおそらく 7.3+) を使用している場合は、いくつかのファイルでカスタム拡張を作成する必要があることに注意してください。

<?php

function user_addAdditionalParams($finalTagParts) {
    // modify the url in $finalTagParts['url']
    // $finalTagParts['TYPE'] is an indication of link-kind: mailto, url, file, page, you can use it to check if you need to append the new params
    switch ($finalTagParts['TYPE']) {
        case 'url':
        case 'file':
            $parts = explode('#', $finalTagParts['url']);
            $finalTagParts['url'] = $parts[0] 
                . (strpos($parts[0], '?') === false ? '?' : '&') 
                . 'newParam=test&newParam=test2'
                . ($parts[1] ? '#' . $parts[1] : '');
        break;
    }
    return '<a href="' . $finalTagParts['url'] . '"' .
           $finalTagParts['targetParams'] .
           $finalTagParts['aTagParams'] . '>'
}

PS: 実際の php コードをテストしていないため、エラーが発生する可能性があります。問題がある場合は、$finalTagParts変数をデバッグしてみてください

于 2016-07-26T12:14:06.013 に答える
1

"?" かどうかをテストします。文字が既に URL に含まれており、「?」のいずれかを追加します。または「&」、次にキーと値のペアを追加します。TypoScript Reference で利用可能な CASE オブジェクトがあり、目的に合わせて変更できる例があります。

于 2016-07-16T19:41:54.967 に答える