Twitter共有リンクをメールに入れようとしています。これは電子メールであるため、JavaScriptに頼ることができず、「自分でビルドする」ツイートボタンを使用する必要があります。
たとえば、Googleへのリンクを共有する場合:
<a href="http://www.Twitter.com/share?url=http://www.google.com/>Tweet</a>
これは正常に機能します。私が抱えている問題は、URLにクエリ文字列がある場合です。
<a href="http://www.Twitter.com/share?url=http://mysite.org/foo.htm?bar=123&baz=456">Tweet</a>
クエリ文字列を含むURLは、TwitterのURL短縮サービスt.coを混乱させます。これをさまざまな方法でURLエンコードしてみましたが、何も機能しません。私が得た最も近いのは、これを行うことです。
<a href="http://www.Twitter.com/share?url=http://mysite.org/foo.htm%3Fbar%3D123%26baz%3D456">Tweet</a>
ここでは、クエリ文字列のみをエンコードしました。これを行うと、t.coはURLを正常に短縮しますが、短縮されたリンクをたどると、エンコードされたURLに移動します。アドレスバーにhttp://mysite.org/foo.htm%3Fbar%3D123%26baz%3D456
が表示され、ブラウザに次のエラーが表示されます
見つかりません
要求されたURL /foo.htm?bar=123&baz=456は、このサーバーで見つかりませんでした。
この問題を解決する方法について私は途方に暮れています。
編集: Re:onteria_
URL全体をエンコードしてみました。これを行うと、ツイートにURLが表示されません。
これは、https://Twitter.com/intent/Tweet
の代わりにhttp://www.Twitter.com/share
を使用することで解決できます。 intent/Tweet
関数を使用すると、URL全体をURLエンコードするだけで、チャームのように機能します。
これはあなたのために働くでしょう
http://Twitter.com/share?text=text goes here&url=http://url goes here&hashtags=hashtag1,hashtag2,hashtag3
これについてのライブ例はこちら
Tweet Webインテントを使用します。これは簡単なリンクです。
https://Twitter.com/intent/tweet?url=<?=urlencode($url)?>
必ずしもインテントを使用する必要はありません。URLをエンコードすると、Twitter共有でも機能します。
URLのクエリ文字列で&を%26に変更する必要があります
これを見てください: https://dev.Twitter.com/discussions/8616
@onteria_が述べたように、パラメーター全体をエンコードする必要があります。同じ問題に直面している他の人は、次のブックマークレットを使用して、適切にエンコードされたURLを生成できます。ブラウザのアドレスバーにコピーして貼り付け、Twitter共有URLを作成します。アドレスバーにコピーするときにjavascript:
プレフィックスが存在することを確認してください。GoogleChromeはコピー時に削除します。
javascript:(function(){var url=Prompt("Enter the url to share");if(url)Prompt("Share the following url - ","http://www.Twitter.com/share?url="+encodeURIComponent(url))})();
JSのソースFiddle http://jsfiddle.net/2frkV/
これよりも簡単になりません:
<a href="https://Twitter.com/intent/tweet?text=optional%20promo%20text%20http://example.com/foo.htm?bar=123&baz=456" target="_blank">Tweet</a>
Twitterでは、データ属性を使用してURLを送信できるようになりました。これは私に最適です:
<a href="javascript:;" class="Twitter-share-button" data-lang="en" data-text="check out link b" data-url="http://www.lyricvideos.org/tracks?videoURL=SX05JZ4FisE">Tweet</a>
Twitter Intentリソースを使用します https://dev.Twitter.com/web/Tweet-button/web-intent
次の機能を使用できます。
function shareOnFB(){
var url = "https://www.facebook.com/sharer/sharer.php?u=https://yoururl.com&t=your message";
window.open(url, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=300,width=600');
return false;
}
function shareOntwitter(){
var url = 'https://Twitter.com/intent/tweet?url=URL_HERE&via=getboldify&text=yourtext';
TwitterWindow = window.open(url, 'TwitterWindow',width=600,height=300);
return false;
}
function shareOnGoogle(){
var url = "https://plus.google.com/share?url=https://yoururl.com";
window.open(url, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=350,width=480');
return false;
}
<a onClick="shareOnFB()"> Facebook </a>
<a onClick="shareOntwitter()"> Twitter </a>
<a onClick="shareOnGoogle()"> Google </a>