Modificar apariencia moodle dinamicamente

Modificar apariencia moodle dinamicamente

de Santiago Nieto Carrera -
Número de respuestas: 5
Hola:
Queria saber si existe alguna variable de moodle donde se guarde la configuaracion de la pagina, es decir que si es posible modificando el valor de dicha variable, la apariecia de moodle pase de tener el color amarillo-anaranjado a por ejemplo rojo.
Para ello el alumno tendra unos parametros, como por ejemplo color favorito, entonces la pantalla tendra como color principal dicho color.
Se que se puede modificar totalmente con myMoodle, pero quería saber si existe otra forma.
Promedio de valoraciones: -
En respuesta a Santiago Nieto Carrera

Re: Modificar apariencia moodle dinamicamente

de Xavier Paz -
Una posibilidad para hacer esto sería cambiar dinámicamente el tema. No sé si en la variable global $CFG hay un campo theme donde se guarda el nombre del tema actual en uso, o si existe una variable global específica llamada $THEME.
En respuesta a Xavier Paz

Re: Modificar apariencia moodle dinamicamente

de Santiago Nieto Carrera -
En la variable $CFG existen los campos theme, header, footer y stylesheets[1], donde se puede escoger uno de los temas que están guardados en moodle\themes.
He intentado modificar el campo theme pero no modifica nada. pruebo modificandolo dentro de mi modulo en view.php y al volver al curso sigue igual. Para ello pruebo echando en pantalla lo que contiene en cada momento el campo theme y al volver al curso vuelve a tener el valor por defecto.
¿Deberia modificar tambien el resto de campos o no valdra de nada?
En respuesta a Santiago Nieto Carrera

Re: Modificar apariencia moodle dinamicamente

de Xavier Paz -
Por lo que me cuentas, parece que tras establecer tú el nuevo valor, al cargar de nuevo la página sobreescribe dicho valor obteniendolo de algún lado. Es decir, a pesar de que lo has modificado, ese valor debe estar almacenado en la Base de Datos de Moodle, y cada vez que carga la página lo obtiene de allí.

Por ejemplo, en la tabla config de la BD de Moodle, tienes un registro llamado theme que parece que puede estar relacionado con este tema. Parece que hace referencia al tema actual de la plataforma.

En la tabla courses cada registro referente a un curso tiene un campo theme que supongo hace referencia al tema de apariencia usado en el curso, en caso de que esté activado.

Por último, en la tabla course_categories cada registro referente a categoría de curso tiene también un campo theme, que contiene el nombre del tema usado en esa categoría.

La idea sería modificar esos campos de los registros según lo especificado por el usuario.
En respuesta a Xavier Paz

Re: Modificar apariencia moodle dinamicamente

de Santiago Nieto Carrera -
Gracias:
He estado buscando informacion sobre esto y por ahora tengo:

$tema=get_recordset_sql("SELECT name,value FROM mdl_config");

while($registro = rs_fetch_next_record($tema)){
if($registro->name=="theme"){
print($registro->name);
print(" ".$registro->value);
print("\n");
}
}

Vale, ahora tengo un par de problemas:

1º Queria hacer una busqueda un poco mas selectiva. Te dejo el enlace de donde estoy sacando la informacion
http://stu.pido.us/wiki/roodle:moodle_database
Solo soy capaz de realizar el primer ejemplo y queria que solo se me devolviera aquel que tenga los theme y no los demas campos.

2º El más importante. Ahora como hago si modifico el contenido de registro->value que se vea refelejado en la base de datos.
Se que tengo que utilizar update_record(), pero no se como conseguir que esta informacion la guarde primero en $tema que supongo que sera donde tengo que guardarlo, ya que es un objeto que sigue la estrucutra de la base de datos.

En respuesta a Santiago Nieto Carrera

Re: Modificar apariencia moodle dinamicamente

de Xavier Paz -
En moodle hay varias funciones para obtener registros de las tablas de la base de datos: get_record, get_records_sql, get_record_sql, etc..

En algunas especificas la tabla y los campos que actuarán como criterio de búsqueda, mientras que en otros introduces la consulta de forma explícita. En tu caso, existen varias opciones.

Puedes usar get_record('config','name',theme) para obtener el tema de la plataforma de la tabla config, pero puede dar problemas si hay algun otro registro de la tabla cuyo campo name contenga la cadena theme.

La otra opción es realizar la consulta explícita, mediante get_records_sql. Ejemplo:

$consulta = 'SELECT name,value FROM mdl_config WHERE name LIKE "%theme%";'

$resultado = get_records_sql($consulta)

Pero para esto tienes que saber datos concretos, como que el campo se llama theme, y hay veces que no es posible.

Yo usaría la primera forma, que es más genérica y válida en más sitios.

Para modificar el contenido del registro tienes que crear un objeto vacio, dotarle del contenido antiguo, modificarlo y volver a insertarlo.

Por ejemplo, supongamos que quieres cambiar el tema de la plataforma. Tendrías que hacer algo parecido a esto:

//obtener el tema actual
$tema_act = get_record('config','name','theme')
//modificar el contenido dicho registro
$tema_act->name = 'tema_rojo'
//actualizar el registro en la tabla
update_record('config',$tema_act)

revisa las funciones get_record y update_record, para conocer los parametros que necesitan. Un buen sitio para documentarte es http://phpdocs.moodle.org/19/index.html