Bootstrapで作られたWEBサイトを見たまま印刷(プリントアウト)する方法

Boostrapを使って作ったサイトをPC用の表示で印刷したい!

Bootstrap利用して構築してあるWEBサイトを印刷すると、見たままの状態では印刷されず、紙媒体でも読みやすいように印刷時にレイアウト等が変更されて印刷されます。

Bootstrapデフォルト状態での印刷プレビュー

以下のURLで印刷プレビューしてもらうと、Bootstrapのデフォルトの印刷スタイルを確認出来ます。
http://onocom.net/code/bootstrap-print/default.html

これは、Bootstrapには予め印刷用のスタイルが定義されており、それが印刷時に適用されるためです。

この印刷スタイルには、

・リンクテキストの後にリンク先のURLが表示される!(ハイテク!)
・背景がすべて消える(インク代節約!)
・レイアウトがシンプルになる(タブレットやスマホ用に近い、コンテンツを読みやすいレイアウトになる!)

などなどが含まれます。
デバイスに応じて適切なスタイル(CSS)を定義すべきという素晴らしい思想だと思います。

しかし、そんなことクライアント様には関係ないようで「印刷用のスタイル?わけがわからない。安く作ってくれればいい。」「印刷すると壊れる!(印刷するとレイアウト崩れておかしくなるの意)」などありがたい意見を頂くことがあります。

印刷する環境はやはりPCなので、PC表示を印刷できるようにして欲しい。という要望です。

[Bootstrap 印刷]とかで調べると、印刷時のURLを消す方法とかはよく出てくるのですが、見たまま印刷する方法って意外と出てこないので頭を抱えておりました。

私以外にもそういうお声に頭を悩ませている方がいることを願い、今回、Bootstrapで見たまま印刷する。という方法に真っ向から立ち向かってみました。

お役に立てれば幸いです。

Bootstrapで見たまま印刷する手順

以下の手順でBootstrapサイトを見たまま印刷できるようにしていきます。

  1. Bootstrap公式サイトから印刷用スタイル(@media print)を除外したパッケージをダウンロード
  2. 印刷調整用CSSの適用
  3. 微調整

 

1. Bootstrap公式サイトから印刷用スタイル(@media print)を除外したパッケージをダウンロード

まずは、Boostrapから印刷用のスタイル定義情報(@media print)を削除してあげます。

目視で該当部分を削除する方法もありますが、公式サイトのカスタマイズページやSass・Lessを使った方が間違いないでしょう。

ということでここでは、Bootsrap公式サイトのカスタマイズページを利用する前提で話を進めます。

Bootstrapカスタマイズページ

Bootsrapのカスタマイズページ (Customize and download)
http://getbootstrap.com/customize/

このページはBootstrapのカラム幅や色など、多岐にわたるカスタマイズをウェブ上から簡単に行えるページです。
以下の方法で印刷用のスタイルを除外したBootstrapを取得します。

1-1:ページの最初の方にある大見出し「Less files」の中にある、中見出し「Common CSS」の中の「Print media styles」というチェックボックスのチェックを外し、一番下までスクロールします。

Print media styles - Bootstrapカスタマイズページ選択項目

1-2:ページの一番下に「Compile and Download」というボタンがあるのでクリックしてダウンロードします。

ダウンロードしたZIPファイルには印刷スタイルの含まれないBootstrapが出来上がっています!すごい簡単!

コンパイル&ダウンロード

1-3:ダウンロードしたZIPファイルの中からbootstrap.css,bootstrap.min.cssをコピーして現在のサイトで使っているBootstapファイルを上書きします。

ここまでの操作でBootstrapで構築されたサイトを印刷プレビューしてみましょう。

ステップ1が完了した時点での印刷プレビュー

以下のURLで印刷プレビューしてもらうと、このステップが完了した状態の印刷スタイルを確認出来ます。
http://onocom.net/code/bootstrap-print/step1-complete.html

当初より大分改善はされているものの、スマホやタブレットのようなレイアウトになっているかと思います。手順2でその部分を改善していきます。


