Implementación de un RewriterTransformerFactory personalizado

Problema

Los enlaces dentro de las etiquetas "IMG" y "FORM" no se reescriben (a diferencia de los enlaces dentro de las etiquetas "A").

Resolución

Para mejorar el proceso de reescritura, puede implementar un RewriterTransformerFactory [1] personalizado. Este es un componente opcional que se utiliza para ampliar el mecanismo de reescritura existente. Ese RewriterTransformerFactory debe proporcionar una implementación de Transformer [2] a través de la cual el html a reescribirse pase como eventos SAX. Para facilitar la implementación de transformadores de reescritura personalizados, hay una clase AbstractContentHandler [3] para su extensión que proporciona implementaciones predeterminadas de los métodos especificados por la interfaz org.xml.sax.ContentHandler.

Un esqueleto de ejemplo podría verse así:

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();
  }
}

Tenga en cuenta que el valor de la clasificación del servicio influye en el orden cuando se activa este transformador de reescritura. Véase [1] para más detalles al respecto.

Se aplica a:

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

Logotipo de Adobe

Inicia sesión en tu cuenta