独自デザインのWebサイトを作成

MODXで独自デザインのWebサイトを構築するための一例をご紹介します。

レイアウトと構成

次のレイアウトを想定します。

トップページ:
ヘッダー、メインコンテンツ、ニュース一覧、フッターの構成。

下層ページ(1カラム):
ヘッダー、メインコンテンツ、フッターの構成。

下層ページ(2カラム):
ヘッダー、メインコンテンツ、サイドバー、フッターの構成。

テンプレート

テンプレートは次の通りです。

テンプレート名 説明
トップページ トップページで用いるためのテンプレート。
下層ページ(1カラム) 下層ページの1カラムで用いるためのテンプレート。
本ページの例では、第一階層のページで使用することを想定したテンプレート。
下層ページ(2カラム) 下層ページの2カラムで用いるためのテンプレート。
本ページの例では、第二階層以降のページで使用することを想定したテンプレート。

チャンク

チャンクは次の通りです。

チャンク名 説明
html-start Doctype宣言からbody要素の開始タグくらいまでのHTMLを記述するチャンク。
html-end body要素の終了タグくらいからhtml要素の終了タグまでのHTMLを記述するチャンク。
page-header ページのヘッダー部分のHTMLを記述するチャンク。
page-footer ページのフッター部分のHTMLを記述するチャンク。
page-main ページのメインコンテンツ部分のHTMLを記述するチャンク。
page-side ページのサイドバー部分のHTMLを記述するチャンク。
news-list お知らせの一覧を表示するためのチャンク。

ツリー

ツリーは次の通りです。

  • トップページ
  • 企業情報
    • 社長挨拶
    • 会社概要
  • 事業紹介
  • 採用情報
  • お問い合わせ
  • お知らせ

テンプレートの作成

テンプレートの作成を作成するには、メニューにある"エレメント"タブから"エレメント管理"ページを開きます。
エレメント管理ページが表示されたら"テンプレート"タブを開き、"テンプレートを作成"ボタンを押します。

テンプレート名やテンプレートコードなど必要項目を入力し、"更新"ボタンを押します。

トップページ:
項目名 入力内容
テンプレート名 トップページ
テンプレートコード
{{html-start}}
{{page-header}}
{{page-main}}
{{page-footer}}
{{html-end}}
下層ページ(1カラム):
項目名 入力内容
テンプレート名 下層ページ(1カラム)
テンプレートコード
{{html-start}}
{{page-header}}
{{page-main}}
{{page-footer}}
{{html-end}}
下層ページ(2カラム):
項目名 入力内容
テンプレート名 下層ページ(2カラム)
テンプレートコード
{{html-start}}
{{page-header}}
{{page-main}}
{{page-side}}
{{page-footer}}
{{html-end}}

チャンクの作成

チャンクの作成を作成するには、メニューにある"エレメント"タブから"エレメント管理"ページを開きます。
エレメント管理ページが表示されたら"チャンク"タブを開き、"チャンクを作成"ボタンを押します。

チャンク名やチャンクコードなど必要項目を入力し、"更新"ボタンを押します。

HTMLの開始用チャンク

HTMLの開始用チャンクは次の通りです。

チャンク名:html-start

チャンクコード:

