質問 > フロント機能 > ページを同じディレクトリ内に量産したい |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
kanaryo |
投稿日時: 2013/1/30 18:17
対応状況: −−−
|
常連 登録日: 2011/10/18 居住地: 投稿: 66 |
ページを同じディレクトリ内に量産したい 同じディレクトリ内にページを量産したいのですがphpのコードが全然わかりません。
現在、管理画面より新規ページ作成で、user_data内に作成されたページのDBを修正し、 それぞれのphpファイル、tplファイルのディレクトリを移動し、 http://ドメイン/hoge/index.php で表示されるページを作りました。 /data/Smarty/templates/default/hoge内のindex.tplファイルをコピーしてabc1とリネームし、 下記の様なURLでアクセスした際にそれぞれのページを表示させたいのです。 http://ドメイン/hoge/index.php?name=abc1 (abc1.tplを表示) http://ドメイン/hoge/index.php?name=abc2 (abc2.tplを表示) 以下、同様にページを量産 量産したいページはデザインまわりは同じで、中身のテキストだけが異なる静的なページです。 管理画面から新規ページ作成で、その都度DBを修正したり各ファイルのディレクトリを移動させるのは大変ですし、 管理画面で表示されるページが増えてきて管理が大変になります。 css htmlは少しは分かるのですがphpのロジックが全くわかりません。 どのファイルのどの部分に、どんなコードを記述すればよいのか、 どなたか教えていただきたいのです((+_+)) バージョン:2.11.4 PHP 5.2.17p3 |
dkazuto |
投稿日時: 2013/1/31 2:23
対応状況: −−−
|
一人前 登録日: 2012/5/10 居住地: 投稿: 95 |
Re: ページを同じディレクトリ内に量産したい kanaryo様
いろいろな方法が考えられますが、ひとつご紹介します。 PHP内で表示するテンプレートを書き換えてしまうという方法です。 現在、以下のようなファイル構成になっていると仮定します。 /data/Smarty/templates/default/hoge/index.tpl /data/Smarty/templates/default/hoge/abc1.tpl /data/Smarty/templates/default/hoge/abc2.tpl /data/class/pages/hoge/LC_Page_Hoge.php というファイルが存在するかと思います。 そのファイルの中にaction()というメソッドがあるはずですので、 そのメソッドの一番初めに次のように追加してみてください。
上記の変更の後、http://ドメイン/hoge/index.php?name=abc1 にアクセスすると、abc1.tplが表示されるかと思います。 以上、ご参考になればと思います。 |
kanaryo |
投稿日時: 2013/1/31 9:01
対応状況: −−−
|
常連 登録日: 2011/10/18 居住地: 投稿: 66 |
Re: ページを同じディレクトリ内に量産したい 常連様
さっそくの投稿アドバイスありがとうございます。 >現在、以下のようなファイル構成になっていると仮定します。 >/data/Smarty/templates/default/hoge/index.tpl >/data/Smarty/templates/default/hoge/abc1.tpl >/data/Smarty/templates/default/hoge/abc2.tpl おっしゃる通り、上記のファイル構成になっていますが、 /data/class/pages/hoge/LC_Page_Hoge.php というファイルが存在しないのです。 元々のページ作成の際、管理画面から新規作成ボタンで user_dataフォルダ内に生成されたページを修正したもので、 存在するのは、html/hoge/index.phpのみです。 abc1.tplやabc2.tplは、index.tplをコピー複製した後、 リネームしたファイルです。 ですから、http://ドメイン/hoge/index.php でアクセスした際は、index.tplのページが表示されますが、 http://ドメイン/abc1.php http://ドメイン/abc2.php でアクセスしてもphpファイルが無いのでページが表示されません。 abc1、 abc2、…abc100…abc200 というように100ページ、200ページと大量にページを量産していきたいのです。 どうぞよろしくお願いいたします。m(__)m |
dkazuto |
投稿日時: 2013/1/31 9:57
対応状況: −−−
|
一人前 登録日: 2012/5/10 居住地: 投稿: 95 |
Re: ページを同じディレクトリ内に量産したい kanaryo様
すみません。 hogeというのはECCUBEにデフォルトで設置してあるaboutsフォルダや cartフォルダを示す任意の名前と勘違いしておりました。 新しいディレクトリを作成して、その中に任意の数のファイルを追加したいということでしょうか。 それですとページ追加という作業が必要になります。 ページの追加をおこなうには、以下のページなどを参考にしてみてください。 http://ameblo.jp/brainy-software/entry-11219056962.html 最終的に以下の項目が追加されている状態となるかと思います。 /data/class/pages/hoge/LC_Page_Hoge.php /data/class_extends/page_extends/hoge/LC_Page_Hoge_Ex.php /data/Smarty/templates/default/hoge/index.tpl /html/hoge/index.php また、ページ追加の場合にはデータベースにてdtb_pagelayoutのデータも 追加する必要がありますのでご注意ください。 |
kanaryo |
投稿日時: 2013/1/31 13:00
対応状況: −−−
|
常連 登録日: 2011/10/18 居住地: 投稿: 66 |
Re: ページを同じディレクトリ内に量産したい 常連様
返信ありがとうございます。 ページの追加は出来るのですが、 http://ドメイン/hoge/index.php?name=abc1 という様なURLで表示させたいのです。 何故ならば、通常にページを追加するとuser_dataフォルダ内に自動生成されます。 この場合、http://ドメイン/user_data/hoge/abc1.php などというように、URLにuser_dataが必要になります。 そこで、データベースを修正し、user_dataに生成されたphp、tpl の各ファイルを任意のディレクトリ(この場合hoge)に移動させると、 http://ドメイン/hoge/abc1.phpのURLで表示が可能です。 ですが、上記のような作業ですと、ページ(tplファイル)の数だけ phpファイルも発生しますし、100ページや200ページとなると、 管理画面で表示されるページのタイトル数が膨大になります。 ですので、tplファイルのみをコピー複製し、それを任意のファイル名(abc1など) に変更して大量に増やしていき、1つのphpファイルでアクセスURLに応じた ページを表示させたいのです。 http://ドメイン/hoge/index.php?name=abc1(この場合はabc1のtplを表示) http://ドメイン/hoge/index.php?name=abc2(この場合はabc2のtplを表示) ・ ・ ・ 以下、何ページ作ったとしても増えるのはtplファイルのみで、 phpファイルは増えない。例えるとブログのような感じですかね。 どうか、よろしくお願いいたします。m(__)m |
dkazuto |
投稿日時: 2013/1/31 14:28
対応状況: −−−
|
一人前 登録日: 2012/5/10 居住地: 投稿: 95 |
Re: ページを同じディレクトリ内に量産したい kanaryo様
こんにちは。 http://ドメイン/hoge/index.php?name=abc1 という形式でアクセス可能です。 追加していただいたPHPファイル(/data/class/pages/hoge/LC_Page_Hoge.php) のaction()メソッド内に2レス目に私がお教えしたコードを記述してみてください。 http://ドメイン/hoge/index.php?name=abc1 でアクセスすれば、abc1.tplの内容が表示され、 http://ドメイン/hoge/index.php?name=abc2 でアクセスすれば、abc2.tplの内容が表示されます。 hoge.phpやLC_Page_Hoge.phpはひとつでかまいません。 以上ご確認ください。 |
kanaryo |
投稿日時: 2013/1/31 14:51
対応状況: −−−
|
常連 登録日: 2011/10/18 居住地: 投稿: 66 |
Re: ページを同じディレクトリ内に量産したい 常連様
返信ありがとうございます。 私の説明が下手なのでしょうか(^_^;) 管理画面から新規ページ作成機能でページを追加した場合、 生成されるファイル場所とファイル名は下記の通りです。 (hoge/任意名.phpに作成する場合) /html/user_data/hoge/任意名.php /data/Smarty/templates/default/user_data/任意名.tpl ですので常連様がおっしゃるLC_Page_Hoge.phpのファイルは生成されないのです。 LC_Page_Hoge.phpのファイルがあれば常連様が教えていただいたコードを、 ファイルに記述してテストしたいのですが…。 |
kanaryo |
投稿日時: 2013/1/31 15:10
対応状況: −−−
|
常連 登録日: 2011/10/18 居住地: 投稿: 66 |
Re: ページを同じディレクトリ内に量産したい 常連様
出来ました!!!!!!!! 最初に生成されたphpファイルのaction()メソッド内に、 常連様が教えてくれたコードを記述すれば出来ました! ですが・・・ case 'abc1': $this->tpl_mainpage = $path.'hoge/abc1.tpl'; break; case 'abc2': $this->tpl_mainpage = $path.'hoge/abc2.tpl'; の部分に、tplが増える度に書き足さなくてはいけないのですよね。 今後の予定として、abc1〜abc1000というように、 1000ページ以上になると思うのですが・・・。 phpファイルに書き足さなくてもいい方法はないのでしょうか(+_+)?? よろしくお願いいたします。。m(__)m |
dkazuto |
投稿日時: 2013/1/31 16:56
対応状況: −−−
|
一人前 登録日: 2012/5/10 居住地: 投稿: 95 |
Re: ページを同じディレクトリ内に量産したい kanaryo様
おめでとうございます。 常にname=abc[数字]というパターンであるならば以前のコードを以下のように変更してみてください。
switch文をまるっと消してしまい、name=abc[数字]というパラメータが送られたときは そのnameに該当するテンプレートを割り当てるという処理に切り替えています。 name=testtestで送信すると testtest.tplが適用されるというな仕組みです。 以上、お試しください。 |
kanaryo |
投稿日時: 2013/1/31 17:24
対応状況: −−−
|
常連 登録日: 2011/10/18 居住地: 投稿: 66 |
Re: ページを同じディレクトリ内に量産したい 常連様
いつも迅速に返信して下さりありがとうございます。 やっと、やっと、、できました。 本当にありがとうございました!! tplはどんな名前でも開くことが出来ます! 毛穴が全開になるほど嬉しいです\(◎o◎)/! この度は懇切丁寧にご指導いただき、ありがとうございました。 また、機会があればよろしくお願い申し上げます。 m(__)m |
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |