entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

3votos

como crear un simple gestor de contenidos

necesito crear un generador de contenido dinamico que sea capaz de guardar una copia del contenido creado para poder volver a seguir generando mas contenido en un segundo momento

<!-- mini generador de contenidos  -->

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script>
//esta funcion crea un elemento div con dentro un parrafo 
/*cuando codificaba mi funcion me preguntaba si fuera posible crear los elementos y agregarlos al dom sin usar las variables porque me parece un poco absurdo usarlas para cada cosa si al final de cuentas nunca es variable */

    function generacion(){
        contenido = document.body;
        elemento = document.createElement('div');
        capa = contenido.appendChild(elemento);
        parrafo = document.createElement('p');
        parrafocreado = capa.appendChild(parrafo);
        parrafocreado.innerHTML="editar parrafo"

    }

/*aqui me viene la pregunta de que manera puedo editar singularmente cada parrafo que genero, debo hacer un ciclo for? */

        function editar()
        {
          parrafos = document.getElementsByTagName('p');
          campo = document.getElementById('campo').value;
          parrafos[0].innerHTML = campo;

        }

    </script>
</head>
<body>
    <h4>gestor de contenidos</h4>
    <button onclick="generacion()">generar elemento</button>
    <div>
        <p>parrafo editable</p>
        <button onclick="editar()">edit</button>
        <input type="text" id="campo">
    </div>
</body>
</html>

2 Respuestas

2votos

Leonardo-Tadei Puntos227320

Hola Stevenpro,

no tiene sentido crear un gestor de contenidos en JavaScript.

Con esta forma de usarlo, JavaScript se está ejecutando del lado del cliente, es decir, en el navegador.

Si bien podrías guardar algo, ya sea como contenido de una variable o vía LocaStorage, solo vos podrías verlo, porque los datos quedan en tu navegador únicamente.

Incluso abriendo otro navegador en la misma PC, no podrían verse los mismos datos.

La idea principal de un CMS es que lo que una persona escriba en un sitio web, otra persona pueda verlo visitando el sitio, como hacemos con las preguntas y respuestas de EntreDesarrolladores...

Para hacer esto, tenés que usar algún lenguaje que funcione y pueda almacenar datos del lado del servidor.

Saludos cordiales.

PD: si lo que querés hacer es algo que funcione y mantenga datos solo en tu propio navegador, entonces no es CMS y tendrías que aclararnos mejor de lo que s e trata.

0voto

steven comentado

bueno si en realidad no es propio un cms, es una herramienta que quiero crear para poder gestionar todos mis proyectos en local.
lamentablemente como veras en mi codigo tengo algunos problemas:
si genero dinamicamente un parrafo con el contenido texto editable
y luego creo otro y otro no encuentro la manera de editarlo singularmente
no me viene ninguna idea, he pensado con un ciclo for pero esto modifica todos los elementos, que cosa me recomendarias gracias.

0voto

Leonardo-Tadei comentado

Hola Stevenpro,

resolvé primero como vas a hacer que esa información vuelva a aparecer al cerrar y volver a abrir el navegador...

Resolver esto te va a dar la estructura de la información, y luego con esa estructura en claro será muy fácil decidir cómo se edita la inforamción.

Ante de determinar cómo se guardarán estas cosas, no tiene sentido hablar de cómo se van a modificar...

0voto

steven comentado

hola leo para preservar la estructura de mi pagina tengo dos opciones
la primera es usar localstorage y la otra es subir mi pagina al workflow del navegador y guardar los cambios antes de cerrarlo.
la verdad creo que para hacer una simple modificacion al codigo todo esto no sea necesario porque mi intencion era que despues de generar los nuevos parrafos editar singularmente cada uno por medio de la consola web


var articulos = [];
    function generacion(){
        contenido = document.body;
        elemento = document.createElement('div');
        capa = contenido.appendChild(elemento);
        parrafo = document.createElement('p');
        parrafocreado = capa.appendChild(parrafo);
       art1 = parrafocreado.innerHTML="editar parrafo"; 
       articulos.push(art1); 

        localstorage.setItem('articulos' 'articulos');

    }

// la proxima vez que abra mi pagina voy a poder continuar con mi edicion

var arts = localstorage.getItem(articulos);
document.body.innerHTML= arts;

el problema surge cuando quiero editar un parrafo especifico de mi pagina,
lo normal seria acceder por el indice y modificarlo pero requeria mucho trabajo, mi idea es evitar eso y hacerlo automaticamente.
por ejemplo si tengo creado cinco parrafos en mi pagina, la manera de modificar el tercer parrafo involucraria acceder por el indice.
he visto por un video que esto se puede hacer mas facil con el event delegation.

para que tengas una idea mas clara los parrafos de mi pagina se generan dinamicamente uno a la vez luego para modiciarlos se usa un boton que crea un campo input de texto, cuando un valor es ingresado este texto es sobreescrito en mi parrafo.

0voto

Leonardo-Tadei comentado

"...lo normal seria acceder por el indice y modificarlo pero requeria mucho trabajo, mi idea es evitar eso y hacerlo automaticamente."

y quién escribirá el código para que esto pase "automáticamente"???

Es "más trabajo" escribir código para acceder por el ID a cada DIV que escribir el código que "automáticamente" edite los DIV ???

Me parece que te convendría cerrar esta pregunta e iniciar una por cada cuestión que tenés sin resolver, luego pensar previamente en detalle cómo querés que esto funcione.

Saludos.

PD: tu código o pseudocódigo para guardar los artículos en localStorage los va sobreescribiendo y al final solo te queda el último.

