2009-07-20 7 views
3

テンプレートベースのサイトをたくさん作成するクライアントがあります。理想的には、kohana(http://www.kohanaphp.com/)のようなものを使用してテンプレートを処理し、サイト全体の変更を簡単に行うことができます。開発のためにサーバー側の言語を使用する最も良い方法ですが、静的なHTMLに展開する

残念なことに私たちのクライアントはサーバー側のコードをホストできません(また、要求する前にファイルを変更することはできません)。そのため、ファイルはHTML、Javascript 、CSS、画像、Flashのみ。

kohanaのようなフレームワーク環境で開発してサイトを管理しやすくするには、サイトのHTML専用バージョンを展開またはエクスポートできる良い方法がありますか(サイトには動的な側面はありませんサーバーサイドの言語を必要とし、データベースを使用しない)

サイトのスパイダーリングと似ていると思いますが、JavaScriptが動的に読み込まれるページアセットがあるため、より信頼性の高いものが必要です。

ありがとうございました

+0

CGIはまだオプションですか?ほとんどの人は、他のサーバー側のスクリプティングでは尽きるほどの可用性は無視していますが、このような状況では(このような状況も経験したように)CGIは通常オプションとなります。 – Nikko

+0

残念ながら、いいえ。 – micmcg

答えて

1

HTH。これは、あなたがいる状況(一般的なナビゲーションなど)に最適です。

ttreeコマンドが付属しており、ディレクトリツリーを処理して別のディレクトリに結果を格納します。

ここで私が使用しtt.rcファイルです:

# ignore these files (regular expressions) 
ignore = \.svn 
ignore = ^# 
ignore = ~$ 
ignore = .DS_Store 
ignore = \.tt$ 

# if these template files change, reprocess everything 
depend *=tpl/wrapper,tpl/defaults,style/default.html 

# just copy these files, don't process as templates 
copy = \.(gif|png|pdf|jpg)$ 

# verbose output 
verbose 

# recurse into subdirectories 
recurse 

# setup some defaults from tpl/defaults 
pre_process = tpl/defaults 

# process this file instead of the real file (see below how this is used) 
process  = tpl/wrapper 

# process files from src/, output to html/ 
# extra templates in lib/ (tpl/wrapper for example). 
src = src 
dest = html 
lib = lib 

特殊ファイルのカップル、tpl/defaults

[%- page = { 
      title = template.title, 
      style = template.style or 'default.html' 
    }; 

    base = INCLUDE tpl/base_uri; 

    # don't include any whitespace from here... 
    RETURN; 
-%] 

そしてtpl/wrapperでは、これが本当のを処理します

[%- content = PROCESS $template;  
    IF !template.name.search('.html') OR page.style == 'none'; 
     content; 
    ELSE; 
     default_style_template = "style/" _ page.style; 
     PROCESS $default_style_template; 
    END; 
%] 

ですテンプレート;結果をcontent変数に入れてテンプレート(のpage.styleで設定、デフォルトはdefaults.html)を処理します。

lib/style/default.htmlスタイルファイルは、本物のテンプレートをインクルードする

[% content %] 

どこかを持っている必要があります。前と後で、標準フッタとヘッダを持つことができます。

Template Toolkitの詳細については、tt2.orgをご覧ください。

また、再帰モードでwget(または類似のもの)を使用して、開発サーバーでPHPによって生成されたページを「ミラー化」することもできます。私はそれをお勧めしません。

+0

非常に興味深く、私が探しているものに最も近い。何も他のもの(できればPHPをベースにしたもの)がまもなく現れたら、受け入れられるとマークします。ありがとう! – micmcg

0

あなたがそれらを使用できると思わない場合でも、代替ソリューションを検討してください。クライアントが「サーバー側の言語を処理できません」(言い換えれば)ため、斬新なソリューションに目が見えなくなるのは間違いです。場合によっては、誤った知識の結果であることがあります。たとえば、クライアントはIISやApacheをホストできないため、実際にはサーバーサイドの言語をホストできませんか?それとも、IISやApacheを持たず、他のアプリケーションもインストールできないためです。 (もし彼らがアプリケーションをインストールできるのであれば、おそらくソリューションは "小さな" Webサーバー(たぶんXSP)を提供するだけかもしれません。

また、Googleの「歯車」などをご覧ください。私はそれについてかなり良いことを聞いたことがありますが、それはあなたのニーズに適していないかもしれません。

これでは、古典的なサーバー側の言語を無視して、クライアント側ですべて実行するか、サーバー側の言語をエクスポーターとして使用するのがよいでしょう。 (これはカスタムジョブになります)。私はカスタムスクリプトを使ってサイトを「エクスポートする」ことがおそらく最良のアプローチだと思います。

最後に、この質問には本当に1つの答えがありません。プログラマーとしては、さまざまな強みとさまざまなソリューションを比較し、最良のものを選ぶことがあなたの仕事です。

+0

セキュリティ上の理由から、サーバーサイドコンポーネントで構築されたサードパーティ(私たち)によって開発されたサイトをホストすることを拒否しています。これは何度も彼らと共に育ってきました。答えは非常に明確で明確なNOです。それが斬新な解決策を知らないのではなく、これが私たちと協力しなければならない状況です。 Googleの歯車は、テンプレート作成にはあまり適していません(クライアント側でもこれをやっているわけではありません)。カスタムスクリプトを使用してサイトをエクスポートすることは唯一の方法だと思われますが、特にKohanaと統合する場合は、その方法を探していました。 – micmcg

+0

また、私は単一の答えを探しているわけではなく、問題を解決する良い方法です。 – micmcg

+0

私は奇妙な気持ちになる - なぜ銀行は動的コンテンツのないウェブサイトを望んでいるのだろうか? – jimyi

0

うーん...クライアントのサーバーがPHPやASPを許可しない場合、私はCGIの方が安全ではないと思います。

まあ、あなたはdevアプリケーションでページを作って、それらのページをブラウザにロードし、結果のHTMLを保存することができます。すべてのページでそれを行い、あなたは設定されています。

リンクが正しく表示されていることを確認してください。

+0

それはクモの巣の傘の下に落ちるが、残念なことにそれは十分に信頼できると感じられない。 – micmcg

+0

あなたはどんな種類の問題を予見していますか? –

+0

サーバー側の言語で動的に生成されるコンテンツはありませんが、コンテンツはjavascriptで動的にページに追加されます。サイトの簡単なスパイダーリングでこれらの一部が失われることが懸念されます。このサイトは、ブラウザ内の各ページを開いて保存するための容認できる解決策ではないほど大きくなっています。 – micmcg

0

私はこれに特有の解決策はわかりませんが、あなたが選んだ言語であなた自身の簡単なテンプレートシステムを作成したいのであれば、本当にページを生成するためのスクリプトを作成するだけです。私は十代の若者にそのようなサイトを持っていました。新しいものをアップロードしたときはいつでも、サイトを再生成して新しいページをアップロードしました。当時私はPERLを使用していました。

このようなスクリプトを作成する複雑さは、サイトを構築するために使用しているものに大きく依存します。私はそれと同じように動作するように作られた完全にカスタムのビルドで作業していました。この場合、簡単なテンプレートシステムを作成してテンプレートの利点を得ることができ、またそこから静的なHTMLを生成できると思います。

0

これがオプションになるかわかりませんが、私はCushyCmsを提案します。これはオンラインCMSで、CSSクラスを使用してコンテンツ領域を定義し、オンラインでコンテンツを編集できます。あなたはFTPの詳細を提供する必要があるので、これはあなたのための契約を破るかもしれませんが、私はそれが言及する価値があると思った。

1

WaveMaker Studioを試してください。あなたの問題を部分的に解決します。

WaveMaker Studioにはテンプレート機能があり、コミュニティのオープンソース版になっています。私はTemplate Toolkit(Perlの)を使用して、テンプレートから静的ファイルを生成する単純なスクリプトがある

関連する問題