コンテンツ管理と Jelly コードの例
コード例
- ヘッダーコード例
この動的コンテンツブロックはアクティブで、[2 フェーズ] オプションがクリックされている必要があります。g:requires タグに、名前が「servicenow.website.globals」のシステムで定義された UI スクリプトが含まれています。呼び出しのファイル拡張子は .jsdbx で、UI スクリプトの呼び出しでのみ使用され、システム内のスクリプト名には使用されません。JSDBX の場合、呼び出されるファイルは、キャッシュする必要があるデータベース (db) 内で定義された JavaScript (.js) です (x)。
<?xml version= "1.0" encoding= "utf-8" ?><j:jelly trim = "false" xmlns:j = "jelly:core" xmlns:g = "glide" xmlns:j2 = "null" xmlns:g2 = "null" > <g:requires name = "servicenow.website.globals.jsdbx" /> </j:jelly>- ページのタイトルと説明のコード例
この動的コンテンツブロックはアクティブである必要があります。このコードスニペットには 2 つのアクションがあります。1 つ目は、サイトの翻訳を可能にする将来を見据えた文字列コンテナー、${gs.getMessage('Your Text')} 文字列呼び出し)です。2 番目のアクションでは、ページタイトルと説明、${current_page.getName()} と ${current_page.getDescription()} を取得します。
<?xml version= "1.0" encoding= "utf-8" ?><j:jelly trim = "false" xmlns:j = "jelly:core" xmlns:g = "glide" xmlns:j2 = "null" xmlns:g2 = "null" > <j:if test = "${current_page.getName()=='Solutions'}" ><h1 class = "page_name" > <b> <a href = "solutions.do?" title="${gs.getMessage('Solutions')}" >${gs.getMessage('Solutions')}</a> </b> </h1><p class = "page_description" > ${current_page.getDescription()} </p> <br /></j:if><j:if test = "${current_page.getName()=='IT 3.0'}" ><h1 class = "page_name" > <b> <a href = "solutions.do?" title="${gs.getMessage('Solutions')}" >${gs.getMessage('Solutions')}</a> </b> | ${current_page.getName()}</h1><p class = "page_description" > ${current_page.getDescription()} </p> <br /></j:if></j:jelly>- ナレッジ記事からのプルのリストブロックのコード例
このコード例には、CMS の最高のトリックの 1 つが含まれています。定義された多数のリスト定義から取得したタイプフィールドを使用して、リスト表示をわずかに、または非常に劇的な変更を加えます。UI は構成と革新に開放されているため、これは設計スキルを活用する良い機会です。HTML と CSS を使用できる人なら誰でも、基本的なリストを浮動小数点グリッドに変換したり、インラインにしたりできることを知っています。組み合わせは、デザイナーが夢見てコーディングできるものによってのみ制限されます。
コード例では、カスタムロゴフィールド (u_logo) が [ナレッジ] フォームに追加されています。カスタムフィールドには、顧客ロゴ、パートナーロゴ、および賞の画像が [賞] ページに表示されます。このリスト定義を使用するさまざまなセクションがあるため、効率的な再利用が行われています。- div class="cms_knowledge_list customer_success" - まず、CSS スタイルセレクターとルールの基礎として使用できる一意のクラス名を持つ外部コンテナを作成します。外側のコンテナから、テーマ設定のために子要素の多くにアクセスできます。
- <g:for_each_record file="${current}" max="${jvar_max_entries}">:選択したテーブルレコードとリストフォームに設定されたエントリを呼び出す、リスト作成のためのループ。
- <a href="knowledge.do?sysparm_document_key=kb_knowledge,${current.sys_id}"><img src="${current.u_logo.getDisplayValue()}" alt="${current.text}" width="110px"/> - ナレッジベースの記事の詳細へのリンクを定義します。さらに参考までに、サイト定義内のコンテンツタイプを見ると、いくつかの類似点がわかります。knowledge.do は?URL の一部はナレッジ詳細ページを指しています。前述のように、CMS サイトでナレッジベースを呼び出す場合は必須です。URL の残りの部分は、ナレッジ記事をそのsys_idで呼び出すための構文を表します。システム内に格納されているすべてのアイテムには、固有のsys_idがあります。
- <ttt>${SP}-${SP}${current.author.first_name}${SP}${current.author.last_name}</tt> - この例はコメントアウトされており、使用されていませんが、${SP} という Jelly 呼び出しがあり、ナレッジ記事の作成者を姓と名でプルする点で興味深いものです。
<?xml version= "1.0" encoding= "utf-8" ?><j:jelly trim = "false" xmlns:j = "jelly:core" xmlns:g = "glide" xmlns:j2 = "null" xmlns:g2 = "null" > <div class = "cms_knowledge_list customer_success" ><g:for_each_record file = "${current}" max = "${jvar_max_entries}" ><br /><table cellspacing = "0" cellpadding = "0" border = "0" class = "background_transparent" ><tr><td class = "cms_knowledge_list_image" ><j:if test = "${current.u_logo.getDisplayValue() != ''}" ><div class = "knowledge_article_logo" ><a href = "knowledge.do?sysparm_document_key=kb_knowledge,${current.sys_id}" > <img src = "${current.u_logo.getDisplayValue()}" alt="${current.text}" width = "110px" /> </a></div></j:if> </td><td width = "100%" ><a href = "knowledge.do?sysparm_document_key=kb_knowledge,${current.sys_id}" target = "_top" ><span class = "cms_knowledge_list_link" >${current.short_description}</span></a><p class = "kb_description" > "${current.description}" <!--${SP}-${SP}<span class="cms_knowledge_list_author">${current.author.first_name}${SP}${current.author.last_name}</span>--></p></td></tr><tr><td width = "100%" colspan = "2" class = "kb_learn_more" ><p class = "kb_learn_more" ><a href = "knowledge.do?sysparm_document_key=kb_knowledge,${current.sys_id}" >Learn More</a></p></td></tr></table> </g:for_each_record></div> </j:jelly>