• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPとSmartyで、ブログサービス的なシステムを構築しております。)

PHPとSmartyでブログサービス的なシステムを構築する方法

このQ&Aのポイント
  • PHPとSmartyを使用して、ブログサービス的なシステムを構築します。管理画面からの投稿をデータベースに挿入し、選択されたテンプレートに基づいてコンテンツを表示します。
  • ブログサイトのデザインを選択し、自動的にテンプレートを切り替える機能を追加する予定ですが、実装方法に悩んでいます。テンプレートの呼び出しは実装可能ですが、ファイル名を変更せずにデザインを変更する方法はありませんか?また、動的URLも避ける必要があります。
  • ハッシュタグ: #PHP #Smarty #ブログサービス #デザイン変更 #テンプレート選択

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

どうも、説明がわかりにくいとは思いましたが、少し見えました。 要は、 1、カスタマイズ操作的なものでテーマ=テンプレートを変更する 2、対象のブログに不特定多数の誰かが、アクセスした際には、変更したテンプレートが使われる 3、不特定多数なので、以前のセッションというものは存在しない ということのようですね。 ならばむしろ、簡単になりましたね。 1、テンプレートのパスをデータベースに入れる 2、ブログのページでは、必ずDBを検索してテンプレートのパスを検索する 3、phpでテンプレートのファイル名にテンプレートのパス名を追加して呼び出す

nazal2010
質問者

お礼

あーなるほど! 何となくロジックは見えてきました。 >3、phpでテンプレートのファイル名にテンプレートのパス名を追加して呼び出す に関しては、理解するのに少々時間が掛かりそうですが、 とりあえずアドバイスをいただいた方法でトライしてみようと思います。 本当にありがとうございました。 大変助かりました。(精神的な部分も含め) また、先でつまづく事がありましたら、どうぞよろしくお願いいたします。m(_ _)m

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

要はテンプレートを変更しても URLは変えないってことですよね。 しかも、GET を見せない。 普通にセッションで変数をまわすだけで良いと思いますが、 格納場所は、DBでもcookieでも良いので。 テンプレートを買えるのにファイル名を変えないだけなら、格納しているパスの名前を ユニークにして、ファイル名を同じにするだけで良いと思います。 こういうのならフレームワークならシステム的にサポートしているので私なら 考えずにそちらを使いますかね。

nazal2010
質問者

補足

