2011-01-05 15 views
0

私は、ページを自動的に生成するのではなく、コードを生成してPHPページに追加するためにユーザに提供するCMSを開発中です。codeigniterページを非codeigniter PHPページに組み込む

私はアプリケーションをCIに移行していますが、このプロセスの設定方法には苦労しています。これはほとんどの作品2つのCodeIgniterのインデックスページ(最初のコントローラおよびインデックスパスを変更する接続するための主要なアプリケーションやその他のための1)を行うことにより

、私は何を望むだろうが、このようなものになるだろう:

<?php include("cms/connector.php"); ?> 
<html> 
.. 
<body> 
<h1>Static</h1> 
<?php echo($cms['data']); ?> 
</body> 

ファイルを正しくプルして呼び出されたビューを実行しますが、ビューの変数は保存されません。

また、私はしかし、彼らは取得しようとしているCMSのページを標的とする能力を必要としない:

<?php include("cms/connector.php/cms/2"); ?> 

はもはや機能します(拡張子がないので、私は推測?)私は仕事にこの部分を取得することができれば私はすべてのアイデアは、私ならば、アプリケーションがさまざまなセットアップにホストされていることができたので、私はそれをしたいと思い

素晴らしいことだページ

上で直接ビューを含めることができますので、私は、変数を心配する必要はありませんダイレクトを含める必要性を回避することができますURL(http)はデフォルトでは常にオンになるとは限りません。また、私はコンテンツを検索エンジンでうまく拾いたいので、Ajaxを利用したくありません。

+0

「ファイルが正しくプルされ、呼び出されたビューが実行されますが、ビューの変数は保存されません」ということを明確にすることはできますか?ビューの変数はどういう意味ですか?フォームが提出されたらどういう意味ですか?または、ビューファイルの変数が表示されないということですか? "2 codeigniter index pages"とはどういう意味ですか? 2つのコントローラーを意味しますか? – kevtrout

+0

申し訳ありませんが、変数が保存されていないと言うと、ページに表示されるビューに何かをエコー表示すると、ビューは機能しています。私は変数がとにかく渡されることは期待しませんが、それらを含めてファイルに渡す方法があるかどうかはわかりません。 – kilrizzy

+0

私は2つのコードイグナイターインデックスページ(ルートインデックスページ)を試してみると、別のコントローラーに/cms/index2.phpを訪問するだけで、代わりに2つ目の問題が発生しました。インデックスページのために働いていて、その後のコントローラではない – kilrizzy

答えて

1

PHPのcURL moduleを使用することができます。以下は、ドキュメントの例から抜粋したものです。これはこれは、あなたが別のページでこれを含めている場合、あなたが望むものではないなど、DOCTYPEを含め、<head>をドキュメント全体を引っ張ってくること

<?php 
// create a new cURL resource 
$ch = curl_init(); 

// set URL and other appropriate options 
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/cms/connector.php/cms/2"); 
curl_setopt($ch, CURLOPT_HEADER, 0); 

// grab URL and pass it to the browser 
curl_exec($ch); 

// close cURL resource, and free up system resources 
curl_close($ch); 
?> 

は注意してください。あなたは、おそらく..出力文書の本文のみに

+0

本当に...これはあなたがやることです? – RobertPitt

+0

いいえ、本当はそうではありません。しかし、一時的な解決策として、それは動作します。 –

+0

これにはどのような短所がありますか?これはさまざまな設定でホストされるため、これは遅いか無効になることが多いですか? – kilrizzy

-1

CodeIgniterのルート環境を設定されているあなたがする必要がどのようなURI

の環境状態に応じてアプリケーションをconnector.phpを変更すると、インデックスビューを含めますそのようなファイル:

$_SERVER["REQUEST_URI"] = "cms/2"; 

//Set GET action,method params etc 

require_once "path/to/index.php"; 

あなたはCI指数は、それはあなたが、コントローラ及び方法を見つけて実行する必要がありますサーバー変数などを読み込み、ファイルをロードすると、私はあなたのようにライブラリ/ビューファイルを変更することも助言します出力時にスクリプトが終了することがあります。

また、あなたは、ウィスコンシン州HTOバッファ

+0

私はサーバvarを設定していますが、インデックスページに留まっているようです(CI出力--No​​ URIデータがあります)。 – kilrizzy

+0

私が遭遇する可能性のあるもう1つの問題は、1ページに約2ブロックのテキストを含めることです(約ページのコンテンツブロックとページのフッターのブロックを使用することがあります) – kilrizzy

0

をキャッチするためにob_start()などに見えるかもしれませんあなたはAPIを設計しているような音。

(そして、あなたは残りのそれの半分とカスタムスクリプトのためのCIを使用している理由は、私はよく分からない。CIは、あなたのニーズに対応することができます。)

次の提案は明白であるか、またはあなたの外に期待かもしれません答えが得られますが、それが助けになる機会があれば、それをテーブルに載せたいと思っていました。

あなたの質問とコメントを正しく理解していれば、サーバーにサイトを持っているユーザーがいることになります。また、自分のサイトに貼り付けるコードを提供するアプリケーションがあります。このコードは、サーバー上の情報と何らかの形で機能します。あなたが要求

  • ユーザーはあなたが情報を返すために必要な変数情報
  • のいくつかの種類を提供を認証する方法が必要か、貼り付けコード
  • から情報の要求を受けたコントローラが必要

    1. ユーザーが提供する変数に基づいて、検証が成功するとHTMLが表示されます。

    Codeigniterを使用すると、セグメントベースのURLまたはクエリ文字列を扱うことができます。それはbox with segments, but can be configured to work with query stringsを好きであり、動作します。

    あなたは

    1. コントローラの名前が含まれているURLを構築し、代わりにあなたが
    2. 要求を認証するためのトークンを前記第二インデックスページの要求を(処理するように機能することができる。これが理想的でしょうトークンが作成され、ユーザに発行されたときに、DBに格納されている情報を比較するために使用することがこの記事をチェックアウト:。http://www.infoq.com/news/2010/01/rest-api-authentication-schemesとこれも1:ユーザによって提供http://oauth.net/
    3. 情報を

    例:お使いのコントローラが要求を処理

    "example.com/cms/(index.php)/connector/function-name/auth-token/user-info" 
    

    たら、ユーザーに情報を返します。

  • +0

    これは別の方法ですユーザーは自分のcmsアプリケーションをダウンロードし、自分のサーバーに追加します。アイデアは、彼らが動的なコンテンツを持つために彼らのウェブサイトを精査する必要はないということです。私のアプリは、動的コンテンツを既存のWebページに引き込むコードを提供します。私は、ちょうどdbに必要な呼び出しを行い、コードイグナイターで作業するのではなく内容をアセンブルする別の外部スクリプトを書く必要があるかもしれないと思う – kilrizzy