carte ressources va directement sur mission photo
This commit is contained in:
@@ -34,6 +34,34 @@ class GaleriePhotoMap extends BlockBase {
|
||||
$vp_w = 600;
|
||||
$vp_h = 600;
|
||||
|
||||
// Charger toutes les ressources de type "Mission photo" (type de ressource = 17)
|
||||
$all_mission_photos = \Drupal::entityTypeManager()
|
||||
->getStorage('node')
|
||||
->loadByProperties([
|
||||
'type' => 'ressource', // adapte si ton type machine est différent
|
||||
'status' => 1,
|
||||
'field_type_de_ressource' => 17, // même ID que dans la query de la vue
|
||||
]);
|
||||
|
||||
// Indexer les missions photo par ID de site
|
||||
$mission_by_site = [];
|
||||
|
||||
foreach ($all_mission_photos as $mission) {
|
||||
if (!$mission->hasField('field_site') || $mission->get('field_site')->isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Un même node peut être lié à plusieurs sites : on en prend un par site
|
||||
foreach ($mission->get('field_site') as $ref) {
|
||||
$site_id = $ref->target_id;
|
||||
|
||||
if (!isset($mission_by_site[$site_id])) {
|
||||
$mission_by_site[$site_id] = $mission;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Coordonnées géographiques des coins de la carte (France)
|
||||
$latTop = 52.0; // Nord-Ouest (coin supérieur gauche)
|
||||
$lonLeft = -6.0;
|
||||
@@ -60,6 +88,24 @@ class GaleriePhotoMap extends BlockBase {
|
||||
// $subtitle = $site->get('field_sous_titre')->getString();
|
||||
$subtitle = $site->hasTranslation($language) ? $site->getTranslation($language)->get('field_sous_titre')->getString() : $site->get('field_sous_titre')->getString();
|
||||
|
||||
// URL directe de la mission photo liée à ce site (si trouvée)
|
||||
$mission_photo_url = '';
|
||||
|
||||
if (isset($mission_by_site[$site->id()])) {
|
||||
$mission_node = $mission_by_site[$site->id()];
|
||||
|
||||
// Respecter la langue courante si traduction existe
|
||||
if ($mission_node->hasTranslation($language)) {
|
||||
$mission_node = $mission_node->getTranslation($language);
|
||||
}
|
||||
|
||||
$mission_photo_url = $mission_node->toUrl('canonical', [
|
||||
'absolute' => TRUE,
|
||||
'language' => \Drupal::languageManager()->getLanguage($langcode),
|
||||
])->toString();
|
||||
}
|
||||
|
||||
|
||||
$link_options = ['absolute' => TRUE, 'attributes' => ['class' => 'ressource-link'], 'language' => \Drupal::languageManager()->getLanguage($langcode)]; // Passer 'absolute' à TRUE
|
||||
// $site_url = $site->toUrl('canonical', $link_options)->toString(); // URL absolue pour le data-url
|
||||
$site_link_object = Link::createFromRoute(t("Voir le site"), 'entity.node.canonical', ['node' => $site->id()], $link_options);
|
||||
@@ -93,6 +139,7 @@ class GaleriePhotoMap extends BlockBase {
|
||||
class="site-link"
|
||||
data-content="$datacontent"
|
||||
data-url="$url"
|
||||
data-mission-photo-url="$mission_photo_url"
|
||||
cx="0" cy="0" r="$r"
|
||||
style="fill-opacity:1;fill-rule:nonzero;" />
|
||||
<path
|
||||
|
||||
Reference in New Issue
Block a user