En muchas ocasiones requerimos que en el certificado aparezca información adicional a la que comunmente trae por defecto moodle, por ejemplo podemos requerir que se muestre en el certificado, la ciudad y el número de documento que tiene el estudiante, para añadir estos campos debemos de ingresar a:
miMoodle/mod/certificate/type/miCertificado/certificate.php
y añadir las siguientes lineas de código:
global $USER;
//Traer Número de documento, campo personalizado creado en el formulario del perfil de los usuarios
$value = $DB->get_record_sql("SELECT * FROM mdl_user_info_data WHERE fieldid='1' AND userid='$USER->id'"); //query db y selecciono el id del campo personalizado que deseo traer, en este caso 1
if ($value) {
$value = $value->data; // selecciono el campo donde se encuentra el campo personalizado
} else {
$value = '';
}
$numeroDoc = "Con cédula de ciudadanía N° " . $value; // Igualo la variable con texto adicional
certificate_print_text($pdf, $x, $y + 48, 'C', 'courierI', '', 22, $numeroDoc); // imprimo número de documento en el certificado
Otra manera de hacerlo más fácil y rápido es adicionando la siguiente línea de código en al archivo certificate.php en donde CC corresponde al nombre corte del campo adicional que incluí en el formulario.
certificate_print_text($pdf, $x, $y + 60, 'C', 'freesans', 'b', 20, $USER->profile['CC']);
Si deseamos agregar el campo ciudad debemos de adicionar las siguientes líneas de código
//Muestro Ciudad
$ciudad = $DB->get_record_sql("SELECT city FROM mdl_user WHERE id='$USER->id'"); //query db y selecciono el campo del usuario que deseo mostrar
if ($ciudad) {
$ciudad = $ciudad->city; // selecciono el campo que voy a mostrar
} else {
$ciudad = '';
}
certificate_print_text($pdf, $x, $y + 98, 'C', 'Helvetica', '', 14, $ciudad); // Imprimo la Ciudad
Si deseamos adicionar el campo ciudad y este concatenarlo con la fecha para que se visualice algo como «Bogotá 11 marzo 2016» debemos de modificar el archivo mod/certificate/ locallib.php y modificar el método certificate_get_date adicionando el parámetro $ciudad y posteriormente concatenarlo con el formado de fecha de tal manera que quede asi:
function certificate_get_date($certificate, $certrecord, $course, $ciudad, $userid = null) { // linea 849 Moodle 3.0.2
if ($certificate->printdate > 0) { //línea 875
if ($certificate->datefmt == 1) {
$certificatedate = $ciudad.' '.userdate($date, '%B %d, %Y');
} else if ($certificate->datefmt == 2) {
$suffix = certificate_get_ordinal_number_suffix(userdate($date, '%d'));
$certificatedate = $ciudad.' '.userdate($date, '%B %d' . $suffix . ', %Y');
} else if ($certificate->datefmt == 3) {
$certificatedate = $ciudad.' '.userdate($date, '%d %B %Y');
} else if ($certificate->datefmt == 4) {
$certificatedate = ciudad.' '.userdate($date, '%B %Y');
} else if ($certificate->datefmt == 5) {
$certificatedate = $ciudad.' '.userdate($date, get_string('strftimedate', 'langconfig'));
}
return $certificatedate;
}
Una vez realizado esto, debemos de ir a nuestro archivo certificate.php (miMoodle/mod/certificate/type/miCertificado/certificate.php) y añadir la siguiente línea de código
certificate_print_text($pdf, $x, $y + 105, 'C', 'Times', '', 20, certificate_get_date($certificate, $certrecord, $course, $ciudad)); //Fecha del Curso con la ciudad
Lo anterior se trabajo para la versión de Moodle 3.0.2 y versión del modulo certificado 2015111601
Hola, yo he encontrado una opción muy muy sencilla y funciona.
1º crear un campo nuevo de perfil en Administración del sitio/Usuarios/Cuentas/Campos de perfil de usuario poniendo p.ej. DNI (tanto en nombre corto como largo). Este campo DNI lo único que se crea en la categoría «Otros» no en «General» pero da igual…
2º Entras en el certificado, y en Administración de certificados/Editar Certificados/Añadir elemento/ y en el desplegable ya aparece el campo que has creado (en este cas, DNI)
Espero que os ayude!