Empezando con Drupal

juanofranco's picture

Saludos a todos los integrantes del grupo.

Me presento, mi nombre es Juan y soy programador web desde hace 10 años. Los lenguajes con los que mejor me llevo son php, javascript, actionscript, css3 y html5.

Siempre le escapé a la utilización de frameworks, ya que soy de la vieja escuela donde aprendí a desarrollar los backend desde cero. En fin, nunca es tarde para aprender algo nuevo.

Entre los frameworks que tenía en mente para ponerme a estudiar eran Drupla, Wordpress, Codeingniter, y Zend... Pero hablando con colegas me convencieron de que Drupal era la herramienta indicada.

Buscando en la web, encontré mucha info, entre ellas los videotutoriales de Jesús Conde. Ya me vi unos cuantos de Drupal y Drupal 7. Vaya tiempo que le dedicó ese maestro a explicar Drupal.

Lo que no encuentro es todo lo relacionado a convenciones de como diagramar un proyecto, etc. Se me hace lío cuando intento entender cuestiones como por ejemplo multi-usuarios, como diagrama la forma en que este multi-usuario tendrá un form de registro, y luego un form para cargar un post por ejemplo, que a su vez ese post podrá ser comentado y puntuado por el resto. De me complica al momento que quiero entender un artículo o una página básica. Como a partir de ahí empezar a hilar entre los distintos campos que voy asociando.

En cuanto a la práctica no hay problema con Drupal, lo que me hace falta es entender como armar un hilo de estructura. Es decir, si yo quiero por ejemplo habilitar el registro de usuarios para que puedan cargar su propio post, y luego este puedan puntuarlo, la forma que entiendo es por un lado crear el form de registro. Luego un modulo para crear el post. Un modulo para login y finalmente un módulo que aparece cuando el post está publicado, para que se pueda comentar y puntuar. Esta estructura no es así en Drupal.

Desde ya muchas gracias por leerme y espero sepan entender mi post ya que se me hizo un poco extenso.
Saludos

Comments

Bienvenido a este mundo

FuLaNo_'s picture

Bienvenido a este mundo Juan!

Te cuento que yo también soy programador desde hace mas de 10 años y, como vos, me resistía al cambio. Hace 2 años empece a laburar en una empresa donde solo hacen magento y Drupal (y algunas cosas en .net) por lo que tuve que aprender, y te cuento que el cambio fue para bien. Si bien dejas de hacer un poco lo que te gusta que es programar, para proyectos como freelance es lo mejor que hay porque te permite realizar un proyecto complejo en poco tiempo, y el resto del día podes programar lo que te guste a vos jeje.

En cuanto a tus dudas, todo lo que queres hacer ya lo provee Drupal 7.

Lo primero que tienes que hacer es activar el modulo "blog".

Luego crear distintos roles de usuario, un rol para quien pueda subir posts y otro para quien solo pueda comentar, o bien, si todos podrán hacer las 2 cosas, con un rol basta.

En tu caso, si queres que todo el que se registre pueda escribir posts, pues simplemente dale al rol de "usuario autentificado" dicho permiso.

En permisos verás que puedes darle a un usuario la posibilidad de crear contenido de X tipo (en este caso tipo "post"), verlo, editarlo, eliminarlo, inclusive eliminar solo el contenido propio.

En este punto ya tienes que cuando uno se registra ya puede escribir posts, también podrá dejar comentarios (esto lo cambias desde las opciones de comentarios en el content-type de blog post)

Para puntuar un post ya necesitas algún modulo, hay muchísimos, deberías buscar y ver cual te gusta más, luego lo mismo, desde permisos dices que rol de usuario puede puntuar y cuales no.

Se ha entendido algo de lo que dije? si has entendido sigue leyendo :p

Algo que se me ocurre es que luego querrás crear un bloque donde muestres los post con mejor puntaje, verdad?, ahí ya podrías comenzar a jugar con el modulo de Views (que si no lo tienes instalado hazlo, porque es casi básico..)...

Te dejo un link de un post que escribí en mi sitio hablando de los módulos que deberíamos tener en todos nuestros proyectos, no esperes que te cambie la vida, pero algo es algo :p

http://baireswebdesign.com/blog/los-modulos-que-no-pueden-faltar-en-tu-d...

