0

私は、Web サイト用にカスタム構築されたコンテンツ管理システムのクリーンアップと実装に取り​​組んでいます。Web サイトのすべてのページは単純で、本質的に静的な HTML ページであり、次のような単純なテンプレートとして作成されます。

<html>
    <head><!-- resources, scripts, etc. --></head>

    <body>

       <div id="page">

           <div id="header"><!--- static --></div>

           <div id="content">
                <!-- The main content - different on every page -->
           </div>

           <div>
             <!-- Side bar -- footer-- and other static persistent content -->
           </div>

       </div>
  </body>
</html>

私がやりたいのは、#content要素をバッチ検索して変数またはコメントに置き換えるか、まったく置き換えないことです。既にコンテンツを抽出し、対応する HTML ファイルと同じディレクトリ内のファイルに保存しています。

目的を達成するための 2 つの基本的な経路を確認できます。

  1. #contentすべてのファイルを必要なものに置き換えます。

  2. ページから html を抽出し、データを事前または事後処理して#content要素を削除し、変更された html を新しいファイルに書き込みます。

:これを 1 つずつ行うにはファイルが多すぎます。

これを行うために、jQuery プラグイン、さまざまな nodejs ソリューション、grepWin、およびXidelなど、さまざまな方法を試しました。Xidel が最も役に立ちましたが、それを使用してすべての HTML から#content.

理想的には、次のようなシンプルさを実現したいと考えています$.replaceWith

$('#content').replaceWith('...');

もちろん、それがそれほど単純だったら、おそらく今までに偶然見つけていただろう.

誰かがこれのためのツールまたは解決策を知っていますか? - ファイル内の検索と置換機能を提供するコード エディター内にある場合でも。これは 1 回だけ実行する必要があるため、プログラム化する必要はありません。

編集これは、望ましい前後のシナリオの例です。


<html>
    <head>
        I am content in the head - I should remain as I am
    </head>
    <body>
       <div id="page"><!-- Wrapper for all pages -->
           <div id="header">
               I am a static header - I should remain as I am
           </div>
           <div id="content">
                I am content - I am different on every page.  I would like to be replaced please.
          </div>
          <div>
              I am things like a sidebar, footer, copyright logo.
              I may or may not be wrapped in a div, but I don't need to be changed
          </div>
       </div><!-- End of wrapper -->
    </body>
 </html>

<html>
    <head>
        I am content in the head - I should remain as I am (see I haven't changed)
    </head>
    <body>
       <div id="page"><!-- Wrapper for all pages -->
           <div id="header">
               I am a static header - I should remain as I am (I haven't changed either)
           </div>
           <div id="content">
                I AM VERY DIFFERENT.  The only Thing inside of me is a variable. :)
          </div>
          <div>
              I am things like a sidebar, footer, copyright logo.
              I may or may not be wrapped in a div, but I don't need to be changed
              (Nope.  I haven't changed either)
          </div>
       </div><!-- End of wrapper -->
    </body>
 </html>
4

2 に答える 2

0

メモ帳++を使用し、

編集するすべてのページを開き、ファインダーを実行して置換セクションに移動し、開いているすべてのページで置換を押します。

これはバッチ交換に役立つと思います。

于 2016-12-03T16:37:18.320 に答える
0

それがテキストであると想定されていない限り、それを置き換えることで何を意味するのかわかりません@contentが、DOMパーサーはこの仕事を非常に簡単に行うことができます. コマンド ラインから実行できれば問題なく動作しますが、Chrome などのブラウザでも簡単に実行できます。

Chrome で HTML ドキュメントを開き、コンソール (f12) を開きます。走る

var content = document.getElementById("content");
content.parentNode.removeChild(content);

<html>これで、Elements のルート ノードを右クリックして「HTML としてコピー」したり、コンソールで HTML を印刷したりできます。document.documentElement.innerHTML

于 2013-08-21T13:07:50.440 に答える