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の初心者から抜け出せないまま時が経ってしまった。

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



【concrete5】concrete5.7のカスタマイズ(スーパー管理者のこと、サブディレクトリインストール方法、記事ブロックエディタ[Redactor]のカスタマイズ、確認画面付き問い合わせフォームの作成)

concrete5 のサイト構築は道を切り開く醍醐味が味わえる

案外情報が少なくて、concrete5の構築には割りと時間がかかりがちですが、でもそれが面白かったりするわけで。

今回、concrete5でサイトを作る際に躓いたことや小技的なものを共有するために記事にしました。

ちなみにこの記事は、concrete5 5.7.5.9 を対象に作成しています。他のバージョンでも動くかは不明ですが参考にはなるかと思います。

目次

1. 困った:ページタイプのデフォルトブロックが何故か編集できない

2. サブディレクトリにconcrete5をインストールしてルート(/)で公開したい

3. 記事ブロックのWYSIWYGエディタ(Redactor)の挙動を変更したい

4. 確認画面付き問い合わせフォーム(自動返信メールあり)の作成

5.なぜかpage_theme.phpが読み込まれない。bootstrap3のグリッドが有効化できない。(2017年9月27日追記/concrete5 8.1)

困った:ページタイプのデフォルトブロックが何故か編集できない

管理者にも「一般管理者」と「スーパー管理者」の2つがある。スーパー管理者でしか、ページタイプのデフォルトブロックは編集できない

スーパー管理者:一番最初に作成されるユーザー admin ユーザのこと

一般管理者:管理者グループに属している自分で追加したユーザのこと

詳しくは、Katzさん記事が分かりやすかったです。

concrete5 で管理者が複数人いるときの豆知識
http://ja.katzueno.com/2014/11/3288/

サブディレクトリにconcrete5をインストールしてルート(/)で公開したい

やりたいこと

/ ・・・ルートディレクトリにはconcrete5をインストールせず、

/concrete5/ ・・・ concrete5ディレクトリにインストールした状態で、

http://example.com/ にアクセスしても、concrete5を読み出して表示させたい!

理由は聞かないで!そうしたいんだ!

色々と参考になるフォーラムがあったのでそれを参考に実装しました。

フォーラムを読むと、.htaccssだけでも実現可能ということも書かれていましたが、私の場合は、concrete5インストールディレクトリ直下のindex.phpを修正しないと、画像などのパスが「http://example.com/concrete5/・・・」となってしまいましたので、index.phpも修正を行いました。

参考にしたフォーラム記事

https://concrete5-japan.org/community/forums/5-7-x/post-10739/

https://concrete5-japan.org/community/forums/usage/post-2602/

ちなみに動作確認したのはCPIのACE01レンタルサーバです。

修正・作成するファイル

/.htaccess

/concrete5/.htaccess

/concrete5/index.php

/.htaccess の修正内容

ルートディレクトリ直下の.htaccessに以下のルールを記述する。
下2行の「concrete5」となっている部分は、ご自身のインストールしたディレクトリ名に書き換えること。

/concrete5/.htaccess の修正内容

concrete5インストールディレクトリ直下の.htaccessに以下のルールを記述する。
最終行の「concrete5」となっている部分は、ご自身のインストールしたディレクトリ名に書き換えること。

/concrete5/index.php の修正内容

concrete5インストールディレクトリ直下のindex.phpを修正する。
require(‘concrete/dispatcher.php’);よりも上に以下の4行を追加する。
それぞれ「concrete5」となっている部分は、ご自身のインストールしたディレクトリ名に書き換えること。

追加するとこんな感じになる。

動作確認する

自分のサイトURLにアクセスして、concrete5がちゃんと読み出されていることを確認するべし。

記事ブロックのWYSIWYGエディタ(Redactor)の挙動を変更したい

記事ブロックのWYSIWYGエディタのRedactor(リダクター)のカスタマイズ方法です。

concrete5 バージョン8からはCKEditorが使われるようになったので5.7までしか役に立たないかもしれません。ごめんなさい。

以下のドキュメントを参考に行います。

https://concrete5-japan.org/help/5-7/recipes/customizing-redactor-editor/

やりたいこと

・自動的にdiv要素がp要素に変換される処理をやめたい

・spanなどのインライン要素が勝手に消去される処理をやめたい

修正・追加するファイル

/application/bootstrap/app.php

/application/src/Editor/RedactorEditor.php

/application/bootstrap/app.php を修正する

/application/bootstrap/app.php ファイルを開き、以下のソースを追加します。

/application/src/Editor/RedactorEditor.php を追加する

肝になるのが以下の部分。

$options[‘replaceDivs’] = false; // divがpに変換される処理をストップする

$options[‘removeWithoutAttr’] = false; // spanが消去される処理をストップする

それぞれ、

・replaceDivsをfalseにすることでDivが置き換わるのを停止。

・removeWithoutAttrをfalseにすることで属性の付いていないspan等の要素が消されるのを停止。

という設定になります。

確認画面付き問い合わせフォーム(自動返信メールあり)の作成

便利!スイトン(SUITON)確認フォームアドオンを使うと確認画面付きの問い合わせフォームが作れる!

GitHubで公開されているconcrete5 5.7系用確認画面付メールフォーム「suiton_confirm_form_pack」を利用すると確認画面付きのメールフォームが簡単に作れました。

https://github.com/YuzuruSano/suiton_confirm_form_pack

しかも、管理者用の自動返信メールと送信者(問い合わせしてくれた人)用の自動返信メールを別々に設定出来るのも便利でした!

インストール方法・使い方

GitHubにインストール方法や使い方が書かれています。

使う時にカスタムテンプレートの指定を「confirm」に設定することをお忘れなく。私はテンプレート指定が出来ておらず、なんで確認画面が出ないんだ~~!と頭を抱えました。

https://github.com/YuzuruSano/suiton_confirm_form_pack

なぜかpage_theme.phpが読み込まれない。bootstrap3のグリッドが有効化できない

page_theme.php に以下の記述をして、enableGridContainer を呼び出すとエラー画面が表示される。あ、これだけ、concrete5 version 8.1で起きたことです。

page_theme.php

テーマのグリッド設置部分で以下のようにエリアを呼び出す。

home.php

エラー発生内容

予期せぬエラーが発生しました。
グリッドフレームワークが見つかりませんでした。グリッドエリアのメソッドには、PageTheme クラスで定義された有効なグリッドフレームワークが必要です。

No grid framework found. Grid area methods require a valid grid framework defined in a PageTheme class.

対処方法

テーマをアンインストールして再度インストールし直す(テーマを切り替えるだけではダメ)とGridフレームワークが認識されてエラーが消えた。

page_theme.phpはテーマのインストール時に保持されるっぽいかも?

まとめ

concrete5を使った制作のお役に立てれば幸いです。

Version 8が出ているのになんで5.7やねんというツッコミが来そうですが。大人の事情をお察しください。

concrete5の最新バージョン「concrete5 Version 8」はExpressと呼ばれるkintoneチックなデータベースを作れる機能が追加されるなど更に進化をしています。

興味がある方は、ぜひ最新バージョンをダウンロードして使ってみましょう!

https://concrete5-japan.org/

2017年1月25日には、8.1.0もリリースされています!

https://concrete5-japan.org/news/concrete5-810/



【concrete5】concrete5 ver5.7のフォームに自動返信機能をつける方法

concrete5のフォームブロックには、自動返信機能が無い!

concrete5のフォームブロックにはフォームを送信してくれた人に対する自動返信の機能が付いていません。

企業サイトでは自動返信をお客様に対して送信ほしい。という事をよく言われるので自動応答出来ないとちょっと困りますよね。

アドオンや外部フォームを使うなどの実現方法もありますが、わりと簡単に自動返信機能のカスタマイズは行なえますので、その方法をご紹介します。

自動返信メールの設定手順

