Tuve un problema muy similar y no solo encontré la solución, sino que también aprendí cosas nuevas sobre cómo funciona la vista. Permítanme compartir lo que aprendí y la solución a su problema también.
Cuando crea una vista con uno o más filtros contextuales, la vista debe recibir valores de esos filtros desde algún lugar. Esto puede hacerse por:
- Elegir los valores de filtro de contexto de la URL
- Por lo general, tendrá una vista de página para tales fines, una que tenga la URL del formulario
foo/%/bar
o foo/bar/%
para un filtro contextual único O del formulario foo/%/bar/%
o foo/bar/%/%
para varios filtros
- En caso de que tenga varios filtros, el valor de la url que aparece primero se asigna al primer filtro, al lado del segundo filtro, etc.
- Vistas le permite saber qué hacer si los valores de filtro no están disponibles en la URL . Esto se usa típicamente para vistas de bloque .
- Puede elegir entre diferentes acciones y luego configurar la opción también.
asdfj kajsdf
- Otra cosa que las vistas le permiten es decir qué hacer con los valores de filtro si se encuentran en la URL como se describe en el punto 1 anterior. Los casos de uso típicos son: hacer títulos dinámicos basados en valores de filtro, validar valores de filtro, etc.
- ¡Al validar los valores de filtro, también puede cambiar los valores! (Ahí es donde nuestra solución radica por cierto). Esto es muy similar a la forma en que podemos cambiar los valores de $ form en las devoluciones de llamada de validación de formularios de drupal.
La solución a su problema específico radica en utilizar un código muy similar en las secciones señaladas por las flechas en la imagen de arriba.
Este enlace resultó ser de gran ayuda para mí. Aquí hay un extracto:
$np = explode('/', drupal_get_normal_path($argument));
if (!empty($np[1])) {
$handler->argument = $np[1];
return TRUE;
} else {
return FALSE;
}