Como se indica en el título, busqué en el foro y solo encontré cómo cambiar la seguridad de las categorías, pero esto solo hace que todas las categorías sean invisibles, lo cual no es la función que necesito.
Mi escenario de uso es: los usuarios no registrados pueden ver parte del contenido de las publicaciones, y el contenido oculto solo se puede ver iniciando sesión. O los usuarios registrados deben responder a la publicación para poder verla.
Este es un medio para atraer registros y también para evitar que la mayoría de los “ladrones de manos” (personas que solo toman sin contribuir).
Cómo lograr la función de iniciar sesión para ver contenido, para atraer mejor a los usuarios a registrarse
Como se mencionó en la pregunta, busqué en el foro y solo encontré la seguridad de cambiar categorías, pero esto solo hará que todas las categorías sean invisibles, lo cual no es la función que necesito.
Mi escenario de uso es: los usuarios no registrados pueden ver una parte del contenido de la publicación, mientras que el contenido oculto solo se puede ver iniciando sesión. Alternativamente, para registrarse como usuario, debe responder a la publicación para poder verla.
Este es un medio para atraer registros y también para evitar que la mayoría de las partes interesadas se comuniquen.
¿Es lo que pides similar a lo que hacen muchos periódicos? Por ejemplo, como usuario anónimo, puedo ver la portada y las páginas de categorías del New York Times:
La razón por la que pregunto de esta manera es porque creo que la idea se ha mencionado en este foro algunas veces. Me gusta la idea. Podría ser útil mostrar que esta es una forma común en que las publicaciones basadas en suscripción consiguen que los usuarios se suscriban. La idea podría ser útil para algunos sitios de Discourse, especialmente para sitios que intentan atraer suscriptores de pago.
Sí, simon, porque mi sitio web tendrá muchos enlaces de descarga de software, pero no quiero que los usuarios no registrados los vean y hagan clic en ellos. ¡Gracias por tu respuesta!
Me gustaría mucho que fuera como el modo spoiler. —> enlaces de descarga Cuando un usuario no registrado haga clic, aparecerá una ventana emergente de registro o una ventana emergente de pago, lo que será muy elegante.
“No se puede ver el contenido sin responder”. Los usuarios activos comparten desinteresadamente sus conocimientos y quieren más respuestas a sus publicaciones. Esto también es lo que quieren los propietarios del foro. Creo que esta función es beneficiosa para el desarrollo del foro.
De nada, espero que te funcione. Solo ten en cuenta que es un componente temático y no un plugin, por lo que puedes instalarlo desde la interfaz de administración.
Esto es fácil de hacer. Hay un atributo en el modelo de tema que muestra si has respondido a él. Se llama posted. Escribí un componente antes (Composer tip under specific tag topics) que determina si has respondido. Si tienes conocimientos de programación, puedes echar un vistazo a lo que escribí. Combinado con el método decorateCookedElement de la API, se puede implementar.
Me da pereza escribir el código específico. He estado muy ocupado últimamente.
<script type="text/discourse-plugin" version="1.6.0">
const user = api.getCurrentUser();
const I18n = require("I18n");
const pid = "post_hider"
const tl4_css = `
.d-editor-preview [data-theme-hide] {
background: var(--tertiary);
color: var(--secondary);
border-top: 2px solid var(--secondary);
position: sticky;
top: 0;
height: 30px;
display: flex;
align-items: center;
justify-content: center;
}
.d-editor-preview [data-theme-hide]::before {
content: "Este post está oculto";
}
`
api.addPostClassesCallback((attrs) => {
if (attrs?.cooked?.includes(`div data-theme-hide="true"`)) {
return ["hiddened"]; // Añade css para usar, cómo escribir el css a continuación depende de ti
} else {
return [];
}
});
if (!user) {
api.decorateCookedElement((el, helper) => {
function hide_post() {
setTimeout( () => {
try {
// document.querySelector(`[data-post-id="${helper?.widget?.attrs?.id}"]`)?.parentElement?.remove();
} catch (err) {
console.log(el);
console.log(err);
}
}, 1000);
}
if (el?.querySelector(`[data-theme-hide="true"]`)) {
el.innerHTML = `<p>Este post ha sido ocultado por la comunidad</p>`; // Modifica esta línea
hide_post();
}
}, {
id: pid,
afterAdopt: true,
onlyStream: true,
});
}
</script>
Recordé que tengo aquí un código que usé para ocultar todo el post a los usuarios no registrados. Puedes usarlo como referencia.