Botón para compartir de Facebook y texto personalizado [cerrado]

Respuestas:

94

Usamos algo como esto [usar en una línea]:

<a title="send to Facebook" 
  href="http://www.facebook.com/sharer.php?s=100&p[title]=YOUR_TITLE&p[summary]=YOUR_SUMMARY&p[url]=YOUR_URL&p[images][0]=YOUR_IMAGE_TO_SHARE_OBJECT"
  target="_blank">
  <span>
    <img width="14" height="14" src="'icons/fb.gif" alt="Facebook" /> Facebook 
  </span>
</a>
AllisonC
fuente
4
¿Sabes cómo hacer que este enlace se abra en una ventana emergente o modal? Simplemente no puedo encontrar un método que funcione, no es tan simple como usar un código genérico de ventana emergente ...
tvgemert
1
Más eficaz que la respuesta de arriba.
Mateng
29
@tvgemert: Trate <a class="facebook" target="_blank" onclick="return !window.open(this.href, 'Facebook', 'width=640,height=300')" href="http://www.facebook.com/sharer/sharer.php?u=YOUR_URL">Facebook</a>etc.
Mateng
Perfecto, ¡esto también funciona para las URL hashbang!
dvtoever
73
Esto ya no funciona.
Chuck Le Butt
30

Para dar parámetros personalizados a facebook compartir su mejor dar sólo el enlace de facebook y recibe su nombre + descripción + Imagen de forma automática desde la página que está compartiendo. Para "ayudar" a la API de Facebook a encontrar esas cosas, puede poner las siguientes cosas en el encabezado de la página que está compartiendo:

<meta property="og:title" content="title" />
<meta property="og:description" content="description" />
<meta property="og:image" content="thumbnail_image" />

Chequea aquí

Si la página no está bajo su control, use lo que AllisonC ha compartido anteriormente.

Para el comportamiento del tipo de vista modal emergente:

Use su propio botón / enlace / texto y luego puede usar un tipo de vista modal de ventana emergente de esta manera:

<script type= 'text/javascript'>
$('#twitterbtn-link,#facebookbtn-link').click(function(event) {
var width  = 575,
    height = 400,
    left   = ($(window).width()  - width)  / 2,
    top    = ($(window).height() - height) / 2,
    url    = this.href,
    opts   = 'status=1' +
             ',width='  + width  +
             ',height=' + height +
             ',top='    + top    +
             ',left='   + left;

window.open(url, 'twitter', opts);

return false;
});
</script>

donde twitterbtn-link y facebookbtn-link son identificadores de anclas.

ShayanK
fuente
Si las URL son idénticas, ¿Facebook está almacenando en caché los datos de las metapropiedades? ¿O puedo introducir, por ejemplo, datos POST individuales con cada vista de página?
Mateng
No entendí lo que quieres decir con eso.
ShayanK
Acabo de encontrarme con esto. Tengo un código de Me gusta / Compartir en mi página de inicio que está configurado para Me gusta / Compartir la página de Facebook asociada con mi negocio. Parece ignorar las metaetiquetas de Facebook que tengo en la página. ¿Alguien se encuentra con este problema?
Chris Hawkins
1
Parece que este método ya no funciona. Creo que la única forma de lograr un botón para compartir de Facebook personalizado (con su propio texto, título e imagen) es usar el SDK de Facebook.
Ryan Coolwebs
Gran solución, para hacerlo también moderno, en if( window.open(.....) ) event.preventDefault();lugar de simplemente `devolver falso; ˙! - de esa manera, solo evita el comportamiento predeterminado (enlace abierto) cuando se abre la ventana - proporciona un respaldo cuando no era ...
jave.web
12

utilice esta función derivada del enlace proporcionado por IJas

function openFbPopUp() {
    var fburl = '';
    var fbimgurl = 'http://';
    var fbtitle = 'Your title';
    var fbsummary = "your description";
    var sharerURL = "http://www.facebook.com/sharer/sharer.php?s=100&p[url]=" + encodeURI(fburl) + "&p[images][0]=" + encodeURI(fbimgurl) + "&p[title]=" + encodeURI(fbtitle) + "&p[summary]=" + encodeURI(fbsummary);
    window.open(
      sharerURL,
      'facebook-share-dialog', 
      'width=626,height=436'); 
    return  false;
}

O también puede usar la última función FB.ui si usa FB JavaScript SDK para una función de devolución de llamada más controlada.

consulte: FB.ui

    function openFbPopUp() {
        FB.ui(
          {
            method: 'feed',
            name: 'Facebook Dialogs',
            link: 'https://developers.facebook.com/docs/dialogs/',
            picture: 'http://fbrell.com/f8.jpg',
            caption: 'Reference Documentation',
            description: 'Dialogs provide a simple, consistent interface for applications to interface with users.'
          },
          function(response) {
            if (response && response.post_id) {
              alert('Post was published.');
            } else {
              alert('Post was not published.');
            }
          }
        );
    }
Bhavesh B
fuente
este FB.ui es quizás el enfoque más confiable, además, puede cargar este script en la parte inferior de su página con el resto de su javascript, y cargar en jquery variables / selectores como valores. Gracias por publicar esto.
klewis
@blackhawk ... pero FB.ui también requiere app_id, que no siempre es una opción ... :)
jave.web
@Bravesh B Buscando en la documentación relacionada con FB.ui que vinculó, no pude encontrar los parámetros que pasa a FB.ui como imagen, título, descripción. ¿Podría decirme dónde los encontró?
Ferex
@Ferex puede encontrar los parámetros aquí developers.facebook.com/docs/sharing/reference/feed-dialog
Bhavesh B
1
A partir del 18 de abril de 2017, los siguientes parámetros ya no son compatibles con las versiones 2.9 y posteriores de Graph API. Para las versiones 2.8 y anteriores, los parámetros seguirán funcionando hasta el 17 de julio de 2017.
Goran Jakovljevic
9

Tienes varias opciones:

  1. Utilice el botón Compartir de FB estándar y configure el texto a través de Open Graph API y metaetiquetas en su página.
  2. En lugar de Compartir, utilice el método stream.publish de FB.ui , que le permite controlar la URL, el título, el título, la descripción y la miniatura en tiempo de ejecución.
  3. O use http://www.facebook.com/sharer.php con los parámetros apropiados.
Kon
fuente
2
¿Puede dar más detalles sobre este último? ¿Cuáles son estos parámetros?
Jeroen Vannevel
6

Puede personalizar el cuadro de diálogo para compartir de Facebook utilizando el SDK de JavaScript asincrónico proporcionado por Facebook y configurando los valores de sus parámetros

Eche un vistazo al siguiente código:

<script type="text/javascript">
  $(document).ready(function(){
    $('#share_button').click(function(e){
      e.preventDefault();
      FB.ui(
        {
          method: 'feed',
          name: 'This is the content of the "name" field.',
          link: 'URL which you would like to share ',
          picture: ‘URL of the image which is going to appear as thumbnail image in share dialogbox’,
          caption: 'Caption like which appear as title of the dialog box',
          description: 'Small description of the post',
          message: ''
        }
      );
    });
  });
</script>

Antes de copiar y pegar el siguiente código, primero debe inicializar el SDK y configurar la biblioteca jQuery. Haga clic aquí para conocer paso a paso cómo configurar información sobre el mismo.

Virat Gaywala - CSM
fuente
3

Esta es la solución actual (diciembre de 2014) y funciona bastante bien. Cuenta con

  • abre una ventana emergente
  • fragmento autónomo, no requiere nada más
  • funciona con o sin JS. Si JS está deshabilitado, la ventana para compartir aún se abre, aunque no como una pequeña ventana emergente.

<a onclick="return !window.open(this.href, 'Share on Facebook', 'width=640, height=536')" href="https://www.facebook.com/sharer/sharer.php?u=href=$url&display=popup&ref=plugin" target="_window"><img src='/_img/icons/facebook.png' /></a>

$ url var debe definirse como la URL para compartir.

aleemb
fuente
no funciona en mi caso donde mi página comienza con https ...?
d4v1dv00
1
Esta respuesta no es válida ahora, ya que Facebook ha dejado de admitir otros parámetros en Sharer
Vikrant
0

Este es un simple cuadro de diálogo que ofrece Facebook. Lea aquí para obtener más detalles del enlace

Jugador mundial
fuente
-2

podría combinar la idea de AllisonC con la window.openfunción: http://www.w3schools.com/jsref/met_win_open.asp

function openWin(url) {
    myWindow = window.open(url, '', 'width=800,height=400');
    myWindow.focus();
}

Y luego, en cada enlace, llama a la función openWin con la URL de red social correcta.

Txugo
fuente
-3

Pruebe este sitio http://www.sharelinkgenerator.com/ . Espero que esto ayude.

Ijas Ameenudeen
fuente
3
Esto no resuelve el problema en el que las personas buscan títulos / descripciones personalizados
Eddie
con su solución no es posible poner texto personalizado con facebook, por favor, dé otra solución
RaviPatidar