蛇足ですが、ダウンロードしたZIPファイルには「config.json」というファイルが含まれています。このファイル先ほどBootstrapのカスタマイズページの上部からアップロードしてあげることでカスタマイズ情報を引き継ぐことができます。

config.jsonの使い方そのため、Bootstrapのバージョンが変わってもこのファイルをアップロードして再度Bootstrapをダウンロードすることで、印刷スタイルの定義されていないBootstrapのCSSファイルを簡単にダウンロードできるのです。


2. 印刷調整用CSSの適用

印刷用スタイルの定義されていないbootstrap.cssを利用すると印刷が見たままに多少近づきますが、レイアウトがスマホやタブレットのようになりがちです。

そこで私が特別に作った黒魔術のようなCSS(bootstrap-print.css)を以下からダウンロードしてサイトに適用してあげます。

bootstrap-print
https://github.com/onocom/bootstrap-print

するとどういうことでしょう。印刷プレビューがPC表示のままで印刷出来るようになっていませんか!?PC表示のまま印刷出来るという方はここまでで作業終了。

全ての対応が終わった時の印刷プレビュー

以下のURLで印刷プレビューしてもらうと、印刷対応が全て完了した状態の印刷スタイルを確認出来ます。
http://onocom.net/code/bootstrap-print/index.html

もし、一部印刷が上手く出来ない方は3.微調整を行っていきます。

3. 微調整

サイトによっては(と言うか殆どのサイトでは)、2の調整用のCSSを導入しただけでは細かな部分でおかしい箇所が出てくると思います。

そこは印刷調整用のCSSに追記するなどして一個ずつ潰していきましょう。

先ほどのbootstrap-print.cssに追記するか、以下の用にプリント用のCSS (@print)を作成して最終調整を行います。

bootstrap-print-adjuster.cssみたいなファイルを作成し、以下のように記述する

さぁ、これで印刷パーフェクトになったはずです!

まとめ

ここに辿り着くまでに意外と時間がかかりました(^_^;)

印刷調整用CSSはまだまだ改良の余地があると思いますので、お気づきの点などあればリクエストをお願いします。

皆様のウェブサイトが見たまま印刷出来るようになってくれることを願います!



[jQuery] セレクトボックスで選択した値で表を絞り込む方法(プラグイン不使用、動作デモ、サンプルコード有)

表を検索したい!簡単に!

都道府県別にある情報を簡単に絞り込みたい。というご要望。

セレクトボックスに47都道府県の情報をあらかじめ設定しておきセレクトボックスを選択すると該当の都道府県を検索(絞り込み)する。

というかたちで実装を考えました。

テキストボックスだと入力するの面倒だし、都道府県で絞り込みたいだけなのでこのような形でどうだろうと。

jQueryのプラグインが色々とありましたが、自分でも簡単に表検索の仕組みが実装できそうだったので実装してみました。

参考になればと思い、ソースコードとデモサイトを作ったのでご活用下さいませ。

動作デモ・ソースコード

動作デモ

http://onocom.net/code/japan-prefecture/

ソースコード

https://gist.github.com/onocom/904991e984f1da14ef6e1d156bc6e570

ライセンス:WTFPL

好きに利用して改変して下さい。

実装したこと

セレクトボックスで選択した値(value)で表を検索(絞り込み)する機能を実装します。

ソースと解説

ソースコードサンプルと合わせてご覧くださいませ。

1.表を作る

取り敢えず検索するための表を作ります。

今回、都道府県の一覧表を作りました。

theadに見出しを。tbodyにデータを記述しましょう。

2.都道府県選択用のセレクトボックスを作る

表を絞り込む為のセレクトボックスを作ります。

optionタグのvalueに検索キーワードを割り当てます。valueの値で検索をかけるので、以下のようにvalueと異なる表示を設定してもOKです。

また、最初のoptionのvalueは空にしておき、絞り込み解除用に使います。

3.JavaScriptを組む

キモとなるJavaScriptのコードは以下のように記述します。

コメントで処理を補足しておりますので、参考にしてみてくださいませ。

まとめ