以下の流れで自動返信機能を追加します。コピペで出来ると思うので、怖がらずにチャレンジしてみてくださいね。

  1. フォームブロックを使ってフォームを作る
  2. 自動返信メールの雛形を作成する
  3. フォームブロックに自動返信処理を追加する

1. フォームブロックを使ってフォームを作る

普通にフォームブロックを使ってフォームを作りますが、メールアドレスフィールドの設定を忘れないようにしましょう!

1-1. メールアドレスフィールドを追加して、【このEmailアドレスへ返信 】にチェックを入れる

このアドレスに自動返信することになります。もちろん必須入力にすることをお忘れなく。

メールアドレスフィールドを作る

 

補足:サイト管理者へのフォーム送信通知メールの設定も忘れないように

フォームの送信があった時に、サイト管理者へメールで通知出来るように以下の設定も忘れないようにしましょうね。意外と忘れがちなので。

通知メールアドレスを設定する

 

2. 返信メールの本文を作成する

ココからは、concrete5のapplicationフォルダに必要なファイルを追加していきます。

GitHubにサンプルファイルを置いたので、まずは以下からダウンロード下さい。

GitHubから雛形をダウンロードする

以下に自動返信処理の雛形を置いたのでダウンロードしてきて下さい。

利用するのはapplicationフォルダ配下のみです。

https://github.com/onocom/concrete5-formblock-auto-reply-skeleton

2.自動返信メールの雛形を作成する

GitHubからダウンロードしたファイルの中から以下のファイルを開きます。

/application/mail/block_form_auto_reply.php

このファイルが自動返信メールで利用されるメールテンプレートになります。
開いたら、以下部分の冒頭文・署名を好きな文言に書き換えます。

3.フォームブロックに自動返信処理を追加する

次は、自動返信処理を追加していきます。

と言っても、先ほどGitHubよりダウンロードしたPHPファイルに送信処理は記述しておいたので、送信元メールアドレスや、送信者名、メールの件名等のパラメータを変更してあげるだけで良いかと思います。

GitHubからダウンロードしたファイルの中から以下のファイルを開きます。

/application/blocks/form/controller.php

580行目あたりから始まる以下の部分を書き換えていきます。

コメントにあるとおり、送信者名($myFromName)・送信者のメールアドレス($myFromAddress)・メールの件名($myMailTitle)を書き換えます。

メールのテンプレート名($myMailTemplate)は基本的にこのままで大丈夫ですが、オリジナルのメールテンプレートを利用したい場合は、ここにそのテンプレート名を設定します。

4. ファイルをアップロードしよう

編集が終わったら編集を行った以下の2ファイルをサーバ上の同じディレクトリにアップします。

mailディレクトリやblocksディレクトリ、formディレクトリが存在しない場合は、作成します。必ず、このパスになるようにファイルを配置しましょう。

/application/mail/block_form_auto_reply.php
/application/blocks/form/controller.php

※ もし上記ファイルが既に存在している場合、ファイル比較ソフトを利用するなどして慎重にマージして下さい。

これで多分おそらく、フォームに自動返信機能が付加されているはずです。

試しに送信することをお勧めします。

まとめ

まだまだ改善の余地はありますが、少しばかりの道筋は示せたかと思います。

このカスタマイズ方法がご参考になれば幸いです。

改善の余地

必要な関数のみオーバーライドしたほうがメンテナンス性高そう。

複数フォームが設置されている場合のことをもう少し考慮したほうが良い。

concrete5 Version8が出てるけど動くかは検証出来ていない。

動作確認環境

concrete5 Version – 5.7.5.13



【Adobe Photoshop CC 2017】カラーピッカーが壊れた・おかしい!いつもと違う!Windows標準のカラーピッカーだ!という時の解決方法

突然Photoshopのカラーピッカーが壊れた!?
何をやってもWindows標準のカラーピッカーが表示される!!

なぜだ!Photoshopのカラーピッカー(色を選択する画面)が突然、壊れた!

なぜかWindows標準のカラーピッカーになってる!ワークスペースを変更しても駄目で、再起動しても駄目。

