Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » Drupal »

[SOLUCIONADO] Cómo hacer override de un módulo contribuido

Estas en el tema de Cómo hacer override de un módulo contribuido en el foro de Drupal en Foros del Web. Hola! He logrado hacer override de un módulo del core, así: Crear una carpeta llamada custom dentro de la carpeta modules del core. Mover a ...
  #1 (permalink)  
Antiguo 29/08/2015, 21:58
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Pregunta Cómo hacer override de un módulo contribuido

Hola!

He logrado hacer override de un módulo del core, así:
  1. Crear una carpeta llamada custom dentro de la carpeta modules del core.
  2. Mover a la nueva carpeta custom, la carpeta del módulo que queremos hackear.

¿Pero para un módulo contribuido?

Saludos!
  #2 (permalink)  
Antiguo 30/08/2015, 04:53
 
Fecha de Ingreso: junio-2012
Ubicación: Madrid
Mensajes: 339
Antigüedad: 11 años, 10 meses
Puntos: 47
Respuesta: Cómo hacer override de un módulo contribuido

Hola, como te comenté en su día no soy programador, y no creo que sea la mejor persona para responder, pero te cuento hasta donde yo sé (te pido disculpas si mi respuesta no tiene sentido con lo que preguntas).

Lo primero, el core de Drupal, no debes de modificarlo nunca, primero por convención, y segundo porque si mañana actualizas lo eliminarías (y por más cosas que yo no sabré). Para eso está la carpeta site, para hacer ahí todas tus modificaciones.

Sinceramente no sé exactamente qué es un override, si me lo explicas lo aprendo, porque he buscado y no he sido capaz de encontrar lo que es, pero si a lo que te refieres es a sobrteescribir un módulo, no sé hasta qué punto necesitas copiarlo entero.
Hay infinidad hooks y funciones de la api de Drupal que puedes usar en tu propio módulo y que te permiten comunicarte e interactuar con otros los otros y hacer las modificaciones pertinentes.

Eso sí, en la cabecera de tu módulo, indicas las dependencias que tiene para que sea de obligatoria instalación y ya está.

También puedes hacerlo en el archivo template.php, dependiendo de lo que quieras hacer.

Bueno, no sé si tiene sentido lo que respondo con lo que preguntas, pero si te he entendido bien, y con lo que he leído y trabajado sobre esto, creo que es más correcto hacerlo como yo te digo que con lo que tú planteas.

Bueno, me dices.

Un saludo

Última edición por JustinKO; 30/08/2015 a las 05:15
  #3 (permalink)  
Antiguo 30/08/2015, 17:09
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Pregunta Respuesta: Cómo hacer override de un módulo contribuido

Gracias por responder JustinKO. Primero lo primero:
Cita:
Iniciado por JustinKO Ver Mensaje
...Sinceramente no sé exactamente qué es un override...
Por override entiendo la alteración de un código para que se comporte diferente a como lo hace de fábrica. Ejemplo, podemos hacer un override para cambiar una simple cadena, o modificar alguna función para añadir/quitar funcionalidades. En este sentido, podemos traducir override por redefinir. Redefinimos el módulo, es decir, lo replanteamos porque no nos satisface su comportamiento actual.

Cita:
Iniciado por JustinKO Ver Mensaje
...el core de Drupal, no debes de modificarlo nunca...
El modo como describo que hago el override para los módulos del core, lo saqué de aquí. Y por lo que se lee ahí, no estamos hackeando el core, pues se saca el módulo de la carpeta modules.

...........

Por otro lado, digamos que dentro de la función function menu_edit_item() del módulo menu del core (en el archivo menu.admin.inc), se encuentra la cadena Menu link title. Pero esa cadena no nos gusta, y queremos cambiarla por MeNu LiNk TiTlE.

¿Cómo hacemos el override de dicha función para lograr tal cosa?

Saludos!
  #4 (permalink)  
Antiguo 31/08/2015, 02:04
 
Fecha de Ingreso: junio-2012
Ubicación: Madrid
Mensajes: 339
Antigüedad: 11 años, 10 meses
Puntos: 47
Respuesta: Cómo hacer override de un módulo contribuido

Hola de nuevo y gracias la info facilitada, eso era lo que pensaba que era.

De todos modos, si tu problema es modificar un modulo contribuido, ¿por qué no lo descargas y lo instalas? ¿le cambias el archivo tumodulo.info (y otros archivos que sean necesarios si es que lo quieres llamar diferente) con tu nuevo nombre y demás y realizas los cambios sobre él? ) Eso sí, si el día de mañana el cliente instala el módulo auténtico se puede crear un buen lío de funciones ya declaradas etc ¿no?.

Desde mi poco conocimiento en programación, sigo pensando que es raro que no podáis hacer lo que queréis creando vuestro propio módulo y trabajando por encima del que queráis modificar.

Pero bueno, dejemos paso a ver si alguien que controle más que yo de esto te sabe dar una solución.

Un saludo

(Por cierto, lo que has posteado es del 2008 y de Drupal 5)
  #5 (permalink)  
Antiguo 31/08/2015, 02:28
 
Fecha de Ingreso: junio-2012
Ubicación: Madrid
Mensajes: 339
Antigüedad: 11 años, 10 meses
Puntos: 47
Respuesta: Cómo hacer override de un módulo contribuido

