質問 > フロント機能 > 新着情報ブロックの複製 |
フロント機能
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
yohei_t |
投稿日時: 2011/4/23 12:22
対応状況: −−−
|
新米 登録日: 2011/4/23 居住地: 投稿: 1 |
Re: 新着情報ブロックの複製 $smarty.server.PHP_SELF|escapeをif文で切り替えると出来ますよ。
|
ryo |
投稿日時: 2007/8/7 13:57
対応状況: −−−
|
一人前 登録日: 2007/7/26 居住地: 関西 投稿: 86 |
Re: 新着情報ブロックの複製 僕も同様の事で悩んでいたことがあります。
TOPでは新着5件のみ表示して、一覧用のページでは全て表示させるというものです。 そこでブロックを複製できないかと色々悩んだのですが、ブロックを複製するのではなく、ページとして新着情報を表示するページを1枚作ることで対応できました。 詳細は以下の方法でしました。 1.管理画面のデザイン管理から「新規ページ作成」をクリックして、名称(例:テスト)とファイル名(例:testpage)を入力し、メイン表示用のテキストエリアに新着ブロック内のソースを全てコピーします。 2.FTPで「html/user_data/」内にある「testpage.php」をDLし、テキストエディタで開きます。 3.開いたファイルを以下のように修正します。 引用:
4.修正したファイルをULして上書きします。そのページにアクセスすると、デフォルトの(1でコピーしたソースの)通り表示されています。 注)-------------------------------------------------- ページ詳細設定でメイン領域のレイアウトを変更してしまうと、3の修正した内容が全て初期化されてしまいます。注意してください。 レイアウトを修正する場合は「html/user_data/templates/」内にあるtestpage.tplをDLしてテキストエディタで修正するのが手間がないと思います。 |
drednote |
投稿日時: 2007/8/6 8:43
対応状況: −−−
|
常連 登録日: 2007/7/30 居住地: 滋賀 投稿: 41 |
Re: 新着情報ブロックの複製 ページ詳細設定画面で新規ページを作るのではなく、ブロック編集画面で
新規ブロックを作って使った場合、デフォルトではこの新規ブロックで 使われるPHPは、このブロックを呼び出しているメインコンテンツ側の PHPとなる点に注意して下さい。 つまり、新規ブロックとして作成し、これをユーザー作成のオリジナルページでのみ 表示させるのであれば、このユーザー作成のオリジナルページのPHPに データベース処理をさせる事で、作成したブロックにデータベース内容を 反映させる事が出来ますが、そうではなく複数ページから呼び出す等の 場合には独自のPHPを持ちたい事もあるかと思います。 こういう場合にはデータベースを直接編集しなければなりません。 この場合の該当テーブルはdtb_blocで、これのphp_pathがブロックに使用する PHPへの、htmlディレクトリからのパスとなります。 |
ゲスト |
投稿日時: 2007/8/5 23:23
対応状況: −−−
|
Re: 新着情報ブロックの複製 返答おそくなりましてすみません。
結果として、news.phpをコピーして、news2.phpというモジュールを作って、別ブロックを作り、DB直接登録しました(この辺管理画面でできると便利なんですが) で、それを、自分で作ったページから呼び出すような形ですね。 自分のやり方が悪いと思いますが、news.phpの機能を上手く移すことができず、上記のようにな形になってしまいましたがdrednoteさんの意見がとても参考になりました、ありがとうございました。 これまでDB触らないようにカスタマイズしてましたが、今回覗いてみて初めて判ることも沢山ありますね。 |
|
drednote |
投稿日時: 2007/7/30 21:38
対応状況: −−−
|
常連 登録日: 2007/7/30 居住地: 滋賀 投稿: 41 |
Re: 新着情報ブロックの複製 blocはblocで独自に処理用PHPがあったりしますので(但しシステムに最初から
登録されているblocのみ。ユーザー作成blocは管理画面上だけでは テンプレートしか作成出来ません)、データベースアクセスもそっちに 入っていたりします。 新着情報の処理は html/frontparts/bloc/news.php 内の lfGetNews で取得しており、ここで取得したデータをarrNewsとしてobjSubPageに 登録する事で、blocテンプレート内で使用しています。 ですので、新着ページをメインコンテンツエリアに別に作るのであれば、 ページ詳細管理でテンプレートを作った時に一緒に作られたPHP内に 同様の処理を記述する事で、新しく作ったページで新着情報を扱う事が出来るようになります。 |
ゲスト |
投稿日時: 2007/7/30 21:07
対応状況: −−−
|
Re: 新着情報ブロックの複製 すみません、説明が足りてなくて。
現状PHP上で、tpl_page_categoryを宣言して、 main.tpl上では、tpl_page_categoryを使ってIF文などの処理はできてます。 更にその下のページごとのテンプレートを経由して、ブロックのテンプレート(news.tpl)内では、tpl_page_categoryを使った振り分けの処理ができていない状況です。 テンプレートから子テンプレート呼び出して、その中で親の変数つかうには、引き渡すような処理が必要かなと思い、マニュアル参考に <!--{include file='top.tpl' tpl_page_category=$tpl_page_category} なんて、ことを試してみましたが、うまく行ってません。。 (根本的に勘違いしているかもしれませんが。。) また、そもそも、main.tplの上には、frame.tplがあるはずで、そこでもmain.tplになにかひきまわしてるのかなぁっと思っていたのですが、それらしき記述もみつからず。。 という状況です。 |
|
ゲスト |
投稿日時: 2007/7/30 5:56
対応状況: −−−
|
Re: 新着情報ブロックの複製 objPageに変数を登録してやれば、Smarty内でPHPで定義した変数も
使えますがそれはされているのでしょうか? |
|
ゲスト |
投稿日時: 2007/7/30 5:17
対応状況: −−−
|
新着情報ブロックの複製 現在EC CUBEのカスタマイズをしているのですが、どうしてもわからないことがあり、教えていただければ幸いです。
デフォルトでは、新着情報がブロックとして用意されていて、TOPに配置されていますが、トップではタイトルのみ一覧表示して、別途、新着一覧ページを作り、そこでタイトルと本文をダーっと表示する必要があります。(レイアウトも違います) 方法として、 1:管理画面上から/user_data/以下に新着一覧用のページを作り、そのページから新着情報ブロックの内容を複製してレイアウトを整えたものを呼び出す。 2:管理画面上から/user_data/以下に新着一覧用のページを作り、それ自体に新着情報ブロックと同等の機能を移植して実装する。 とかかなぁと思い、試してるのですが、共にうまく行かない状況です。奥の手(?)として、新着情報ブロックのテンプレート内にif文書いて、呼び出す親テンプレートによって、表示を切り替えようとしましたが、ブロック内では、phpで定義した変数が使えないようで撃沈しました。。 こういう場合、どういった実装が考えられますでしょうか? Smartyあまり触ったことなく、2をやろうとしたとき、そもそもDBから値引っ張ってくるような処理本体がどこにはいっているのかがわかってないという状況だったりします。。 |
|
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |