Problem
Links mit „IMG“- und „FORM“-Tags werden nicht neu geschrieben (im Gegensatz zu Links mit „A“-Tags).
Lösung
Um das Neuschreiben zu verbessern, können Sie ein benutzerdefiniertes RewriterTransformerFactory [1] implementieren. Dies ist eine optionale Komponente, die verwendet wird, um den bereits bestehenden Neuschreib-Mechanismus zu erweitern. Ein solcher RewriterTransformerFactory muss eine Transformer [2]-Implementierung ermöglichen, durch die der neu zu schreibende HTML-Code als SAX-Ereignis durchgeht. Um die Implementierung von benutzerdefinierten Rewriter-Transformern zu erleichtern, ist eine AbstractContentHandler [3]-Klasse für die Erweiterung verfügbar, die standardmäßige Implementierungen der Methoden bietet, die in der org.xml.sax.ContentHandler-Schnittstelle genauer beschrieben sind.
Ein Musterbeispiel sieht folgendermaßen aus:
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(); } }
Beachten Sie bitte, dass der Wert des Service-Rankings die Reihenfolge beeinflusst, wenn dieser Transformer ausgelöst wird. Weitere Informationen finden Sie unter [1].
Gilt für
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