要件は次のとおりです。
新しいWebコンテンツ(特定の構造に対応する、たとえばA)が公開されると、Asset Publisherポートレット(Asset Publisherのデフォルト機能)で自動的に更新されます。
デフォルトでは、Webコンテンツのタイトルは、さまざまなWebコンテンツのアセットパブリッシャーにリンクとして表示されるものです。これの代わりに、構造Aの要素(名前など)のコンテンツをリンクとして表示したいと思います。このリンクをクリックすると、対応するWebコンテンツを含むAlloyUIポップアップが開きます。
これを実現するために、フックを使用して新しい「表示スタイル」 jspを作成しました(abstracts.jspを微調整しました)。
.jsp
このスクリプトレットを:に書きました
<%
String personName=null;
JournalArticle journalArticle=null;
String myContent=null;
Document document = null;
Node node=null;
Node node1=null;
Node node2=null;
Node node3=null;
int noOfWords=0;
String pic=null;
String aboutMe=null;
double version=0;
try {
version=JournalArticleLocalServiceUtil.getLatestVersion(assetRenderer.getGroupId(), "14405");
journalArticle = JournalArticleLocalServiceUtil.getArticle(assetRenderer.getGroupId() , "14405",version);
myContent = journalArticle.getContent();
document = SAXReaderUtil.read(new StringReader(myContent));
node = document.selectSingleNode("/root/dynamic-element[@name='personName']/dynamic-content");
if (node.getText().length() > 0) {
personName = node.getText();
}
node1 = document.selectSingleNode("/root/dynamic-element[@name='pic']/dynamic-content");
if (node1.getText().length() > 0) {
pic = node1.getText();
}
node2 = document.selectSingleNode("/root/dynamic-element[@name='noOfWords']/dynamic-content");
if (node2.getText().length() > 0) {
noOfWords = Integer.parseInt(node2.getText());
}
node3 = document.selectSingleNode("/root/dynamic-element[@name='aboutMe']/dynamic-content");
if (node3.getText().length() > 0) {
aboutMe = node3.getText(). substring(0,noOfWords)+"....";
}
} catch (PortalException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}
%>
ただし、ここではarticleId
ハードコーディングする必要があります。
articleId
新しいWebコンテンツが公開されたとき、つまり動的にここを取得したいと思います。
ここではどのAPIを使用する必要がありますか?
どんな助けでも大歓迎です。
ありがとう。