Saludos!

Gracias FuLaNo_

juanofranco's picture

Muchas gracias por tomarte todo este tiempo para escribir tan buena explicación. Me va quedando claro el concepto de Roles, imagino que inclusive, si quiero generar algún admin con ciertos permisos para el back (que no sea el admin mayor), también es cuestión de crear otro rol de usuario. Y así cada usuario.

Por otro lado, si lo que quiero entonces es que un usuario cree un post con ciertos campos, fotos, etc, eso lo defino desde permisos, no? Imagino que desde permisos voy a poder definir el nombre de la acción (clase), ejemplo: "Subir Post" el cuál, será un botón o un link que el usuario logueado visualizará en el home.
Luego este Subir Post, le tendré que asociar nuevos artículos o módulos (acá es donde me pierdo un poco) para que dicho post pueda ser puntuado y comentado.

O sea, lo que aún me cuesta entenderle la vuelta es la regla de como diagramar (pensando en Drupal) una estructura como tal. Es decir, primero asigno roles a los usuarios, luego, a los distintos roles, puedo asignarles tipo de acciones, como por ejemplo, crear un artículo. Este articulo, es el post, que a sus vez le defino el tipo de campos que tendrá y finalmente le asignaría el módulo de comentarios y votos, los cuales también puedo editar para sus visualización. ¿Es correcto como lo trato de expresar?

Respecto al módulo views, estuve leyendo sobre el mismo y me lo han sugerido varios colegas. Gracias por el tips.

Por cierto, ya me estoy leyendo el link donde escribiste de los módulos.

Muchas gracias!
Saludos

¿Que prefieres? ¿Tener razón o ser Feliz?
What do you prefer? To have right or be happy?

A lo primero que mencionas te

FuLaNo_'s picture

A lo primero que mencionas te digo que SI, si necesitas un administrador con menos permisos, o un moderador, o lo que sea, lo haces con roles.

Luego es verdad, ya te pierdes un poco :p

A ver si podemos explicarlo mejor:

Drupal tiene 4 tipos de entidades bien distintas:

User
Contenido
Taxonomy
Comment

Acá tenés un link que explica esto: http://drupal.org/node/1261744

Esto es importante saberlo puesto que se manejan distinto, inclusive a nivel base de datos.

Bueno, vamos a tu caso puntual.

El content-type para post de Drupal trae por defecto un titulo, un body y una relación a la taxonomia "tag". Si tu quieres agregar mas cosas, debes ir a Structure -> Content types -> Blog entry -> Manage Fields

Desde aquí tu agregas datos para que el usuario luego tenga que cargar, puedes agregar un campo de imagen, un campo de URL, lo que sea...

Una vez que al usuario le des permisos para crear un post, simplemente tienes que poner en algún lado un botón al formulario que ya trae Drupal para cargar contenido, en este caso del tipo post, la url seria "node/add/blog"

Tu no tendrás que hacer nada en ese formulario, excepto añadirle o quitarle campos como dije antes.

El modulo de comentarios YA viene "instalado" en drupal, si un tipo de contenido puede tener comentarios o no lo manejas desde la edición de este content-type...
Es decir, si vas a "tupagina.com/admin/structure/types/manage/blog"

Verás que hay "opciones de comentario" o "comment options", y allí puedes abrir o cerrar los comentarios para ese tipo de contenido.

Por otra parte, no confundas "articulo" con "blog entry", son dos tipos de contenido distintos, cuando tu instalas drupal 7 por defecto crea los tipos "article" y "basic page", y cuando activas el modulo "blog" este creara automáticamente el tipo de contenido "blog entry".

Blog entry: Entrada de post, no es más que eso.
Basic page: Esto debería utilizarse para crear paginas "únicas" y que cambien poco dentro de tu web, por ejemplo "quienes somos"...
Article: debería usarse para crear artículos del tipo "noticia" o similar...

Por otra parte en Drupal vas a leer mucho la palabra "node" (nodo), esto es cuando creamos un contenido de cierto tipo. Por ejemplo, cuando creas un post de blog, el resultado es un "node", todos los contenidos de Drupal, salvo los comentarios, las taxonomias y los usuarios, son nodes... se entiende?

Saludos!

Gracias!

juanofranco's picture

