ホーム › ドキュメント › TSリファレンス › 関数: › parseFunc:

5.14. parseFunc:

このオブジェクトは特別なtypoタグ、”makeLinks”関連、等のような要素のコンテンツを解析するのに使用される。

例:

この例は”bodytext”フィールドの内容を取り、makelinks関数を通して解析し、すべての<LINK>及び<TYPOLIST>タグを他のもので置き換える。

tt_content.text.default {
  20 = TEXT
  20.field = bodytext
  20.wrap = | <BR>
  20.brTag = <br>
  20.parseFunc {
    makelinks = 1
    makelinks.http.keep = path
    makelinks.http.extTarget = _blank
    makelinks.mailto.keep = path
    tags {
      link = TEXT
      link {
        current = 1
        typolink.extTarget = _blank
        typolink.target={$cLinkTagTarget}
        typolink.wrap = <B><FONT color=red>|</FONT></B>
        typolink.parameter.data = parameters : allParams
      }

      typolist < tt_content.bullets.default.20
      typolist.trim = 1
      typolist.field >
      typolist.current = 1
    }
  }
}
 

プロパティ:

データタイプ:

説明:

デフォルト:

externalBlocks

list of tagnames/+properties

これを使うとparseFunc に渡されたコンテンツをあらかじめ分割し、その結果特定のタグを持ったブロックの外側のコンテンツだけが解析される、といったことができる。

特別なプロパティ:

.[tagname] {

callRecursive = [boolean]; 設定されると、ブロックのコンテンツは再びparseFuncに導かれる。さもなければコンテンツはstdWrap以外の処理は通さず渡されるだけである(下記参照)

callRecursive.dontWrapSelf = [boolean]; 設定されると、ブロックのタグはparseFunc から戻されたコンテンツ辺りでラップされない。

callRecursive.alternativeWrap = オリジナルタグの代わりの代替ラッピング。

callRecursive.tagStdWrap =ブロックタグの ->stdWrap 処理。

stdWrap =ブロック全体の->stdWrap処理(callRecursiveが設定されたかどうかにかかわらず。)

stripNLprev = [boolean]; 前の外側のブロックの最後のlinebreakを取り除く

stripNLnext = [boolean]; 次の外側のブロックの最初のlinebreakを取り除く

stripNL = [boolean]: 上記2つの両方を行う。

 

HTMLtableCells = [boolean]; 設定された場合、コンテンツはテーブルになると思われ、すべてのテーブルのセルは横線が入る。

# 以下、デフォルトはすべてのセルで、1,2,3...は特定のcolsをオーバーライドする。

HTMLtableCells.[default/1/2/3/...] {

callRecursive = [boolean]; コンテンツは現在のparseFuncを通して解析される

stdWrap =セル内のコンテンツの ->stdWrap 処理

tagStdWrap = -> The <TD> タグは->stdWrapにより処理される

}

HTMLtableCells.addChr10BetweenParagraphs = [boolean]; 設定されると、すべての</P><P> の出現は、その間にchr(10)を挿入される

}

 

例:

この例は、本文内のテーブルとblockquotesが正しく処理されるように、正規の本文のコンテンツを分割するために使用される。Blockquotesは再び(再帰的に)parseFuncへ渡され、さらにその上部・下部の余白は0に設定される(したがって、明白な改行は見られない)

テーブルはオーバーライドされたセルのプロパティの数も表示される。

tt_content.text.20.parseFunc.externalBlocks {

  blockquote.callRecursive=1

  blockquote.callRecursive.tagStdWrap.HTMLparser = 1

  blockquote.callRecursive.tagStdWrap.HTMLparser {

    tags.blockquote.fixAttrib.style.list = margin-bottom:0;margin-top:0;

    tags.blockquote.fixAttrib.style.always=1

  }

  blockquote.stripNLprev=1

  blockquote.stripNLnext=1

 

  table.stripNL=1

  table.stdWrap.HTMLparser = 1

  table.stdWrap.HTMLparser {

    tags.table.overrideAttribs = border=0 cellpadding=2 cellspacing=1

    tags.tr.allowedAttribs=0

    tags.td.overrideAttribs = valign=top bgcolor="#eeeeee"on">Geneva, Arial, Helvetica, sans-serif;  font-size : 10px;"

  }

}

 

constants

boolean

最高位定義の定数はテキスト内で置き換えられる。定数名は"###"でラップされる。

 

例:

constants.EMAIL = email@email.com

(注: これはトップレベルのTypoScriptである!)

文字列###EMAIL###のケースにおいてはすべてテキスト内で置き換えられる。定数は最高位のオブジェクトとして定義される。

 

short

array of strings

上記の定数同様であるが、ローカルである。

 

例:

これは“TYPO3 CMS”を持った“T3”、およびtypo3.comへのリンクを持った“T3web”の発生全てに対して置き換える。

short {

  T3 = TYPO3 CMS

  T3web = <a href=”http://typo3.com”>typo3</a>

}

 

plainTextStdWrap

->stdWrap

これはすべての非タグコンテンツに対するstdWrapプロパティである。

 

userFunc

function name

これは非タグコンテンツをユーザ自身の選択による関数に渡す。例えばstdWrapの.postUserFuncと同類である。

関数名は場合により、“user_”でプレペンドされなければならないということを覚えておくこと

 

nonTypoTagStdWrap

->stdWrap

.plainTextStdWrap.同様 相違点:

.plainTextStdWrapはテキスト内のすべての非タグ要素に働きかける。.nonTypoTagStdWrapは特別なTypoTagsの間のすべてのテキスト(タグも含めて)の後処理である。(.breakoutTypoTagContent がTypoTagに設定されていない限り)

 

nonTypoTagUserFunc

function name

.userFunc.同様 相違点は(nonTypoTagStdWrap同様) .userFuncはすべての非タグコンテンツを後処理するのに対して、これはTypoTagsのまわりのすべてのコンテンツ要素の後処理であるということである。 (注: .breakoutTypoTagContent は、nonTypoTagContent から除外されている場合、Typo Tagに設定されなければならない)

 

sword

wrap

テキスト内のGET-メソッド送信配列sword_list[]からのワード全てに印をつける。ワードは最低限2文字以上なければならない!

注: $GLOBALS["TSFE"]->no_cache==1のみで動作

<font color="red">|</font>

makelinks

boolean / ->makelinks

前にhttp://のついたwebadresses及びリンクに対して前にmailto:のついたメールアドレスを変換する。

 

tags

->tags

ここではコンテンツを何かに解析するカスタムタグを定義できる。

 

allowTags

list of strings

タグのリスト、コード内に存在することができる!

最優先事項: タグがallowTags内で見つかった場合、 denyTagsは無視される!!

 

denyTags

list of strings

タグのリスト、コード内に存在しない! (全てに関して"*"を使用のこと。)

最下位優先事項: タグがallowTags内で見つからなかった場合、denyTagsがチェックされる。denyTagsが "*"でなくて、タグがリストの中に見つからなかった場合、タグは存在するかもしれない!

 

例:

これを使うと<B>, <I>, <A> and <IMG> -タグは存在することができる

.allowTags = b,i,a,img

.denyTags = *

 

if

->if

"if"がfalseを戻した場合、入力値は解析されず、直接戻される。

 

[tsref:->parseFunc]