0

特定のキーワードを自分の Web サイトのアフィリエイト リンクに変換したいと考えています。すべてのページにこれらのリンクを 1 つずつ手作業でコーディングする必要はありません。したがって、ページの読み込み時に、指定されたキーワードのリストと対応する URL (2 次元配列) を使用して、これらのキーワードが対応する URL を使用して「URL 化」される Javascript/Jquery ベースのソリューションを探しています。

このコメントを見つけましたjQueryを使用してテキスト文字列を検索しますか? 大文字と小文字を区別しない検索のコードがありますが、単語だけでなくテキスト ノード全体を URL 化します。

以下のコードのようなものを使用できます。<pre>しかし問題は、要素内のキーワードも URL 化することです。要素だけでURL化してほしい<p>

<script type="text/javascript">
(function($) {
  var thePage = $("body");
  thePage.html(thePage.html().replace(/testing/ig, '<a href="http://testing.com">testing</a>')); 
})(jQuery)
</script>

例:

<p>I'm going to test urlification</p>
<pre>
function test() {
alert(' test ');
}
</pre>

に変更する必要があります

<p>I'm going to <a href="test123.com">test</a> urlification</p>
<pre>
function test() {
alert(' test ');
}
</pre>
4

4 に答える 4

3

1.これがテキストスニペットを置き換えるjQueryプラグインです

/**
* jQuery plugin to replace text strings
*
* Taken from @link http://net.tutsplus.com/tutorials/javascript-ajax/spotlight-jquery-replacetext/
*/

$.fn.replaceText = function( search, replace, text_only ) {
return this.each(function(){
        var node = this.firstChild,
        val, new_val, remove = [];
        if ( node ) {
            do {
              if ( node.nodeType === 3 ) {
                val = node.nodeValue;
                new_val = val.replace( search, replace );
                if ( new_val !== val ) {
                  if ( !text_only && /</.test( new_val ) ) {
                    $(node).before( new_val );
                    remove.push( node );
                  } else {
                    node.nodeValue = new_val;
                  }
                }
              }
            } while ( node = node.nextSibling );
        }
        remove.length && $(remove).remove();
    });
};

2.置換を実現するために使用できるコードは次のとおりです

// the array of affiliate links
var affiliates = [
        ['google', 'http://www.google.com/'],
        ['bing', 'http://www.bing.com/'],
        ['yahoo', 'http://www.yahoo.com/']
    ],
    $p = $('p'), // the selector to search text within
    i = 0, // index declared here to avoid overhead on the loop
    size = affiliates.length, // size of the affiliates array 
                              // again declared here to avoid overhead
    reg; // the regex holder variable

// loop over all the affiliates array
for(i; i < size; i++){
    // create a regex for each affiliate
    reg = new RegExp('('+affiliates[i][0]+')','gi');

    // finally replace the string with the link
    // NOTE: do not forget to include the aforementioned plugin before this code,
    // otherwise this won't work
    $p.replaceText(reg, '<a href="'+affiliates[i][2]+'">$1</a>');
}

これがデモです

3.いくつかの変更を加える必要があります

あなたがしなければならないのは、jQueryセレクターとアフィリエイト配列を変更することだけです。残りはプラグインによって処理されます。プラグインは、要素の属性を置き換えないほど賢いです

于 2011-08-06T09:19:15.197 に答える
1

何かのようなもの -

var foundin = $('p:contains("I am a simple string")');
foundin.each(function () {
    var linktext = $(this).html().replace('I am a simple string','<a href="">I am a simple string</a>');
    $(this).html(linktext);
});  

またはあなたの例を使用して -

var foundin = $('p:contains("testing")');
foundin.each(function () {
    var linktext = $(this).html().replace(/testing/ig, '<a href="http://testing.com">testing</a>'));
    $(this).html(linktext);
});  

から取得した手法 - jQuery を使用してテキスト文字列を検索しますか?

于 2011-08-06T09:05:15.677 に答える
0

これを試しましたか:

それらをクラス「URLify」でスパンに入れ、取得したデータに基づいて、コードでオンザフライでURLを作成することにより、スパンのinnerTextを置き換えます

Here is some text with this <span class="URLify">DataItem</span> to be search and replaced with URL or just to be URLified

あなたのjQueryでは、このようなことができます(テストされていません)

var URL = "http://www.myapp.com/ListOfItems/"; //the url to use or append item to

$('.URLify').wrapInner('<a href="'+URL+'"></a>');

または、「DataItem」を「.../ListOfItems/」に追加したい場合は、それもできます...

于 2011-08-06T08:58:53.550 に答える
0

JQuery はテキスト ノードを提供しません。DOM をトラバースするだけで、JQuery フィルターを使用してテキスト ノードを明示的にチェックする必要があります (この場合はおそらく高速です)。例はSO でここに示されています。

于 2011-08-06T09:06:07.900 に答える