Impecable toda la info que me brindaste, muchas gracias!

Ya me leí el link que escribiste sobre los módulos que hay que tener en todo proyecto. De paso aproveché para chusmear un poco la web y vi que le brindas servicios a una agencia de diseño web en la cual trabajan algunos colegas/amigos. ;)

Respecto a lo que yo llamaba reglas, o diagramas, veo que en el mundo Drupal se los llama Entidades! Que bueno, ya mas claro todo. El link que me pasaste en inglés me sirvió mucho, aunque Taxonomy no termino de interpretar que es. Calculo que serían como las clases que vincula todo.

Respecto a lo de Blog Entry o Article, aún estoy en una disyuntiva, puesto que lo que quiero que los usuarios publiquen no es un Post tipo blog, sino mas bien unas especie de ficha, podríamos decir (más específicamente, una obra de teatro, con sus actores, sinopsis, fotos, etc) y que el resto de los usuarios la califique. Entonces que se debe tomar en cuenta al momento de definir si lo que mejor cabe es un Blog Entry o Article.

Lo de Node, está bien claro.

Bueno, en lo que va del día seguiré estudiando un poco mas Drupal antes de arrancar con ninguna prueba práctica.

Gracias de nuevo, muy útil toda la info que me diste!
Saludos!

¿Que prefieres? ¿Tener razón o ser Feliz?
What do you prefer? To have right or be happy?

Juan! Ahora que aclaraste que

FuLaNo_'s picture

Juan!

Ahora que aclaraste que es lo que queres puedo ir un poco mas allá...

Tu "tipo de contenido" no es ni article ni blog entry, es un contenido custom! es decir, vamos a crear un content-type nuevo y listo...

Vas a la url: admin/structure/types/add

Alli pones el nombre de tu content-type, yo la llamaria "Theater play"

Luego dale al boton "save and edit"

Por defecto el content-type va a tener "title" y "body", por lo que la sinopsis podria ser el body, luego podrias agregar un field tipo text para "actor", el mismo deberia ser "multiple", es decir, te va a permitir meter mas de 1, luego tambien otro campo tipo file - image, también múltiple, para meter mas de una imagen...

Una vez que crees esto podrias ir a permisos y vas a ver que se creo una nueva opcion de editar/ver/eliminar ese tipo de contenido, y le decis que los usuarios registrados pueden ver, crear y editar/eliminar su contenido propio, esto ultimo es importante porque sino cualquiera va a editar o eliminar el contenido de otro, algo que esta mal salvo que sean moderadores o admins...

Quedo mas o menos claro esto?

Ahora bien, que es taxonomy?

Taxonomy es un tipo de contenido que se usa regularmente para discriminar o filtrar contenido, por ejemplo si tuvieras que crear una relacion entre paises, provincias y ciudades, usarias taxonomy y no contant-types.. para algo como "categorias de obras de teatro" usarias taxonomy

La taxonomia se divide en 2, Vocabulario y términos... vocabulario no es más que el "nombre" de ese grupo de términos, me explico?

Marcas de autos <-- vocabulario
- Fiat <- termino
- Ford <- termino
- Dodge <- termino
- Chevrolet <- termino

Por defecto drupal 7 te crea el vocabulario "tags", para verlos: admin/structure/taxonomy

Sabido todo esto, lo mas importante es que juegues mucho con estas entidades y luego empieces a ver views, que es básico en Drupal...

Abrazos!

Quiero agregar una cosita

smuglr's picture

Quiero agregar una cosita mas. Es aclarar que Drupal es un CMS, no es un framework como Codeigniter, CakePHP. Drupal es excelente por todas las razones que ya explicó Fulano. Pero hay momentos que yo vuelvo usar un framework (CakePHP).

Personalmente te recomendaría probar Drupal y en el tiempo que ahorras probar CakePHP. Los 2 son herramientas distintas para trabajos distintos.

saludos!

Hablando de frameworks te

jmolivas's picture

Hablando de frameworks te recomiendo Symfony2 => http://symfony.com

Que adicionalmente de ser un excelente framework se están utilizando multiples componentes de este para construir Drupal8, entonces lo que aprendas en sf2 te podría servir para D8

Otra gran ventaja de Symfony2 es que existen muchos recursos en español