Además, piensa otra cosa, un módulo de Drupal, está testadísimo por la comunidad, además luego vendrán actualizaciones, lo mismo es modificado según la actualización de Drupal que vaya saliendo, lo mismo otros módulos son dependientes de ese , y se van modificando en base a ese módulo actualizado. Si tu creas el tuyo aparte y conservas lo demás como está, creo que te evitarás muchos posibles problemas. Por ejemplo parches y actualizaciones que van saliendo porque el módulo crea conflicto con otros ¿eso lo vais a estar controlando vosotros?
Entre otras cosas creo que es ir un poco en contra de lo que es Drupal. Si algo tiene bueno Drupal por encima de otros CMS como por ejemplo Wordpress, desde mi humilde opinión, es ese "estandarizado" de sus módulos, no que sean cada uno de su padre y de su madre.
Además, si lo que haceis es bueno, siempre podréis publicarlo y compartirlo con la comunidad, de la otra manera, no podréis.

No sé, pienso.
  #6 (permalink)  
Antiguo 04/09/2015, 08:55
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Respuesta: Cómo hacer override de un módulo contribuido

Cita:
Iniciado por JustinKO Ver Mensaje
...sigo pensando que es raro que no podáis hacer lo que queréis creando vuestro propio módulo...
Claro, pero lo de cambiar el título era una idea simple sólo para ejemplificar de modo sencillo cómo hacer un override. Porque luego se encuentra uno con tutoriales para newbies que te hacen difícil el entendimiento, empezando por elegir un ejemplo complejo.

Cita:
Iniciado por JustinKO Ver Mensaje
...Por cierto, lo que has posteado es del 2008 y de Drupal 5
Y sin embargo, funcionó en mi Drupal 7, .

Pero, de acuerdo, entonces hay hooks y funciones para alterar el comportamiento de un módulo contribuido. Estos hooks y funciones se declaran por ejemplo en el template.php del tema.

En Joomla y Prestashop, si no recuerdo mal, la forma ordinaria de hacer overrides es esta: dejas donde están los archivos originales, copias aquel al que necesitas hacerle override y lo guardas en la ubicación destinada para los overrides.

Imagino que Drupal tendrá esa opción para los módulos contribuidos.

Saludos.
  #7 (permalink)  
Antiguo 05/09/2015, 13:36
 
Fecha de Ingreso: junio-2012
Ubicación: Madrid
Mensajes: 339
Antigüedad: 11 años, 10 meses
Puntos: 47
Respuesta: Cómo hacer override de un módulo contribuido

Hasta donde yo sé, puedes hacerlo con los temas, pero no con los módulos.

Eso sí, en la carpeta sites/all/modules ahí puedes crearte y meter tus módulos "modificados" () o tu módulo con tus funciones, hooks, infinidad de funciones de la api, etc.

Ahh, como dices también en el archivo template.php puedes hacerlo, tú decides si es algo que corresponde al tema en cuestión o a todos en general.

Luego, por supuesto, hay infinidad de archivos. html.tpl, page.tpl, node.tpl, views.tpl (en todas sus variantes), field.tpl… donde puedes modificar y hacer lo que te venga en gana.

Bueno, ya nos contarás cómo se te da.

Un saludo
  #8 (permalink)  
Antiguo 05/09/2015, 21:34
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Respuesta: Cómo hacer override de un módulo contribuido

Ok, ok. Ya encontré la forma de hacer overrides a los módulos contribuidos.
Aquí encontré la respuesta.

De todas formas la expongo aquí, para quien llegue.

El archivo template.php se ubica en: /home/myweb/sites/all/themes/mi_plantilla. Juega un papel importante en los overrides. Allí es donde haremos overriding. Las funciones a modificar, generalmente están dentro de los archivos con extensión .module y .inc.

Por ejemplo, digamos que queremos modificar la función function theme_quiz_question_navigation_form($variables) del módulo Quiz. Para ello, hacemos:
  1. Copiamos esa función, tal cual, y la pegamos en nuestro archivo template.php.
  2. Reemplazamos el prefijo del nombre de la función por el nombre de nuestro tema. En este caso, la función tiene el prefijo theme, y digamos que nuestro tema es bartik. Así, el nuevo nombre de la función queda: function bartik_quiz_question_navigation_form($variables)
  3. Hacemos los cambios que nos parezcan convenientes al contenido de la función, y
  4. Es todo.


Saludos!

Última edición por berkeleyPunk; 05/09/2015 a las 21:42
  #9 (permalink)  
Antiguo 06/09/2015, 03:39
 
Fecha de Ingreso: junio-2012
Ubicación: Madrid
Mensajes: 339
Antigüedad: 11 años, 10 meses
Puntos: 47
Respuesta: Cómo hacer override de un módulo contribuido

ok, gracias por la info.

Solo puntualizar una cosa. Como te decía en el otro post, lo mismo puedes hacer en tu propio módulo que en el template.php. Pero en vez de reemplazar el prefijo de la función por el nombre del tema, lo harías por el nombre del módulo.

En según qué casos, es recomendable hacerlo en un módulo. Creo que deberías de buscar información sobre ello porque que dependiendo de lo que estés haciendo es muy probable que lo correcto sea hacerte un módulo (y luce más de cara al cliente ya que ve el módulo con el nombre de su empresa).

De todos modos creo que lo que posteas es básicamente lo que te he estado intentado decir yo, que veo que no le has dado mucha credibilidad. Pero bueno, cuando hablen de overrides, tendré más claro a qué se refieren ;).

Saludos

Última edición por JustinKO; 06/09/2015 a las 04:09

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:01.