Tengo el siguiente problema.
Tengo una entidad en mi Drupal (oficinas)
En dichas oficinas he hecho un sistema en el que sobre un mapa, seleccionas dónde está esa oficina (guardado de coordenadas X e Y en 2 campos de la entidad).
Todo funciona perfectamente.
Mi problema es que:
- Entro en el Front y veo el mapa con portugal (u otra oficina) colocada en su lugar.
- Entro en el Admin, y cambio Portugal (u otra 0ficina) a otro punto del mundo
- Recargo el Front y portugal sigue en su sitio.
---- Limpio la caché de drupal, y recargo el front, y Portugal (u otra oficina) pasa a colocarse en el nuevo lugar que he establecido.
Los datos para pintar estos puntos los preproceso en mi archivo THEME.module
He probado a preprocesarlo en varios lugares, con el mismo resultado, el mismo cacheo de la información:
En THEME_preprocess, en THEME_preprocess_node
Esta es la forma en la que obtengo los datos y los guardo en una variable:
THEME.module
Código PHP:
function gap_preprocess(array &$variables) {
$node = Drupal::routeMatch()->getParameter('node');
$variables['gap_node'] = $node;
$variables['gap_node_type'] = $variables['gap_node']->getType();
switch($variables['gap_node_type']) {
case "encuentranos_home":
$variables["gap_findUs"]["continents"] = GAP_findUs_getContinents();
$variables["gap_findUs"]["countries"] = GAP_findUs_getCountries();
break;
}
}
function GAP_findUs_getContinents () {
$ids = Drupal::entityQuery('node')
->condition('type', 'oficinas_continentes')
->sort('title')
->execute();
$allElements = entity_load_multiple('node', $ids);
$allElements_array = array();
foreach ($allElements as $element_key=>$element_value) {
$alias = Drupal::service('path.alias_manager')->getAliasByPath('/node/'.$element_value->nid->value);
$alias = explode("/", $alias);
$alias = array_pop($alias);
$tempElement = array (
"id" => $element_value->nid->value,
"name" => $element_value->title->value,
"alias" => $alias,
"mapPosition_X" => $element_value->field__officecontinent_point_x->value,
"mapPosition_Y" => $element_value->field__officecontinent_point_y->value,
);
array_push($allElements_array, $tempElement);
}
return $allElements_array;
}
function GAP_findUs_getCountries () {
$ids = Drupal::entityQuery('node')
->condition('type', 'oficinas_paises')
->sort('title')
->execute();
$allElements = entity_load_multiple('node', $ids);
$allElements_array = array();
foreach ($allElements as $element_key=>$element_value) {
$alias = Drupal::service('path.alias_manager')->getAliasByPath('/node/'.$element_value->nid->value);
$alias = explode("/", $alias);
$alias = array_pop($alias);
$tempElement = array (
"id" => $element_value->nid->value,
"name" => $element_value->title->value,
"alias" => $alias,
"type" => $element_value->field_officecountry_type->value,
"mapPosition_X" => $element_value->field__officecontinent_point_x->value,
"mapPosition_Y" => $element_value->field__officecontinent_point_y->value,
);
array_push($allElements_array, $tempElement);
}
return $allElements_array;
}
Código HTML:
<div class="findUs_map_container"> {% for continent in gap_findUs.continents %} <a href="javascript:void(null)" title="{{ continent.name }}" class="findUs_map_poi findUs_map_poi_continent" style="left:{{ continent.mapPosition_X }}%; top:{{ continent.mapPosition_Y }}%;"> <span>{{ continent.name }}</span> </a> {% endfor %} {% for country in gap_findUs.countries %} {% if country.type != "" %} <a href="javascript:void(null)" title="{{ country.name }}" class="findUs_map_poi findUs_map_poi_{{ country.type }}" style="left:{{ country.mapPosition_X }}%; top:{{ country.mapPosition_Y }}%;"> <span>{{ country.name }}</span> </a> {% endif %} {% endfor %} </div>
Espero que podáis ayudarme.
Gracias y un saludo.