¡Estoy tratando de entender nuevamente los filtros contextuales! Lo usé hace un tiempo pero me quedé totalmente perplejo nuevamente. Esto es lo que estoy tratando de hacer:
- Genere una página de nodo de contenido clonado con términos de taxonomía insertados en esta página clonada.
Ej .: EJEMPLO.com/botas blancas / azul
Cuando un usuario llega a la página / white-shoes, mostrará la página del nodo original orientada hacia el color blanco. Ahora, si el usuario aterriza en / white-shoes / blue, mostrará la misma página de nodo, pero esta vez todo el contenido del cuerpo se reescribirá reemplazando el color blanco con el color azul.
En Vistas , tendría que crear una visualización de página con la ruta de:% /%
Ahora crearía un filtro contextual para recuperar el nid. Agrego Content: nid como filtro contextual. Elijo PROPORCIONAR UN VALOR POR DEFECTO y pongo este código PHP:
$ x = drupal_lookup_path ('fuente', arg (0));
$ y = explotar ('/', $ x);
devolver $ y 1 ;
Ese código PHP básicamente convierte la parte / white-shoes de la URL en un NID. Pero no funciona. Probé el código a través de drush ev a través del terminal y de hecho recibí un resultado devuelto, así que sé que funciona.
Hago lo mismo para el nombre del término de taxonomía y también agrego un filtro contextual para eso. Esta vez elijo PROPORCIONAR UN VALOR POR DEFECTO y selecciono VALOR SIN PROCESAR DE URL y selecciono el segundo argumento.
Como puede ver cuando ingreso un VALOR DE VISTA PREVIA para el filtro contextual: AAA / BBB / CCC. Mi valor predeterminado se ignora. Se supone que está tomando el segundo argumento, pero está obteniendo el primer solo. Mire la instrucción SQL DONDE y verá que está obteniendo AAA cuando debería ser BBB.
Entonces, la pregunta es ¿qué estoy haciendo mal o hay una mejor solución para lo que quiero lograr?
Respuestas:
Aquí hay un video y su artículo relacionado que le explicará cómo usarlos, el ejemplo usa Mascotas (Perros, Gatos), que puede ser un ejemplo lo suficientemente simple como para ayudar a comprender cómo usar Vistas Contextuales Filtros.
VIDEO: https://www.youtube.com/watch?v=lJFMTDuaxy8 (video corto de YouTube: lJFMTDuaxy8)
ARTÍCULO: http://www.metaltoad.com/blog/using-drupal-contextual-filters-views
fuente
El filtro contextual se usa para filtrar, salida de la vista por argumentos de URL, también puede pasar los argumentos manualmente en este formato:
donde "$ name" es el nombre de su vista (ej. 'example_view') y '$ display_id' es el tipo de visualización de su vista (ej. 'default') y "$ arg1, $ arg2, $ arg3" son argumentos al igual que en la URL.
Los argumentos de URL tienen la siguiente estructura:
http://example.com/arg_1/arg_2/arg_3 (arg_2 tiene el componente de ruta 2 (en la página de configuración de la vista)).
Cuando el valor del filtro no está disponible:
significa que drupal no puede encontrar ningún filtro.
Proporcionar valor predeterminado:
cuando el valor del filtro no está disponible, puede usar esta opción para crear un filtro para la salida de vistas, este filtro puede ser código PHP (si el módulo de filtro PHP está habilitado) o puede obtener su valor de los argumentos de URL -> (Valor sin formato de url). El cuadro de texto Excepción le permite engañar al valor y mostrar todos los resultados.
Cuando el valor del filtro está disponible
en este caso, realiza una validación según sus necesidades y algunas otras opciones, cuando drupal puede encontrar el valor del filtro.
fuente
VALIDATION (type: PHP Code)
. Con esta opción, puede usar ver objeto y hacer todo lo que necesita. En su caso, la/blue
ruta generada por las vistas también se usaría para obtener la identificación del nodo de ese alias.