1

私は CMS を開発しているので、それぞれのサイトのグローバル css ファイルをデータベースに保存してロードする必要があります。util というコントローラーがあり、メソッドは sitecss と呼ばれます。したがって、私のメイン ラッパー ビューは次のようになります。

<link rel="stylesheet" type="text/css" href="/util/sitecss">

css は読み込まれますが、効果はありません。ページのソースを表示してリンクをクリックすると、css が正常に表示されます。だから私はそれがロードされていることを知っています。それはファイルから来ていないということですか?それとも、キャッシュされていないのにキャッシュされているとブラウザが想定しているのでしょうか?

静的ファイルを作成し、上記に変更すると

<link rel="stylesheet" type="text/css" href="/css/site.css">

すべてがうまく機能します。ハンドラー ashx ファイルを使用して .NET でこれを行うと、正常に動作します。私が問題を抱えているのは、Codeigniterを使用したphpです。誰かが「なぜ静的ファイルを作成しないのですか?」と尋ねるでしょう。答えは、このアプリケーションには実用的ではないということです。これは、展開が非常に迅速な数千のサイト向けです。

前もって感謝します!

編集:

私のコントローラーメソッドは次のようになります。

function sitecss() {
    $cssdata = $this->cmsutils->loadCss($this->session->userdata('sitecss'));
    echo $cssdata;
}

では、最初に MIME タイプをエコーすることはできますか? 内でこの呼び出しを行っているため、これは機能しないようです

4

2 に答える 2

1

コントローラからビューにCSSを渡してロードし、次のようにビューのどこか別の場所のヘッダーにエコーしますか?

コントローラ:

$data['css_rules'] = $this->yourcssmodel->get_css_rules_function();
$this->load->view('yadayadayada, $data);

ビュー:(ヘッダーにある可能性が高い)

?>
<style>
<?echo $css_rules;?>
</style>
于 2012-06-20T23:16:04.497 に答える
1

データベースからプルするキャッシュライブラリを作成し、キャッシュフォルダにcssファイルを作成します。

必要になるだろう:

ライブラリクラス

  • cssと対話し、CRUDを実行するためのフォームを作成します
  • キャッシュファイルモニタリングCRUDを処理します(1時間ごと、またはフォームのすべてのC、U、Dでさえ)
  • スタイルシートのキャッシュファイルをDOMビューに挿入します

モデル

  • データベースと対話し、CRUD操作を実行します
  • キャッシュファイルを作成するためにデータをコントローラに返します

意見

  • 値をcssスタイルシートファイル形式に解析します

もう1つのオプションは、コントローラーを使用してmimeタイプを定義し、適切にフォーマットされたスタイルシートを使用してビューをロードすることです。ファイルシステムなどへの書き込みはありません。URIの末尾に.css拡張子を追加して、適切に呼び出します。


リリースしたばかりのアプリでも、まったく同じことをします。アプリの管理セクションに、テキストフィールドを指定したフォームがあります。ユーザーが16進数のカラーコードを入力すると、データベース内のデータが保存/更新されます。次に、ライブラリは、ヘッダービューで参照されるキャッシュされたcssファイルを作成します。.gitignoreこれは、アプリを複数のクライアントにデプロイするときに特別なディレクトリにファイルを追加する必要をなくすために行いました。

于 2012-06-21T03:31:20.090 に答える