--
http://jmolivas.com/
@jmolivas

Coincido con jmolivas, de

FuLaNo_'s picture

Coincido con jmolivas, de recomendarte un framework seria symfony2...

Bueno, me la quieren complicar... jaja

juanofranco's picture

Gracias FuLaNo_ por esos tips. Ahora, me gustaría entender la lógica de establecer porque un content-type y no un blog-entry como me habías dicho de entrada. Que es lo que hace que sea uno u otro. Cuantos modelos de entry existen en Drupal 7?

Lo de taxonomía me quedó claro. Ahora entiendo que serían las distintas tablas que voy a ir creando y que las mismas se podrán asociar con los content-type. Una obra la ingreso por un content-type y le asocio el género. Este género estará creado en taxonomy con sus diferentes términos. Si quiero otro "filtro", es cuestión de crear otra entrada en taxonomy con sus términos correspondientes. ¿Algo así? (gracias por la paciencia!!)

Gracias smuglr y jmolivas, me pondré a estudiar CakePHP y Symfony2 ni bien avance un poco con Drupal. (Aunque no voy a negar la resistencia que me impone la mente al momento de pasarme a aprender un framework como también un Cms) ---> maldito ego

Saludos y si me lo permiten, quiero destacar la predisposición de todos uds para ayudar a la gente nueva en el grupo. Felicitaciones por eso!

¿Que prefieres? ¿Tener razón o ser Feliz?
What do you prefer? To have right or be happy?

Usted tiene 2 opciones A) ir

justaman's picture

Usted tiene 2 opciones

A) ir tocando el drupal y aprendiendo de su experiencia. Necesitar mucha ayuda de otros, y aprender a punta de errores
B) leerse un par de libros y luego hacer A) de una manera mucho mas placentera.

http://books.google.co.cr/books/about/Pro_Drupal_7_Development.html?id=v...

http://books.google.co.cr/books?id=Y98m9hn_X8cC&printsec=frontcover&dq=d...

Insultar en Internet es como correr autos en calle publica: Aunque ganes, sigues siendo un idiota.

Juan, lo de taxonomias te

FuLaNo_'s picture

Juan, lo de taxonomias te quedo clarísimo.

En cuanto a porque usar un content-type nuevo y no usar un blog entry, esto es mas que nada cuestión organizativa, no se, se me ocurre que es como tener un archivo excel lleno de modelos de autos, a ese archivo lo llamaras "post.xls" o "autos.xls"?? me explico?

Bien podrías tomar el content-type de blog-entry y hacerle las modificaciones (agregar fields) que necesitas para lo que describías antes, pero no sería mejor tener un content-type especifico para ello? y dejar el de blog en caso de que el día de mañana tengamos un blog...

Por ejemplo, si tengo que hacer un listado de negocios para mi barrio, lo que haría seria crear un content-type llamado "negocio" con los fields que necesite, titulo, body, categoría, dirección, teléfono...

En fin, para cerrar esto, puede usar blog-entry para meter contenido de tipo "perros", pero siempre es mejor crear un tipo de contenido especifico para lo que necesitas.

Saludos!

Imagina que no existe ningun

naufrago's picture

Imagina que no existe ningun tipo de contenido aun y debes crear todos desde cero.
Asi que uno que creas inmediatamente es "Pagina Basica" donde vas a necesitar unicamente el nombre y el contenido.

Luego necesitas crear un blog y entonces creas un tipo de contenido blog-entry.

Asi que algunos modulos como blog o contact van a usar casi siempre el mismo tipo de contenido, por tanto crean un tipo de contenido con las opciones mas utilizadas y lo meten de una vez alli.

Al ser todos tipos de contenido pueden ser modificados a tu antojo, pero iniciar uno de cero es tan facil que sera la mejor alternativa.

Respecto a la taxonomia es una clasificación. en tu caso sera la forma en que clasificarias las obras literarias.
Si tenes
Infantiles, Ciencia Ficcion, Historia.
Luego podrias crear vistas donde listes solo obras Infantiles, o solo obras de Historia y claso no haces una por una si no le decis que te cree una dependiendo su taxonomia.

El tipo de contenido podes incluir tantas cosas como se te ocurran, y algunas pues necesitaran algunos modulos adicionales, pero lo basico vendra.