1

以前は、ページごとに 1 つのボタン セットに Sharrre を使用していましたが、問題なく動作しました。ただし、それを変更する必要があり、現在は 4 セットのボタンがあり、data-text と data-url の値が Facebook のポップアップに表示されていません。代わりに、実際のリンクされたページからテキストをロードするので気にしません「Contact usNameEmail ..」などを表示する非表示のフォームから来ていない場合はなおさらです。Twitter で動作し、最初に data-text 値を表示し、次に data-url を表示します。

Sharrre の例 2 ( http://sharrre.com/example2.html ) のようなシステムを使用しており、コードは次のようになります。

HTML

<div class="share-buttons" data-url="MY URL" data-text="MY TEXT"></div>

そしてjQuery

$('.share-buttons').each(function() {
    $(this).sharrre({
        share: {
            twitter: true,
            facebook: true
        },
        template: '<div class="share-icon-holder"><a href="#" class="facebook"><img src="fb.png" /></a><a href="#" class="twitter"><img src="twitter.png" /></a></div><div class="share-text"><img src="share.png" /></div>',
        enableHover: false,
        enableTracking: false,
        render: function(api, options){
            $(api.element).on('click', '.twitter', function(event) {
                event.preventDefault();
                api.openPopup('twitter');
            });
            $(api.element).on('click', '.facebook', function(event) {
                event.preventDefault();
                api.openPopup('facebook');
            });
        }
    });
});

したがって、私のページにはその html 部分が 4 回あり、これを解決しようとして .each 関数を追加しましたが、効果はありませんでした。これを解決するためのヒントやアドバイスはありますか?

これが問題のフィドルです:http://jsfiddle.net/b54sc/

4

2 に答える 2

2

私はこれに対する解決策を自分で見つけました。しかし、他にもアイデアがあれば共有してください!正しい方向を示してくれた@CBroeに感謝します。

ベスト プラクティスは Open Graph メタ タグを使用することですが、私のサイトは 1 ページ サイトであり、すべてのコンテンツが同じページにあるため、これは不可能です。また、メタ タグは html の HEAD に配置する必要があるため、4 つの異なる URL とタイトルが必要になるため、これは私には合いません。

しかし、メタ タグ ソリューションを参照しているときに、別のかなり簡単なソリューションを見つけました。

そのため、Sharrre は既に非推奨となっている Facebook の sharer.php を使用しています。非推奨ですが、まだ使用できます。app_id を必要としないため、非常に一般的です。しかし、それは変更されました: タイトルの URL で「t」パラメーターを受け入れないため、データテキストが機能しなかったのはそのためです。そして、解決策があります。

これは私が見つけたページです: http://ar.zu.my/how-to-really-customize-the-deprecated-facebook-sharer-dot-php/ URL を少し変更するとうまくいきます。タイトル部分は、単に「t」ではなく「p[title]」にする必要があります。また、使用する他のパラメーターもあります。

THE FIX to Sharrre Sharrre は、もう機能しない古い方法を使用しているため、sharrre.js ファイルの 325 行目のポップアップ作成関数を変更しました。

から

window.open("http://www.facebook.com/sharer/sharer.php?u="+encodeURIComponent((opt.buttons.facebook.url !== '' ? opt.buttons.facebook.url : opt.url))+"&t="+opt.text+"", "", "toolbar=0, status=0, width=900, height=500");

window.open("http://www.facebook.com/sharer/sharer.php?s=100&p[url]="+encodeURIComponent((opt.buttons.facebook.url !== '' ? opt.buttons.facebook.url : opt.url))+"&p[title]="+opt.text+"", "", "toolbar=0, status=0, width=900, height=500");

Facebook はいつでも変更できるので、この解決策がいつまで機能するかはわかりませんが、今のところは問題ありません。

もう 1 つの方法は、Facebook ダイアログを使用することですが、それには app_id が必要です。

于 2013-11-15T07:45:09.140 に答える
0

これを試してください:コードにタイトル、URL を追加しました

$('.share-buttons').each(function() {
    $(this).sharrre({
        share: {
            twitter: true,
            facebook: true
        },
        title: $(this).attr('data-href'),
        url: $(this).attr('data-url'),
        template: '<div class="share-icon-holder"><a href="#" class="facebook"><img src="fb.png" /></a><a href="#" class="twitter"><img src="twitter.png" /></a></div><div class="share-text"><img src="share.png" /></div>',
        enableHover: false,
        enableTracking: false,
        render: function(api, options){
            $(api.element).on('click', '.twitter', function(event) {
                event.preventDefault();
                api.openPopup('twitter');
            });
            $(api.element).on('click', '.facebook', function(event) {
                event.preventDefault();
                api.openPopup('facebook');
            });
        }
    });
});
于 2013-11-13T09:26:45.610 に答える