共通パーツ読み込み(jQuery)

コレも『読み込み元のページ1つを更新すれば、読み込み先ページの更新をしなくても良い』という更新の効率化と、複数箇所に、同じ修正をおこなう場合に発生する、修正漏れ・修正の確認工程の軽減を目的としている。
ココ>( https://dezanari.com/html-include/ )とは、(勝手に)真っ向から対立させてもらう。HTML 直書きが、最も事故率が高く、非効率であるのは明白。ましてや、ヘッダー・フッターなど、修正が発生すると、サイト全体に、確実に影響する部分は、新規案件・リニュアルであれば、最初からパーツ化するべき。


パーツファイルを丸ごと読み込み

html ファイルを丸ごと差し込む系。考え方が、PHP include と同じ。>参考)PHP バージョン;https://note.com/itmsj/n/n3b0ac087a83e 
外部参考記事)https://www.plusdesign.co.jp/blog/authorf124e/104.html

HTML 側;パーツを入れたい場所に、ターゲットとできる id, class が必要。

<!-- SP Menu -->
<ul class="drawer-menu"><!-- jsincl_menu -->
</ul>
<!-- /SP Menu -->
<!-- PC Menu -->
<div id="menu_wrap" class="Sp_dis"><!-- jsincl_menu -->
</div>
<!-- /PC Menu -->

JS 側

<script><!--
        $('.drawer-menu').load('jsincl_menu-sp.html');//SP メニュー読み込み
        $('#menu_wrap').load('jsincl_menu-pc.html');//PC メニュー読み込み
//--></script>

ページ内に、まとめて

<!-- SP Menu -->
<ul class="drawer-menu"><!-- jsincl_menu -->
</ul>
<!-- /SP Menu -->
<!-- PC Menu -->
<div id="menu_wrap" class="Sp_dis"><!-- jsincl_menu -->
</div>
<!-- /PC Menu -->
<script><!--
$('.drawer-menu').load('jsincl_menu-sp.html');//SP メニュー読み込み
$('#menu_wrap').load('jsincl_menu-pc.html');//PC メニュー読み込み
//--></script>

としても機能する。

別ページに存在するソースを、一部コピーして読み込む

考えられる状況として、
・パターン1
 詳細ページを作成し、そのページタイトルと、前段部分の内容を概要として一覧ページやトップページに読み込む
・パターン2
 ヘッダーからフッターまで1ページ丸ごとをテンプレートとして作成し、内部に共通パーツを設置。必要なページで、適宜テンプレートから読み込む。
※最近気付いたが、トップページと下層ページで、同じヘッダー・フッターを使うのであれば、トップページだけに全部記述とし、他ページは、トップページのヘッダー・フッターを読み込めば、わざわざテンプレートページも要らないのでは? ということ。。。

HTML 側

<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>incl-full For jQuery</title>
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=10.0,user-scalable=yes">
<link href="/css/reset.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css">
<link href="/css/common.css" rel="stylesheet" type="text/css">
</head>
<body><div class="bodywrap">
	<header>
        <div id="header_wrap">
            <!-- ロゴ -->
            <div id="logo"><a href="/"><img src="/images/logo.png" alt="Logo" /></a></div>
    <div class="h1">_x_x_x_ Title _x_x_x_</div>

            <div id="menu_wrap">
                <!--サブメニュー-->
                <div id="sub_nav2">
                    <ul>
                        <li>> <a href="/en/">English</a></li>
                        <li><a href="#">お問合わせ</a></li>
                    </ul>
                </div>
                <!--/サブメニュー-->
            </div>
        </div>
                    <!-- メインメニュー -->
                <nav class="isSp">
                    <div class="sp_nav">
                    <div class="main_nav">
                        <ul class="dmenu">
                            <li class="menu_d csirt"><label for="about" class="lb_about mdlbtn">xxxについて</label>
                                <ul class="open about_sub">

                                </ul>
                            </li>
                            <li class="menu_d"><label for="active" class="lb_active mdlbtn">活 動 内 容</label>
                                <ul class="open act_sub">

                                </ul>
                            </li>
                            <li><a href="/member/">会員</a></li>
                            <li><a href="/admission/">加盟案内</a></li>
                            <li><a href="/contact/">お問合わせ</a></li>
                        </ul>
                    </div>
                    </div>