あえて、一般的なテキスト入力で絞り込む方法をせず、セレクトボックスで絞り込むようにしてみました。検索ワードが固定されている場合、この方が操作しやすいと思います。

もちろん上記を応用すれば、テキスト入力やラジオボタンで絞り込みなんてことも簡単に出来ます。

お役に立てば幸いです。



WordPressの検索フォームのカスタマイズ!カスタムタクソノミーを検索条件に追加する方法

WordPressの検索フォームをカスタマイズしよう

WordPressの検索フォームはキーワードを入力するテキストボックスと、検索を実行する検索ボタンで構成されています。

この検索フォームにカスタムタクソノミーを指定する方法をご紹介します。

検索条件にカスタムタクソノミーを追加しよう

以下の順序で検索フォームをカスタマイズしていきます。

  1. searchform.php をテーマフォルダに追加

  2. searchform.php にカスタムタクソノミー選択用のセレクトボックスを設置

  3. 検索ボックスを呼び出し

1.searchform.php をテーマフォルダに追加しよう

まずやることは、searchform.phpというファイルをテーマフォルダ内に追加することから始めます。

中身は取り敢えず空で大丈夫です。

2.searchform.php にカスタムタクソノミー選択用のセレクトボックスを設置

searchform.php をエディタで開いて以下のように書き換えます。

タクソノミースラッグ(以下例だとpref)をご自身のサイトに付け加えてあげてください。

2-1. カスタムタクソノミーを複数設置したい場合

以下部分をコピーして、formタグ内に追加することで、複数のカスタムタクソノミーからのAND条件検索も行えます。

●●●・・・タクソノミーラベル(例:都道府県)
■■■・・・タクソノミーの名前[半角英数](例:pref)

3. カスタマイズした検索ボックスを呼び出し

検索ボックスを表示させたい箇所のテンプレート(sidebar.php等)に以下のコードを記載します。

これでカスタマイズした検索ボックスが表示されるはずです。

CSSの調整等はよしなにしてくださいませ。

まとめ

結構簡単に検索条件にタクソノミーを追加できた!

その他にも、特定の日付範囲内の記事を検索する。とかもやろうと思えば出来ます。その場合、上記以外にも修正が必要です。それはまた気が向いたら追記しようかな。



CodeIgniter 3でURLに付加されるindex.phpを外したい(取り除きたい)

結論

ブログに書いていたら長々としてしまったので、結論から。

以下の2つの対応をすることでindex.phpを外すことが出来ます。

1:.htaccessを追加する

index.php と同じ階層に.htaccssを追加して、以下を記述する。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

2:application/config.phpを編集する

$config[‘index_page’] = ‘index.php’;

となっている箇所を

$config[‘index_page’] = ”;

に変更する。

CodeIgniter 3でウェブアプリケーションを構築すると、URLにindex.phpが付いてしまう

http://example.com/index.php/hogehoge/

CodeIgniterではデフォルトで上記のようなURLを用いてルーティング(必要なコントローラ呼び出し)がされるようになっているようです。

今回の記事はこのURLの中の

index.php

を取り除く為の方法を紹介します。

毎回CodeIgniterの初期設定としてこの作業をせねばならぬだろうと思い、備忘録をかねての投稿です。

困ったときのCodeIgniterユーザガイド

以下にて解説されておりました。素晴らしい。

CodeIgniter の URL – index.phpファイルを外す
http://codeigniter.jp/user_guide/3/general/urls.html#index-php

要は、.htaccessで以下のように書いてあげると良いよ。ということでございました。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

よっしゃ出来た!と思ったら、意外な落とし穴が…

form_openなどを呼び出すと依然として付加されてしまうindex.php!!!

よしよし、と思いながらチュートリアル「ニュース記事を作成」を行っていた時の事、form_openで出力されるURLになぜかindex.phpが付いてしまうということを発見。

ニュース記事を作成 – フォームを作成する
http://codeigniter.jp/user_guide/3/tutorial/create_news_items.html

form_open関数の出力

<form action=”http://localhost/index.php/news/create” method=”post” accept-charset=”utf-8″>

