2015-05-20 60 views
1

在AEM中,頁面和圖像等內容中包含前綴'/content/'。我們能夠通過鏈接檢查變壓器配置和resourceResolver.map()方法重寫這些URL。正在爲HTML元素<a><form>重寫網址。重寫Adobe CQ Image src屬性

但我希望它也適用於<img>元素。

我想包括<img>元素鏈接檢查變壓器配置將其添加到「重寫元素的列表作爲img:src

enter image description here

我也查了答案來自What am I missing for this CQ5/AEM URL rewriting scenario?但這兩個嘗試都不適用於這個問題。

有沒有辦法做到這一點?

+0

有你配置/應用/ XXX /配置/重寫的重寫? – santiagozky

+0

@santiagozky不幸的是沒有。我將閱讀如何通過配置重寫器。 – khakiout

+0

@santiagozky我試過了,但沒有發生什麼''元素 – khakiout

回答

2

即使rewriterLink Checker Transformer沒有工作。我通過使用TransformerTransformerFactory接口來使用自定義LinkRewriter。我基於我的代碼Adobe的樣本。我制定了這樣的事情:

@Component(
    metatype = true, 
    label = "Image Link Rewriter", 
    description = "Maps the <img> elements src attributes" 
) 
@Service(value = TransformerFactory.class) 
@Property(value = "global", propertyPrivate = true) 
public class ImageLinkRewriter implements Transformer, TransformerFactory { 

    // some variables 

    public CustomLinkTransformer() { } 

    @Override 
    public void init(ProcessingContext context, 
        ProcessingComponentConfiguration config) throws IOException { 
     // initializations here 
    } 

    @Override 
    public final Transformer createTransformer() { 
     return new CustomLinkTransformer(); 
    } 

    @Override 
    public void startElement(String uri, String localName, 
          String qName, Attributes atts) throws SAXException { 
     if ("img".equalsIgnoreCase(localName)) { 
      contentHandler.startElement(uri, localName, qName, rewriteImageLink(atts)); 
     } 
    } 

    private Attributes rewriteImageLink(Attributes attrs) { 
     String attrName = "src"; 
     AttributesImpl result = new AttributesImpl(attrs); 

     String link = attrs.getValue(attrName); 
     String mappedLink = resource.getResourceResolver().map(request, link); 

     result.setValue(result.getIndex(attrName), mappedLink); 

     return result; 
    } 

} 

希望這可以幫助別人。這裏有幾個引用:

+1

對於任何人來到這裏:在這個答案的源代碼是有點搞砸了。有關完整的工作示例,請參閱我創建的這個要點:https://gist.github.com/anonymous/d2a22bdf0dfc5549b41b825abe65c7a3 –