<div class="menu-next">></div>
                </nav>
                <nav2><!-- メインメニュー -->
                    <div class="main_nav">
                        <ul class="dmenu">
                            <li class="menu_d csirt"><label for="about" class="lb_about mdlbtn">About</label>
                                <ul class="open about_sub" data-modalIndex="1">
                                    <li><a href="/outline/">xxxについて</a></li>
                                    <li><a href="/outline/about.html">xxxとは</a></li>
                                    <li><a href="/outline/vision.html">理念</a></li>
                                    <li><a href="/outline/organization.html">運営</a></li>
                                    <li><a href="/outline/history.html">沿革</a></li>
                                    <li><a href="/outline/policy.html">ポリシー</a></li>
                                </ul>
                            </li>
                            <li class="menu_d"><label for="active" class="lb_active mdlbtn">活 動 内 容</label>
                                <ul class="open act_sub" data-modalIndex="2">
                                    <li><a href="/activity/">活動</a></li>
                                    <li><a href="/activity/xxx.html">xxx活動</a></li>
                                    <li><a href="/activity/group.html">グループ</a></li>
                                    <li><a href="/activity/award.html">表彰</a></li>
                                    <li><a href="/activity/support.html">支援</a></li>
                                    <li><a href="/activity/event.html">イベント</a></li>
                                    <li><a href="/activity/doc/">資料</a></li>
                                </ul>
                            </li>
                            <li><a href="/member/">会員</a></li>
                            <li><a href="/info/">案内</a></li>
                            <li><a href="/contact/">お問合わせ</a></li>
                        </ul>
                    </div>
                </nav2>
    </header>
<section class="sec_top">
メインボディ仮
</section>
    <!--SNSー-->
    <section id="sns_wrap">
    	<div id="sns_title">
    		<div class="sns_icon_wrap">
    			<div class="tw_icon"><a href="https://twitter.com/_x_x_x" target="_blank"><i class="fa-brands fa-twitter"></i></a></div>
    			<div class="fb_icon"><a href="https://www.facebook.com/_x_x_x/" target="_blank"><i class="fa-brands fa-facebook-square"></i></a></div>
    			<div class="youtube_icon"><a href="https://www.youtube.com/@_x_x_x" target="_blank"><i class="fa-brands fa-youtube"></i></a></div>
    		</div>
    	</div>
    </section>

    <!--footer-->
    <footer>
        <div id="footer_menu_wrap">
            <div id="footer_list" class="isPc">
                <div class="footer_menu">
                    <ul class="about_sub">
                    	<li><a href="/outline/">xxxについて</a></li>
                    </ul>
                </div>
                <div class="footer_menu">
                    <ul class="act_sub">
                    	<li><a href="/activity/">活動</a></li>
                    </ul>
                </div>
                <div class="footer_menu mem">
                    <p><a href="/member/">会員</a></p>
                    <p><a href="/info/">案内</a></p>
                    <p>外部リンク</p>
                </div>
                <div class="footer_menu cont"><!-- Top コンテンツ と共有 -->
                    <p class="other_cont"><a href="/content/01.html">Contents01</a></p>
                    <p class="other_cont"><a href="/content/02.html">Contents02</a></p>
                    <p class="other_cont"><a href="/content/03.html">Contents03</a></p>
                    <p class="other_cont"><a href="/content/04.html">Contents04</a></p>
                </div>
            </div>
			<div id="sp_footer" class="isSp">
				<details class="footer_menu">
					<summary id="ft_about_ttl">About</summary>
					<ul class="about_sub">
					</ul>
				</details>
				<details class="footer_menu">
					<summary id="ft_act_ttl">Active</summary>
					<ul class="act_sub">
					</ul>
				</details>
				<details class="footer_menu">
					<summary id="ft_link">Link</summary>
					<ul>
					</ul>
				</details>
			</div>
                <ul class="footer_btm">
                    <li><a href="/logo/">ロゴについて</a></li>
                    <li><a href="/policy.html">プライバシーポリシー</a></li>
                    <li><a href="/contact/">お問い合わせ</a></li>
                    <li><a href="/en/">English</a></li>
                </ul>
        </div>
    </footer>
        <div id="copy">
            <p><small>© iTMSJ Inc. All Rights Reserved.</small></p>
        </div>
</div></body>
</html>

更新がある場合は、上記ファイルを更新するのみ。
header, footer 部分を読み込みたい場合は、

<header>
</header>
~~略~~
<footer>
</footer>

<script><!--
$('header').load('incl-all.htm #header_wrap');//header読み込み
$('footer').load('incl-all.htm footer>#footer_menu_wrap');//footer読み込み
//--></script>

 など、読み込みは適宜。

なお、テンプレページ(上記 incl-all.htm)とした場合は、bodywrap のような、wrap している class や、wrap 箇所がなければ、body に、display:none を付けて、万一、このテンプレページが検索されてしまっても、表示は見えないように対策をしておくほうが良いと思われる。

この記事が気に入ったらサポートをしてみませんか?