お忙しい中ご回答をいただき、大変感謝いたします。 「セッション」と聞いて、あれ?と思ったのですが、 それは管理画面のデザインの変更という意味でおっしゃって いただいたのでしょうか? もし、その様なお考えでしたなら、そうでは無く不特定多数の 閲覧者が見るページの事です。(記事が投稿されたページ) よくある大手ブログサービスの管理画面で、自分のブログのデザインを 変更するといった形です。 もし勘違いなされていましたら、私の説明不足で大変申し訳ございませんした。。。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Smartyについて教えてください。

    Smartyについて教えてください。 参考書によってテンプレートの存在するディレクトリを指定している場合(1)と していない場合(2)がありますが、 どちらが正しいのでしょうか? (1) ********************************************* require_once('smarty/libs/Smarty.class.php'); $smarty = new Smarty(); $smarty->template_dir = "template02/"; $smarty->compile_dir = "compile/"; $smarty->display("content.tpl"); ********************************************* (2) ********************************************* require_once('smarty/libs/Smarty.class.php'); $smarty = new Smarty(); $smarty->display("content.tpl"); *********************************************

    • ベストアンサー
    • PHP
  • smaryテンプレートを使う上で、Smartyオブジェクトを二つ作成し

    smaryテンプレートを使う上で、Smartyオブジェクトを二つ作成し、それぞれのそのなかの変数をひとつのテンプレートに表示するという方法は可能でしょうか?つまりそれぞれを同じテンプレートに表示する、という方法はできるのでしょうか?PHPは下記のようになります。 $smarty = new Smarty(); $smarty2 = new Smarty(); $smarty->assign('abc', $def); $smarty2->assign('ghi', $jkl); $smarty->display('aaa.tpl'); $smarty2->display('aaa.tpl'); それとも、オブジェクトと表示するテンプレートは1つずつでないといけないとだめで、$smartyと$smarty2は、どっちかひとつに統一する必要があるのでしょうか?

    • ベストアンサー
    • PHP
  • Smartyが外部CSSを読み込んでくれません。

    PHPとSmartyを勉強中です。 XHTMLでテンプレートを作り、test.tplと名前を付けてtemplatesフォルダに保存しました。 次に、test.phpで 「$smarty_obj -> display("test.tpl");」としてブラウザ表示してみました。 すると、test.tplの外部リンクのスタイルシートが無視されてしまいます。テンプレートどおりのデザインを表示したいのですが、どうしたらよいのでしょうか。宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • smartyテンプレート読み込みについて

    Smarty動的Webサイト構築入門という書籍を見ながらSmartyを学習しているのですが、書籍のCD-ROMから落としたサンプルファイルを保存しているのですがどうしてもテンプレートを読み込むことができません。 03_01.php <?php require_once("../smarty/libs/Smarty.class.php"); $smarty = new Smarty(); $smarty->template_dir = "templates"; $smarty->compile_dir = "templates_c"; $smarty->assign("name", "Smartyさん"); $smarty->display("03_01.tpl"); ?> 03_01.tpl Hello, {$name}!! エラーメッセージ Warning: Smarty error: unable to read resource: "03_01.tpl" in C:\xampp\htdocs\smartybook\smarty\libs\Smarty.class.php on line 1092 03_01.phpは、C:\xampp/htdocs/smartybook/ren/に保存しています。 03_01.tplは、C:\xampp/htdocs/smartybook/templates/に保存しています。 どこが駄目なのか教えてください。 宜しくお願いします。

    • 締切済み
    • PHP
  • ロリポップでSmartyのtpl読み込みエラー

    下記のコードを実行すると、  Smarty error: unable to read resource: "template1.tpl"  というエラーが出てしまいます。 $smarty->template_dirで指定したディレクトリ名の中に  "template1.tpl"というファイルは配置してあります。  原因などわかればおしえていただけないでしょうか。 index.php <?php require_once("Smarty.class.php"); $smarty = new Smarty; $smarty->template_dir = './templates/'; $smarty->compile_dir = './templates_c/'; $smarty->config_dir = './configs/'; $smarty->cache_dir = './cache/'; $smarty->display("template1.tpl"); ?> 【サーバ】  ロリポップです。 【その他】 index.phpをホームディレクトリ配下におくとエラーは消えます。 【ディレクトリ構成】 modules/index.php と templates/template1.tpl をがあり、 index.php から template1.tpl を読み込もうとしています。  ・modules →index.php ・templates →template1.tpl

    • ベストアンサー
    • PHP
  • PHP+smartyで困っております。

    今までASPで開発をおこなっておりましたが、PHPを勉強中のPHP初心者です。 さて、smartyでの表示ですがどうしてもうまくいきません。 $smarty->assign("info",manage::getinfo(18,$a_db)); $smarty->display("comp_regist2.tpl"); で、smartyを利用したいのですが、値が表示されません。 {debug} にて下記値がわたされているのは確認しております。 Array (1) 0 => manage Object (2) _id => 18 _company_name => AAA店 tplファイルに、下記内容を記入してみましたが、表示されません。 {$info._id|escape}<hr> {$info._company_name|escape}<hr> {$_id}<hr> {$_company_name}<hr> {debug} {$info._id} {$info._company_name} 丸二日、、、こんなところではまっております。 お教えいただけませんでしょうか?

    • ベストアンサー
    • PHP
  • Smartyに関しまして

    require_once("Smarty/Smarty.class.php"); $smarty = new Smarty(); $smarty->template_dir = "./templates"; $smarty->compile_dir = "./templates_c"; $smarty->assign("message", "こんばんは"); $a = array('hello','php','html'); $smarty->assign('a',$a); $smarty->display("index.tpl"); これでindex.tplで出力すると日本語部分が「?????」になってしまいます。 何か設定がいるんでしょうか??

    • ベストアンサー
    • PHP
  • Smartyのエラーが2つずつ出ます

    PHP5+Smartyでサイトを作っています。 「$smarty->display("hoge.tpl");」としてテンプレートファイルを呼び出します。 そのテンプレートファイル「hoge.tpl」が存在しない時に、以下のエラー文が必ず2つ表示されます。 Warning: Smarty error: unable to read resource: "hoge.tpl" in /root/.../smarty/Smarty.class.php on line 1092 一度しか呼び出していないのにエラーが2つ表示されるので、コードの記述ミスかと考えたのですがわかりませんでした。 テンプレートファイルがある場合は、テンプレートが二度呼び出されることはありません。 エラー文にある1092行目からコードを追って見たのですがわかりませんでした。 どうすればエラー表示を1つにできるのでしょうか? 宜しくお願いします。

    • 締切済み
    • PHP
  • Smartyエラーについて

    いつもお世話になっております。 Smartyのエラーが解決できなくて困っています。 お手数ですが、後教授願えないでしょうか。 使用環境:Ubuntu Eclipse [エラー] Fatal error: Uncaught exception 'SmartyException' with message 'Unable to load template file 'list.tpl'' in /home/mobapendev/public_html/Smarty/sysplugins/smarty_internal_template.php:163 Stack trace: #0 /home/mobapendev/public_html/Smarty/sysplugins/smarty_internal_template.php(550): Smarty_Internal_Template->isExisting(true) #1 /home/mobapendev/public_html/Smarty/Smarty.class.php(338): Smarty_Internal_Template->getRenderedTemplate() #2 /home/mobapendev/public_html/Smarty/Smarty.class.php(382): Smarty->fetch('list.tpl', NULL, NULL, NULL, true) #3 /home/mobapendev/public_html/mobapen/list.php(20): Smarty->display('list.tpl') #4 {main} thrown in /home/mobapendev/public_html/Smarty/sysplugins/smarty_internal_template.php on line 163 ディレクトリ構成 Smarty/Smarty.class.php Project/list.php Project/php/common.php project/smarty/templates/list.tpl project/smarty/templates_c project/smarty/cache project/smarty/configs となっており、 common.phpにて、 $dir = getcwd(); $smarty->template_dir=$dir .'/smarty/templates'; $smarty->compile_dir=$dir .'/smarty/templates_c'; $smarty->config_dir=$dir .'/smarty/configs'; $smarty->cache_dir =$dir .'/smarty/cache'; list.phpにて require_onceで取り込みまいしたが、 $smarty->display("list.tpl"); ディレクトリは間違っていないとは思っているのですが、 どこでload出来てていなか分からず、攻め上げいている状況です。 以上、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • PHP4.3.9+smartyのsessionについて

    お世話になります。 PHPで、ログイン画面・入力画面・登録を作りたいと思ってます。 手始めにsessionをクッキーを使わずに使用したいと思い簡単に作ってみました。 login.phpの記述(ログイン) $smarty=new SubSmarty; session_start(); $_session[] $_session["id"]='abcde'; $smarty->display("insert.tpl"); nyuryoku.tpl <html> <head> </head> <body> {$smarty.session.id} </body> <html> この時点でsessionの中身が見れません。 よろしくお願いします。

    • ベストアンサー
    • PHP