問題

"IMG" タグおよび "FORM" タグ内のリンクは、("A" タグ内のリンクとは異なり)上書きされません

解決策

書き換えパイプラインを強化するには、カスタムの RewriterTransformerFactory [1] を実装します。これは、既存の書き換え処理を拡張するために使用するオプションのコンポーネントです。このような RewriterTransformerFactory は書き直された html が SAX イベントとして通用するような Transfomer [2] の実装を提供する必要があります。カスタムの書き換え処理を実装する労力を軽減するには、org.xml.sax.ContentHandler インターフェイスで指定されているメソッドのデフォルト実装を提供する AbstractContentHandler [3] クラスを継承します。

スケルトンの一例:

package x.y.z;
import com.day.cq.rewriter.pipeline.AbstractContentHandler;
import com.day.cq.rewriter.pipeline.RewriterTransformerFactory;
import com.day.cq.rewriter.pipeline.Transformer;
/*
*
* @scr.component metatype="no"
* @scr.service
* @scr.property name="service.ranking" value="-100" type="Integer"
*/
public class MyRewriterTransformer extends AbstractContentHandler
               implements RewriterTransformerFactory, Transformer {

  // override startElement method
  public void startElement(String uri, String loc, String raw, Attributes a)
               throws SAXException {

      // implement your custom link rewriting here
  }

  public Transformer createTransformer() {
      return new MyRewriterTransformer();
  }
}

service-ranking の値は、この書き換えがトリガーされる際の順序に影響を与えます。[1] で詳細を確認してください。

適用対象

CQ5.2.x

[1] http://dev.day.com/content/docs/v5_2/cq-wcm-javadoc/index.html?com/day/cq/rewriter/pipeline/RewriterTransformerFactory.html


[2] http://dev.day.com/content/docs/v5_2/cq-wcm-javadoc/index.html?com/day/cq/rewriter/pipeline/Transformer.html


[3] http://dev.day.com/content/docs/v5_2/cq-wcm-javadoc/index.html?com/day/cq/rewriter/pipeline/AbstractContentHandler.html

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー