php - El diseño de la página Ajax requiere dirección física
Estoy creando una aplicación web en PHP. Estoy cargando contenido a través de una solicitud basada en Ajax. Cuando hago clic en un hipervínculo, la página correspondiente se obtiene mediante Ajax y el contenido es reemplazado por la página obtenida.
Ahora el problema es que necesito un href físico para poder implementar la funcionalidad de Me gusta de Facebook y también mantener la propiedad del historial del navegador. No puedo hacer un POSTBACK al estilo antiguo a la página PHP ya que estoy haciendo una animación de transición en la que la página actual se desliza fuera y la nueva página se desliza dentro.
¿Hay una manera de mantener la animación y aún así tener un href físico válido y un historial.
el diseño de la aplicación es tal:
- La aplicación toma un feed RSS.
- crea el DOM para esos feeds RSS.
- al hacer clic en cualquier titular, la página se anima y lleva a la historia completa del feed RSS.
- Necesito crear un botón de "me gusta" en la página de la historia completa, pero no tengo una URL válida.
Respuesta #1
Aunque la respuesta de Alexander funciona muy bien en el lado del cliente, la herramienta linter de Facebook no ejecuta JavaScript, por lo que obtendrá el contenido antiguo. Ninguno de los dos enlaces proporciona una solución a esto.
Lo que Amit necesita implementar es el análisis del URL del lado del servidor. Véase http://www.php.net/manual/en/function.parse-url.php. El fragmento es lo que el servidor ve como el valor del hashtag. En tu código PHP, genera las etiquetas og: correctas basadas en el fragmento.
Respuesta #2
En primer lugar, si necesitas una URL para Facebook, entonces piensa en una estructura que te proporcione una, de manera que tu código del lado del servidor cargue la página correcta al recibir esa URL. Esto podría ser algo como http://tudominio.com/page.php?feed=<nombre_feed>&link=<número_enlace>, lo que te permitirá verificar los parámetros usando el arreglo PHP $_GET. Si no tienes los parámetros, entonces carga la página de índice; si los tienes, entonces carga el artículo correspondiente.
En segundo lugar, utiliza algo como history.js para proporcionarte soporte entre navegadores para la funcionalidad pushState() de HTML5, de manera que puedas establecer la URL de la página cuando hagas la llamada AJAX, sin requerir que el navegador realice una recarga completa.