質問: ### 前提・実現したいこと HTMLとCSSで、WEBサイトを作っています。 そのページは、サイドバーにメニューが表示されていて、そのメニューをクリックすると、そのページに飛ぶという、よくあるサイトです。 どのページでも、メニュー部分は全て同じで、メニューをクリックして移動する各ページはその内容だけが変わります。 ただ、これの欠点として、メニューの項目が増えたり減ったり変更したいときには、全てのページのサイドバーの記述を書き直さないといけないことです。 これを解決する方法としては、(インライン)フレームを使うとか、javascriptを使うとか、PHPなどを使うとか、あると思うので、そういうやり方はわかるのですけれども、設置するサーバが、PHPとか、CGIを使えないサーバであることと、メンテナンスをするのが、javascriptなどがわからない人であるため、そのあたりの記述を変更するときに、間違えそうということ、また、フレームはあまり推奨されない風潮がある気がするので、できれば使わない方がいいのかなと思っているということで、CSSに書いて、それを全てのページのHTMLから読み込めば、一箇所を直せばそれで済むかと思いまして、そのような記述が可能かどうか?また、可能であれば、その方法を教えていただきたく、投稿いたしました。 そもそも、レイアウトを記述するためのCSSに、内容を書くということ自体、それも推奨されないことだろうとは思いますが、可能なことなのであれば、検討してみたいと思いまして、質問させていただいた次第です。 私自身も、ページ作成にそれほど詳しいわけではないので、こういった制約の中で、もっと良い方法があることをご存知であれば、それも、教えていただければ、幸いです。 それでは、よろしくお願いいたします。 ### 試したこと CSS内に内容を記述する方法について、検索をしましたが、見つけられませんでした。 どのようにやれば良いのか、全く見当がつかないため、まだ、何も試しておりません。
回答: CSSだけで内容(コンテンツ)を追加することは可能と言えば可能です。しかし、特定要素の前後にちょっとした何かを追加する程度しかできません。 ``` 前後 本文 ``` 本文の前後に「前」と「後」が表示されますが、メニューのような構造化された別のHTMLの要素を追加すると言ったところまではできないと言うことです。 では、どうするかですが、いくつか方法があります。 ### CMSを使う WordPressやMovableType等のCMSを使う方法です。メンテナンスを行う人がHTML等をよく知らないという場合に特にお勧めです。難点はCMSの設定が大変とかですが、現在は、CMSそのものを提供するサービスがたくさんあります。中には無料のサービス(容量制限や広告が付いたりしますが)もありますし、普通のレンタルサーバーと同じぐらいの値段、または、レンタルサーバのサービスとしてCMS設置をお任せでできる物もあります。 テーマのカスタマイズとかはそれなりに知識は必要ですが、実際にコンテンツを書く人にはそれほど知識は必要ありません。問題点は、 * メンテナンスされていないCMSはセキュリティホールをつかれ、悪用されやすい。(つまり、悪意ある人に簡単に乗っ取られる) * 設置にはDBとCGIが使えるサーバが必要であり、それなりの知識が必要。 * ものによっては動作が重い。(MovableTypeのように静的ファイルを作成する物であれば、そうでもありませんが) もし、CMSを使う場合は、有料の運営がしっかりしたところのCMS提供サービスを使うといいでしょう。自分で設置とかは管理者に知識が無いと難しいです。また、既に設置するサーバが決まっており、CMSがおけないようであれば、CMSを使うことは諦めざるをえません。 ### 静的サイトジェネレーターを使う HugoやMiddleman等の静的サイトジェネレーターを使う方法です。静的サイトジェネレーターとは簡単に言うと、手元で動くCMSです。サーバーへのインストールやDB等は必要ありません。CMSのようにメニューの自動生成や統一されたヘッダフッタは可能です。ただ、こちらはコンテンツを書く人もそれなりの知識が無いと難しいかも知れません。書くところさえ決め、書き方さえ守れば、運用次第でうまくいくでしょうが、GoやRubyをパソコン側に入れる必要があるなど、知識が無い人にはハードルは少し高いです。 中身だけ書いて貰って、いつも自分で生成すると言う形であれば、うまくいくかも知れません。 ### Webオーサリングツールを使う ホームページ・ビルダーやDreamweaver等のWebオーサリングツールを使う方法です。私はほとんど使ったことがないのですが、プロジェクトをしっかり作り込んでいれば、メニューの共通化などが可能らしいです。最初にプロジェクト(というか、テーマ?)をしっかり作るというところに知識は要りますが、内容の更新自体はHTML等がよく知らない人でも、たぶん、できるでしょう。視覚的に見えるので、素人にもわかりやすいという利点もあります。 問題は、本格的な物は有料しか無く、それなりの値段がすると言うことです。もし、複数人で行うなら、複数人分買う必要がある場合もあります。