バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

フロント機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
kanaryo
投稿日時: 2013/2/4 17:43
対応状況: 解決済
常連
登録日: 2011/10/18
居住地:
投稿: 66
Re: ページを同じディレクトリ内に量産したい
dkazuto様
yuh様

ご親切にアドバイスいただきありがとうございました!

おかげさまで希望のアクションが実現いたしました。
少しのCSSと、かじった程度のhtmlしか分からないため、
ショボイ静的ページしか作成できない私ですので、
今回のように希望のアクションを実現させるために、
・修正するべきファイル名、
・コードを記述 or 修正する箇所、
・コード内容
の3点を教えていただけることが何より嬉しいです!!

また、「教えて下さい!」のフォーラムにちょくちょく現れると思いますが、
その時もご指導いただければ何より幸いです。

この度はありがとうございました。m(__)m
dkazuto
投稿日時: 2013/2/4 11:43
対応状況: −−−
一人前
登録日: 2012/5/10
居住地:
投稿: 95
Re: ページを同じディレクトリ内に量産したい
kanaryo様

変更点は以下の部分かと思います。

preg_match('/^[a-zA-Z0-9]+$/',$_GET['name'])

これは、nameで渡される値に制限をかけるためのものです。

たとえば、hoge_hoge.tplというテンプレートを作成して、開いて見てください。

おそらく空白ページになってしまうかと思います。
この処理によって特定のパターンの文字列しか受け付けないようにしています。
※この場合、アンダースコアを無視するようになっています。

変な名前が指定されたときに空白ページを
表示せず、index.tpl(デフォルトのテンプレート)を表示するようにするための対策と言えます。

詳しくは「正規表現」で検索してもらえますと
色々な条件の指定方法が出てくるかと思います。

kanaryo
投稿日時: 2013/2/4 11:19
対応状況: −−−
常連
登録日: 2011/10/18
居住地:
投稿: 66
Re: ページを同じディレクトリ内に量産したい
常連様

アドバイスありがとうございます!

前回教えて下さったコードでも今回のコードでも、
どちらのコードでも下記のようにtplを開くことができます。

例)
abc1.tpl、abc2.tpl、hoihoi.tpl・・・のファイルを用意し、
/data/Smarty/templates/default/hoge
へ全てのtplファイルをアップした後、

http://ドメイン/hoge/index.php?name=abc1
http://ドメイン/hoge/index.php?name=abc2
http://ドメイン/hoge/index.php?neme=hoihoi

でアクセスすると、abc1の部分がabc2でもhoihoiでも、
どのような値でもそれに応じたtplを開くことが出来ます。

今回のコードの方が前回に比べ、何か利点でもあるのでしょうか?
規則性でいうと、index.php?name=の部分までは同じURLにしたいと思っています。
解説いただけると幸いです。
yuh
投稿日時: 2013/2/1 12:43
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: ページを同じディレクトリ内に量産したい
name=abc[数字]で命名規則が決まっているのであれば

$layout = new SC_Helper_PageLayout_Ex();
 $path = $layout->getTemplatePath($this->objDisplay->detectDevice());
 if (isset($_GET['name']) AND preg_match('/^[a-zA-Z0-9]+$/',$_GET['name'])) {
   $name = $_GET['name'];
   $this->tpl_mainpage = $path.'hoge/'.$name.'.tpl';
 }

値のチェックは入れておいた方がいいと思います
kanaryo
投稿日時: 2013/1/31 17:24
対応状況: −−−
常連
登録日: 2011/10/18
居住地:
投稿: 66
Re: ページを同じディレクトリ内に量産したい
常連様

いつも迅速に返信して下さりありがとうございます。

やっと、やっと、、できました。
本当にありがとうございました!!

tplはどんな名前でも開くことが出来ます!
毛穴が全開になるほど嬉しいです\(◎o◎)/!

この度は懇切丁寧にご指導いただき、ありがとうございました。
また、機会があればよろしくお願い申し上げます。
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 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
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のファイルがあれば常連様が教えていただいたコードを、
ファイルに記述してテストしたいのですが…。

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 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
(1) 2 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は89,076名です
総投稿数は110,023件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1296
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.