<!DOCTYPE html>
<html lang="ja">
<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>[*pagetitle*]<@IF:[*id:isnot='[(site_start)]'> | [(site_name)]<@ENDIF></title>
</head>
<body>
	<div id="wrap">

[*pagetitle*]はリソース変数で、リソース(ページ)のタイトルを出力します。
詳しくは、リソース変数一覧ページをご覧ください。

<@IF> ... <@ENDIF>は条件分岐文です。
詳しくは、条件分岐ページをご覧ください。

@IF文内の:[*id:isnot='...'*]はモディファイアの不一致判定です。
詳しくは次のページをご覧ください。

[(site_start)][(site_name)]は設定(コンフィグ)変数です。
詳しくは、設定(コンフィグ)変数一覧ページをご覧ください。

HTMLの終了用チャンク

HTMLの終了用チャンクは次の通りです。

チャンク名:html-end

チャンクコード:

	</div>
</body>
</html>

ページのヘッダー用チャンク

ページのヘッダー用チャンクは次の通りです。

チャンク名:page-header

チャンクコード:

<header id="page-header" role="banner">
	<!--@IGNORE:BEGIN-->ロゴ<!--@IGNORE:END-->
	<p class="logo"><a href="[(base_url)][~[(site_start)]~]"><img src="[(base_url)][(rb_base_url)]images/header-logo.png" width="320" height="49" alt="[(site_name)]"></a></p>

	<!--@IGNORE:BEGIN-->リンク<!--@IGNORE:END-->
	<ul>
		<li><a href="[(base_url)][~6~]">[*pagetitle@6*]</a></li><!--@IGNORE:BEGIN-->お知らせ<!--@IGNORE:END-->
		<li><a href="[(base_url)][~7~]">[*pagetitle@7*]</a></li><!--@IGNORE:BEGIN-->お問い合わせ<!--@IGNORE:END-->
	</ul>

	<!--@IGNORE:BEGIN-->グローバルナビゲーション<!--@IGNORE:END-->
	<nav id="global-navigation">
		[[Wayfinder?
			&startId=`0`
			&level=`1`
			&outerTpl=`@CODE:<ul>[+wf.wrapper+]</ul>`
			&rowTpl=`@CODE:<li[+wf.classes+]><a href="[+wf.link+]">[+wf.linktext+]</a>[+wf.wrapper+]</li>`
			&hereClass=`current`
			&lastClass=``
		]]
	</nav>
</header>

[(base_url)][(site_start)][(rb_base_url)]は設定(コンフィグ)変数です。
詳しくは、設定(コンフィグ)変数一覧ページをご覧ください。

[~ ... ~]はリソースのパスを取得するタグです。
詳しくは、タグでリソースのURLを出力ページをご覧ください。

[[Wayfinder]]はナビゲーションやメニューを作成するためのスニペットです。
詳しくは、Wayfinderについてページをご覧ください。

ページのフッター用チャンク

ページのフッター用チャンクは次の通りです。

チャンク名:page-footer

チャンクコード:

<footer id="page-footer" role="contentinfo">
	<p><small translate="no">copyright &copy; Example. All rights reserved.</small></p>
</footer>

ページの本文用チャンク

ページの本文用チャンクは次の通りです。

チャンク名:page-main

チャンク名"page-main"の内容:

<main id="page-main" role="main">
	<@IF:[*id:is='[(site_start)]'*]>
		<!--@IGNORE:BEGIN-->トップページは見出しレベル1をヒーローイメージで表示<!--@IGNORE:END-->
		<h1>
			<picture>
				<source media="(max-width:640px)" srcset="[(base_url)][(rb_base_url)]images/hero-image-sp.png">
				<img src="[(base_url)][(rb_base_url)]images/hero-image.png" width="1200" height="675" alt="[*pagetitle*]">
			</picture>
		</h1>
	<@ELSE>
		<!--@IGNORE:BEGIN-->トップページ以外は見出しレベル1をテキストで表示<!--@IGNORE:END-->
		<h1>[*pagetitle*]</h1>
	<@ENDIF>

	[*content*]

	<!--@IGNORE:BEGIN-->トップページにお知らせ一覧を表示<!--@IGNORE:END-->
	<@IF:[*id:is='[(site_start)]'*]>
		{{news-list}}
	<@ENDIF>

	<!--@IGNORE:BEGIN-->1カラムテンプレートの場合のみ直下のリソースの一覧を表示<!--@IGNORE:END-->
	<@IF:[*template:is='4'*]>
		<ul>[[Ditto?
			&parents=`[*id*]`
			&showInMenuOnly=`1`
			&tpl=`@CODE:<li><a href="[~[+id+]~]">[+pagetitle+]</a></li>`
		]]</ul>
	<@ENDIF>
</main>

<!--@IGNORE:BEGIN-->...<!--@IGNORE:END-->はコメントアウトで、出力を行いません。
詳しくは、出力しない(コメントアウト)ページをご覧ください。

[*content*]はリソース変数で、リソース(ページ)の本文を出力します。
詳しくは、リソース変数一覧ページをご覧ください。

{{news-list}}は後に紹介するお知らせ一覧を生成するチャンクを呼び出して出力します。

[*template*]はリソース変数で、リソース(ページ)に適用されているテンプレートのIDを出力します。
詳しくは、リソース変数一覧ページをご覧ください。

[[Ditto]]はリソースの一覧を作成するためのスニペットです。
詳しくは、Dittoについてページをご覧ください。

ページのサイド用チャンク

ページのサイド用チャンクは次の通りです。

チャンク名:page-side

チャンクコード:

<aside>
	<nav id="local-navigation">
		[[Wayfinder?
			&startId=`[*parent*]`
			&level=`1`
			&outerTpl=`@CODE:<ul>[+wf.wrapper+]</ul>`
			&rowTpl=`@CODE:<li[+wf.classes+]><a href="[+wf.link+]">[+wf.linktext+]</a>[+wf.wrapper+]</li>`
			&hereClass=`current`
			&lastClass=``
		]]
	</nav>
</aside>

[[Wayfinder]]スニペットを使用して、ローカルナビゲーションを生成しています。

お知らせ一覧表示用チャンク

お知らせ一覧表示用チャンクは次の通りです。

チャンク名:news-list

チャンクコード:

<div class="news">
	<ul>[[Ditto?
		&parents=`7`
		&showInMenuOnly=`1`
		&dateSource=`pub_date`
		&tpl=`@CODE:<li><time>[+date:date(%Y年%m月%d日)+]</time><a href="[(base_url)][~[+id+]~]">[+pagetitle+]</a></li>`
	]]</ul>
</div>

[[Ditto]]スニペットを使用して、お知らせ配下にある記事の一覧を生成しています。

リソースの作成

リソースを作成するにはいくつか方法があります。

トップページを作成

トップページを作成する場合は、初期状態でツリー上に"最初のページ"リソースが存在する場合はツリー上から"最初のページ"を押し、なければツリーメニューにある"リソースを投稿"ボタンを押します。
リソースの作成・編集画面あるいはリソースを投稿画面が表示されたら、"使用テンプレート"のプルダウンリストボックスから作成したトップページのテンプレート"トップページ"を選択し、その他必要な項目を入力し、"更新"ボタンを押します。

第一階層のページを作成

第一階層のページを作成する場合は、ツリーメニューにある"リソースを投稿"ボタンを押します。

第二階層以降のページを作成

第二階層のページを作成する場合は、ツリーメニューにある対象の親リソースを右クリックし、"サブリソースを追加"ボタンを押します。
リソースを投稿画面が表示されたら、"使用テンプレート"のプルダウンリストボックスから作成した下層ページのテンプレート"下層ページ(2カラム)"を選択し、その他必要な項目を入力し、"更新"ボタンを押します。

CMS「MODX Evolution」逆引きリファレンス一覧へ戻る