これは、.htaccss以外にも修正箇所があるのではないかと思い、探って見ました。

application/config.phpの修正が必要だった

application/config.phpを見ていた所、それっぽい設定箇所が38行目にありました。

英語の説明文をGoogle翻訳するとこんな感じの事が書いてあるようです。

通常、これはindex.phpファイルになります。ただし、別の名前に変更している場合を除きます。
mod_rewriteを使用してページを削除する場合は、この変数を空白に設定します。

なるほどmod_rewriteを使用してindex.phpを削除している場合はここを空白にせよ。と。
ということで、この設定箇所からindex.phpを外したらform_openでも表示されなくなりました。

$config[‘index_page’] = ”;

感想

CodeIgniter 3の初心者から抜け出せないまま時が経ってしまった。

長期スパンで学んで行くためにも基本的な部分はこれからもブログにしていこうと思いました。



【WP】[Beaver Builder - WordPressページビルダー]プラグインのカスタマイズメモ

WordPressのプラグイン「Beaver Builder- WordPressページビルダー」が個人的に熱い

WordPressはブログツールとして発展してきた経緯もあり、長文を書くのは大変得意です。

しかし、記事をレイアウトしようとすると、途端に難易度が上がります。

コンテンツを2カラムに分けて画像を配置したり、各画像にアニメーションを適用するなどといったことをデフォルトの投稿画面で実施しようとすると、非常に難しいんですよね。

テキストモードでHTMLが書ける人なら良いかもしれませんが、そんな高度なことは制作者ぐらいしか出来ません。

じゃあconcrete5で良いじゃないか!と言われると、ブログもよく書いていたりすると、WordPressからなかなか逃れられない。

そこで最近気に入って使っているのが【Beaver Builder – WordPressページビルダー】というプラグインです。

Beaver Page Builderのカスタマイズ

[Beaver Builder-WordPressページビルダー]のプラグインページはこちら

Beaver Builderで何ができるのか?

どんなことができるかの説明は、きっと以下の動画を見てもらった方が早い。

要はWordPressのコンテンツエリアを見たまま直接編集できる。というプラグインです。レイアウトとモジュールという部品を組み合わせて複雑なページを簡単に実装できます。

まじで簡単だから感動した。そしてサクサク動くのも素敵。

WordPressの公式プラグインディレクトリでは、無料でlite-versionが配布されており、公式サイトより有料版を買うと、さらに多くのモジュールが追加され、より高度なページを簡単に実装できるようになるようです。

という私はまだ無料版しか使っていない(^_^;)

実際に触ってみたいという方は、公式サイトの「Try the Demo」ボタンからお試しで操作を行えます。

ちなみにしっかりと日本語の翻訳も完了しているため、私のような英語の苦手な日本人にもスムーズに操作することが出来ます。(翻訳してくださった方ありがとうございますm(_ _)m)

 

Beaver Builderで困ったこと

無料版だからだと思うのですが、しょっちゅう「どのテンプレートを選ぶ?」的なメッセージボックスが表示されます。もちろん無料版だし、有料版にしてほしい。という気持ちもわからないでも無いけども、ちょっと鬱陶しい。

しょっちゅう表示されるテンプレート選択画面

該当の表示はJavaScriptで制御しているようで、その制御の設定をPHPで出力していました。

beaver-builder-lite-version\includes\ui-js-config.php

なんやかんやソースコードを追っていくと、上記の ‘enabledTemplates’ => ‘core’,の部分を「disabled」に変更してあげれば、該当の表示はしなくなるようでした。

丁度設定用のフィルターフック’fl_builder_ui_js_config’があったので、以下のようなフィルターを追加することで、しょっちゅう出てきたメッセージを表示させなくすることが出来ました。

ただ、この方法だと、テンプレートボタンを押しても何も反応しなくなるので要注意。

お客様に納品する際はテンプレートボタンを非表示にするCSS等を入れてあげましょう。こんな感じで動くかと。

 

まとめ

まだまだ奥が深そうな【Beaver Builder – WordPressページビルダー】。これからも活用していきます。