Apr
12
2009
0

Select List dinámica (PHP) de valores CiviCRM recuperados via API en el módulo CCK (Drupal)

Lo primero de todo, decir que este artículo se refiere a CiviCRM 2.2 usado con Drupal 6.10.

Para poder sacarle el máximo partido al fabuloso CiviCRM y poder usar la información de su base de datos con plena libertad en los nodos de Drupal, hay quien opta por usar el módulo Views. No es mala idea, pero yo finalmente me he decidido por CCK, aunque quizá lo complete usando Views puntualmente.

El caso es que estoy trabajando en la web para una ONG que facilita la donación on-line a los proyectos que sus organizaciones afiliadas tienen por el mundo. Al crear los campos para mi tipo de contenido ("Proyecto") quería incluir uno que permitiese al administrador generar nodos de nuevos proyectos indicando cuál es la organización afiliada correspondiente con la facilidad que supone simplemente elegir de una lista.

Pero la lista de afiliados crece por momentos mientras otros administradores los añaden desde CiviCRM, de modo que la lista de items en esa "select list" de Allowed Values no puede ser estática; debe atacar la base de datos de CiviCRM y recopilar los nombres de los afiliados (en mi caso, buscando a través de la API de CiviCRM de Contacts aquellos incluidos en el Grupo 'All Affiliates', que tiene group_id = 5.

Para ello hay que usar la opción que CCK ofrece de "override allowed values" (Advanced usage only: PHP code that returns a keyed array of allowed values. Should not include <?php ?> delimiters. If this field is filled out, the array returned by this code will override the allowed values list above.)

Para ello, el código que introduzcamos allí deberá darle a Drupal un return con el array de los afiliados, array que debemos hacer que deje de ser asociativo y que deberemos ordenar alfabéticamente después.

De modo que este sería el código (sin abrir/cerrar etiquetas php, pues dejaría de funcionar):

civicrm_initialize();
require_once 'api/v2/Contact.php';
$groupId = 5;
$params = array( 'group' => array( $groupId => 1),
'return.sort_name'    => 1
);
$values = array('contact_id', 'sort_name');
$contacts = civicrm_contact_search( $params);
$result = array_values($contacts);
$n=0;
$final = array();
foreach ($result as $key => $value) {
$final[$n] = $result[$n]['sort_name'];
$n++;
}
sort($final);
return($final);

Entiendo que es un post demasiado concreto, pero quizá a alguno se le ocurre alguna idea pensando en esto.

Sigue la conversación en CiviCRM Forums

No me interesaNo está malBienÚtilMuy bien, muy útil (No Ratings Yet)
Loading ... Loading ...
Dec
22
2008
4

Módulo “multigroup” para CCK (Drupal)

Drupal logo

Desde hace algunos días estoy jugando en mi mente con la posibilidad de tener grupos de campos (o campos agrupados, mejor dicho) en la definición de los tipos de contenido cuando se usa el fantástico módulo Content Construcion Kit (CCK) en Drupal... hasta el momento era imposible ya que Fieldgroup, incluido ya en el Core del módulo, es meramente estético (una "carpetita" desplegable para los campos), así que ya estaba empezando a resignarme con el uso de instancias múltiples de cada campo para después reordenarlas todas a través de bucles PHP en el Template del tipo de contenido (estoy usando CCK + Contemplate)... en fin, un poco chapucero, pero es que esta funcionalidad (tan útil) de CCK no viene incluida en el Core. Como suena.

Una consulta en drupal.org (inspirada por el hecho de que la mencionada chapuza me había llevado a descubrir el problema, más desagradable aún si cabe, de que los campos de texto tipo Select List no admiten valores múltiples) me llevó por el buen camino; efectivamente, se está trabajando en un nuevo módulo para CCK, llamado... Multigroup, aunque el título indica el nombre de Combo field. En el comentario #245 se halla el módulo con el patch que corregía algunos errores, pero no ha salido oficialmente. En el comentario #255 se publica el módulo con el patch incluido, te evitan el engorro. Se espera como agua de mayo, si bien voy a empezar a probarlo.

La definición es: "Combine multiple CCK fields into repeating field collections that work in unison."

Te lo pongo fácil, en descarga directa:

Es muy curioso ver cómo surgió todo a raíz de una sencilla pregunta (cómo añadir un campo de texto asociado a cada campo de imagen), y cómo el responsable del módulo lo desprecia en primera instancia, diciendo "on a node you can add an extra text field using cck. Or you can hack imagefield to do it. I'm not just going to add an 'extra' field to the module"... A partir de ahí, cientos de personas salieron a exigir el desarrollo de esta funcionalidad tan necesaria.

EDITO: 30 enero 2009. Actualización del módulo.

No me interesaNo está malBienÚtilMuy bien, muy útil (2 votes, average: 4.50 out of 5)
Loading ... Loading ...
Dec
19
2008
0

Forzar selección con Select List (CCK Field) en Drupal

Drupal logo

Mooffie, desarrollador de Drupal, da la solución al siguiente problema: cuando has habilitado el módulo CCK en tu sitio en Drupal los usuarios, al crear registros rápidamente, dejan su fecha de nacimiento como el día de hoy y su país como Afganistán (es decir, las opciones que encabezan las listas de selección por defecto).

Yes, there's a way to force a user to choose an item from a 'select list'.

Here it is:Add a "|" to the top of the "Allowed values" list. This will add a blank option to the select box. Since you're making this field 'required', Drupal will complain when this blank option is submitted.

Via | Drupal.org

No me interesaNo está malBienÚtilMuy bien, muy útil (No Ratings Yet)
Loading ... Loading ...
Post de cabezaBomba en la(s) categoría(s): Drupal | Tags: , , , , , ,

Creative Commons License
Webcidentes by Alejandro Garcia is licensed under a Creative Commons Reconocimiento-Compartir bajo la misma licencia 3.0 España License.
Based on a work at www.cabezabomba.com.