バージョン選択

フォーラム

メニュー

オンライン状況

62 人のユーザが現在オンラインです。 (57 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 62
もっと...

サイト内検索

質問 > フロント機能 > ページを同じディレクトリ内に量産したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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()というメソッドがあるはずですので、
そのメソッドの一番初めに次のように追加してみてください。


  $layout = new SC_Helper_PageLayout_Ex();
  $path = $layout->getTemplatePath($this->objDisplay->detectDevice());
  switch ($_GET['name']) {
    case 'abc1':
      $this->tpl_mainpage = $path.'hoge/abc1.tpl';
      break;
    case 'abc2':
      $this->tpl_mainpage = $path.'hoge/abc1.tpl';
      break;
    default:
      break;
  }


上記の変更の後、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[数字]というパターンであるならば以前のコードを以下のように変更してみてください。


 $layout = new SC_Helper_PageLayout_Ex();
 $path = $layout->getTemplatePath($this->objDisplay->detectDevice());
 if (isset($_GET['name'])) {
   $name = $_GET['name'];
   $this->tpl_mainpage = $path.'hoge/'.$name.'.tpl';
 }


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 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,862名です
総投稿数は109,996件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1294
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.