2016-07-15 14 views
0

にすべてのリンクを入力します。Typoscript: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に既にクエリー文字列があるかどうかに応じて、構文が異なります。ありがとう!

答えて

0

興味のある方は、Typoscriptのreplacement関数を使用して私にとってうまくいきました。お役に立てれば。

lib.parseFunc_RTE.tags.link { 

    # Start by "replacing" the whole URL by itself + our string 
    # For example: http://domain.com/?id=100 becomes http://domain.com/?id=100?flavor=lemon 
    # For example: http://domain.com/index.html becomes http://domain.com/index.html?flavor=lemon 

    typolink.parameter.stdWrap.replacement.10 { 

     #this matches the whole URL 
     search = #^(.*)$#i 

     # this replaces it with itself (${1}) + our string 
     replace =${1}?flavor=lemon 

     # in this case we want to use regular expressions 
     useRegExp = 1 
    } 

    # After the first replacement is done, we simply replace 
    # the first '?' by '?' and all others by '&' 
    # the use of Option Split allow this 
    typolink.parameter.stdWrap.replacement.20 { 
     search = ? 
     replace = ? || & || & 
     useOptionSplitReplace = 1 
    } 

} 
1

"?"文字は既にURLにあり、 "?" 「&」と入力し、キーと値のペアを追加します。 CASE object available in the TypoScript Referenceがあり、目的に合わせて変更できる例があります。解決策になる

+0

ありがとうアンドリュー。残念ながら、私は "typolinkが文字Xを含んでいる"のテスト方法を知らないので、これを達成する方法を理解していません。私が見たすべての例は、正確な文字列の一致を使用しているようです。あなたがコード例を提供できるなら、それはすばらしいでしょう。ありがとう! – Kerans

1

:それは&を開始するために持っていることを

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は古くなっているのであなたはわずか数ファイル

<?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でカスタム拡張を作成する必要があります(7.3+おそらく)TYPO3 8.xのを使用している場合:それはいくつかを持つことができますので、私は、実際のP​​HPコードをテストしていませんエラー。問題がある場合は、$finalTagParts変数のデバッグを試してください。

+0

申し訳ありませんが、これは動作していないようです。 RTEに入力されたリンクでは何も変更されません。たとえば、http://domain.com/blah**はまったく同じですが、** http://domain.com/blah?id = 200 **もまったく同じです。私のパラメータは決して追加されません。ご検討いただきありがとうございます。 – Kerans

+0

additionalParamsを使用したソリューションは内部リンクでのみ機能するため、外部のものに対処する方法の詳細なコメントを追加しました。私はそれがTypoScriptだけでアーカイブできるということは肯定的ですが、 'userFunc'の使用にはかなり時間がかかります。 –

+0

私の質問にお答えいただきありがとうございます。私は、Typoscriptが文字の文字列をテストし、それに応じて行動するクリーンでシンプルな方法を提供していないことに少しは困惑しています。 – Kerans

関連する問題