2014-09-29 71 views
0

我一直在與CQ5.6一起工作了大約一個月,我們的測試網站幾乎完成了組件。如何在CQ5.6中設置doctype?

但是,當我們嘗試驗證頁面時,我們遇到了問題,因爲AEM在我們所有頁面上放置了<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

現在,我找不到任何地方在我們的代碼中明確聲明瞭Doctype。我們的代碼中的HTML標籤也不是,所以我認爲AEM將這些包裝在一切中。

首先,我嘗試刪除頁面組件中的文檔類型的導入,並用<!DOCTYPE html>替換它,但隨後我們結束了2個文檔類型聲明。首先是XHTML標籤,然後是包裝好的<html>標籤,然後是我的HTML5標籤。

我已經閱讀過文檔,可以使用cq:doctype屬性設置文檔類型,但不知道應該將屬性添加到哪裏。

我也試圖把這個上面我們的頁面組件head標籤,但無濟於事:

<% Doctype doc= Doctype.valueOf("HTML_5"); 
    doc.toRequest(request); 
%> 
<%= Doctype.fromRequest(request).getDeclaration() %> 

任何人都可以向我解釋如何或在哪裏我可以文檔類型設置爲HTML5爲我們的項目?

回答

3

默認情況下CQ不會用Doctype包裝頁面。您的頁面組件可能有foundation/components/page作爲其父項(sling:resourceSuperType屬性)。

由於component hierarchy and inheritance,基礎page.jsp中包含的Doctype包含在您的頁面中,因此看起來好像它正在包裝您的HTML。

的page.jsp包括DOCTYPE如下圖所示

<%= Doctype.fromRequest(request).getDeclaration() %> 

你可以通過你的頁面組件本身壓倒一切的基礎page.jsp的內容避免這種情況。

+2

感謝您指出這一點。猜猜我還是CQ5/AEM的新手。 我也發現你可以通過向'etc/designs/jcr:content'節點添加值爲'HTML_5'的cq:doctype'屬性來爲項目中的所有頁面設置doctype爲html5。 ' – LRN 2014-09-30 09:27:37

0

在此路徑foundation/components/page/_NAME_中,您可以覆蓋包含DOCTYPE定義和HEAD語句的head.jsp文件。

接下來,你可以看到原來的例子: head.jsp example

如果沒有定義自己的自定義模板,這就是原因。您可能需要創建一個具有下一個結構的文件夾(/foundation/components/page/_NAME_/):

head.jsp 
body.jsp 
dialog.xml