検索しても出てこなかった(検索ワードが思いつかなかった)のでメモ。

環境設定をいつの間にか触っていたのが原因でした。(情けない)

表示されたWindowsのカラーピッカー

Window標準のカラーピッカー

WordとかExcelでたまに見るようなやつ。いつの間にこんな設定になったんや!記憶にない(泣)

16進数のRGBが表示されないし、作業が進まぬ。

【解決策】環境設定を確認・変更しよう

この問題を解決するには、環境設定を確認します。

メニューバー > 編集 > 環境設定 > 一般 を選択して環境設定ウィンドウを開きます。

環境設定

環境設定ウィンドウの【カラーピッカー】という項目が「Windows」になっていました!いつの間に!!!

これを選択して「Adobe」に変更するだけです。

 

環境設定

これでカラーピッカーがWindows標準の味気ないカラーピッカーから、Adobeのカラーピッカーに戻りました。

やったー!

Adobe カラーピッカー

まとめ

ワークスペースの変更やらPhotoshopの再起動など色々試して時間を浪費してしまいました。意外とすんなり解決してスッキリ。

きっと他の設定をした時に気づかずに変更してしまったのだと思います。

勉強になりました。



【Windows】hostsファイルとは、hostsファイルの場所、hostsファイルの編集・書き換え方法

hostsファイルとは

hostsファイル ・・・ ホスツファイルと読む。

DNSより先に参照されるIPアドレスとドメイン名の一覧のこと。

ここにIPアドレスとドメイン名を対にして記載しておくことにより、DNSが応答しないときや、Webサイトを新サーバで構築する時などに活用できる。

hostsファイルを扱うにあたって、事前にネットワークやDNSの仕組みを知っておくとよいかも。

hostsファイルの場所一覧(Windowsの場合)

WindowsのhostsファイルはOS毎に違うのかな。と思って一覧にしたけど同じっぽい。(Windows 10以外はネットで調べました)

Macユーザの方はこちらの記事をどうぞ。[2019年7月17日追記]

●Windows 10のhostsファイル

C:\Windows\System32\drivers\etc\hosts

●Windows 8 / Windows 8.1のhostsファイル

C:\Windows\System32\drivers\etc\hosts

●Windows 7のhostsファイル

C:\Windows\System32\drivers\etc\hosts

●Windows Vistaのhostsファイル

C:\Windows\System32\drivers\etc\hosts

hostsファイルの書き方

hostsファイルをメモ帳やエディタで開き、末尾や任意の行に以下の形式でIPアドレスとホスト名の対応を記述する。

記述形式

記述例

先頭に#を入れることでコメントも使える。

補足・注意事項

hostsファイルを編集するには管理者権限が必要。

メモ帳を開く際に、【メモ帳アイコンを右クリック→管理者として実行】をしてからhostsファイルを開くと編集出来る。

詳しくはMicrosoftのナレッジベースに記載されている。

Windows Vista で Hosts ファイルや Lmhosts ファイルを変更できない
https://support.microsoft.com/ja-jp/kb/923947

Windows 10でも似たようなもんです。

書き換えてから再起動が必要になる場合もある。という記述をウェブ上にチラホラ見かけたけど、Windows 10では再起動の必要はなさそう(実体験)。

DNSより先に参照されることを忘れずに。

DNSよりも先に参照されるので、DNSの設定を変えたのに、古いサーバから新しいサーバに参照先が変わってくれない!ということが起きることもあるかと。

気をつけよう。

まとめ

hostsファイルは慎重に扱いましょう。

普段あまりhostsファイル弄らないんだけど、皆弄ること多いのかな?

 

フリーソフトを使って手軽に更新する方法も

コメントで「Hosts File Manager」というフリーソフトをご紹介いただきました。(ありがとうございます。)

以下からダウンロードいただけますので、hostsファイルを直接触るのは怖いという方は、ご活用されては。

http://softwarefactory.jp/ja/products/hostsfilemanager/