PPD: no tengo ni la más remota idea de lo que querés decir con "subir mi pagina al workflow del navegador y guardar los cambios antes de cerrarlo."... debe ser un modo "automático" de guardar una página...

0voto

steven comentado

por si no lo sabias el workflow o area de trabajo hace parte de todos los navegadores web, es utilizado por muchos desarrolladores.
debe ser configurado manualmente, uno debe subir la carpeta de sus proyectos y y trabajar en el navegador cuando guardas los cambios esto se puede reflejar en tu codigo principal.

cuando dije que queria hacerlo de modo automatico creo que no entendiste bien
te lo ilustro mejor, si yo creo cinco parrafos con mi funcion generacion
el problema seria editar cada uno de ellos singularmente PERO sin modificar mi codigo principal sino modificarlo por el dom, LUEGO cuando la modificacion haya terminado AHORA si deberian de guardarse en mi codigo principal
como podras ver mi codigo tiene algunos errores o algunos puntos faltantes
que deberia de ser corregidos o completados, por eso te pido tu ayuda
no creo que sea el caso de plantear una nueva pregunta

0voto

Leonardo-Tadei comentado

Me podrías poner 2 o 3 enlaces sobre documentación de este "workflow o area de trabajo hace parte de todos los navegadores web", así aprendo qué es y cómo se usa ???

Gracias Stenvenpro!

1voto

steven comentado

yo la descubri por casualidad es un set de herramientas integrado en la mayoria de los navegadores.

http://informatica.iesvalledeljerteplasencia.es/wordpress/herramientas-para-desarrolladores-de-google-chrome/

1voto

Leonardo-Tadei comentado

Hola Steven,

las herramientas para desarrolladores están presentes desde hace unos años en casi todos los navegadores. Tiempo atrás se usaban como un pluging, pero se fueron agregando de forma nativa a los principales navegadores. En Firefox aparecen presionando F12, por ejemplo.

Lo que no veo es cuál es la opción del "workflow o area de trabajo" que te permite "subir la carpeta de sus proyectos y y trabajar en el navegador cuando guardas los cambios esto se puede reflejar en tu codigo principal.".

Sí hay opciones para guardar copias locales de archivos CSS y JS, pero no se parecen en nada a lo que mencionás.

Cómo se hace esto de "subir la carpeta de sus proyectos y y trabajar en el navegador cuando guardas los cambios esto se puede reflejar en tu codigo principal.", que es uno de los mecanismos de almacenamiento que querés usar???

1voto

steven comentado

en la famosa set tools de chrome si esta disponibile subir tu propia carpeta y operar sobre ella como si lo hicieras con tu codigo principal, en firefox solo es posible operar sobre una copia generada que no afecta tu codigo principal.
creo que esta copia generada es conocida como el shadow dom o algo parecido
son copias locales nada mas, mi idea de guardar elementos generados dinamicamente solo seria posible si trabajara directamente con mi codigo principal pero lamentablemente esto no es posible por lo que estoy forzado ha y trabajar con local storage. si lees mi otra pregunta podras ver que tambien trabajar con esto me genera problemas porque no puedo guardar la estructura de mi codigo y mucho menos editarlo, en fin creo que abandonare esta idea porque se necesitan muchos conocimientos tecnicos y mucho debugeo

1voto

Leonardo-Tadei comentado

... ahora entiendo a qué te referís... y también a que nunca lo probaste, ya que estas formas de guardar archivos, solo guardan el código original y no el contenido generado dinámicamente.

En realidad, no es que estés forzado a trabajar en localStorage por lo que estás diciendo, sino porque es la única tecnología que permite almacenar cosas programáticamente.

Yo te comentaba anteriormente Stevenpro: programar es apasionante y muy divertido, pero tu planteo de hacerlo medio a ciegas, medio a tontas y a locas, sin base alguna, te hace tomar caminos tortuosos e innecesariamente complicados para hacer cosas simples.

Programar, aunque sea la cosa mas simple y básica, requiere siempre muchos conocimientos técnicos y mucho debugueo. Copiar y pegar código que se encuentra por ahí sin entender lo que hace y por qué lo hace, no convierte a nadie en programador.

Te repito mi consejo: anotate a un curso de JavaScript o de PHP y aprendé las bases de todo esto. Luego, podrás continuar por tu cuenta desarrollándote de forma autodidacta y siendo muy crítico, tanto de tu código cómo del código de otros.

Suerte!

PD: de ser posible, cerrá esta pregunta así no queda indefinidamente sin solución.

1voto

steven comentado

que lastima que despues de haber hablado tanto no se haya podido encontrar una solucion a mi problema de todos modos gracias por tu interees.
cordiales saludos y un felis año nuevo!!

2votos

Leonardo-Tadei Puntos227320

Hola Stevenpro,

te dejo acá abajo el más simple gestor de contenidos posible.

Se puede mejorar agregándole una barra de herramientas para poner líneas de separación horizontal o viñetas, pero así como está, te permite escribir libremente, guardar en local el contenido en el disco y luego abrirlo para seguir editando:

No es obligatorio, pero es recomendable que el archivo HTML que contenga esto se llame GestorDeProyectos.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
    <title>GestorDeProyectos</title>
    <style type="text/css">
        #txt{
            margin: 20px auto;
            padding: 20px;
            font-style: italic;
            border-bottom-color: silver;
            border-width: 1px;
            border-style: dotted;
        }
    </style>
</head>
<body>
<h3>Gestor de proyectos:</h3>
<div id="txt" contenteditable="true">
    Puede escribir aquí...
</div>
<p>Presione Ctrl+S para guardar</p>
</body>
</html>

Saludos cordiales y feliz año nuevo

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta