Ana içeriğe atla

Çevirisi Olmayan Bağlantıları Kaldırmak

Veli Akçakaya
Veli Akçakaya Drupal Developer

Drupal 8 ve Drupal 9'da sitelerde birden fazla dili aktive ederseniz menüde ilgili sayfanın çevirisi olsa da olmasa da menüde görünür. Örneğin Hakkında sayfasını oluşturdunuz ancak About Us çevirisini eklemediniz, sitenin ingilizcesine geçtiğinizde menüde Hakkımızda görünür olur ve Türkçe sayfaya gider. Bu gibi durumların önüne geçmek için menüler oluşturulurken ilgili menünün çevirisi olup olmadığı kontrol edilir ve eğer çevirisi yoksa ilgili menü gösterilmez.

function TemaAdı_preprocess_menu(&$variables) {
  if ($variables['menu_name'] == 'ekonomi') {
    $language = Drupal::languageManager()->getCurrentLanguage(LanguageInterface::TYPE_CONTENT)->getId();
    foreach ($variables['items'] as $key => $item) {
      if(!$variables['items'][$key] = TemaAdı_checkForMenuItemTranslation($item, $language)) {
        unset($variables['items'][$key]);
      }
    }
  }
}
function TemaAdı_checkForMenuItemTranslation($item, $language) {
  $menuLinkEntity = TemaAdı_load_link_entity_by_link($item['original_link']);

  if ($menuLinkEntity != NULL) {
    $languages = $menuLinkEntity->getTranslationLanguages();
    // Remove links which is not translated to current language.
    if (!array_key_exists($language, $languages)) {
      return false;
    } else {
      if(count($item['below']) > 0) {
        foreach ($item['below'] as $subkey => $subitem) {
          if(!$item['below'][$subkey] = TemaAdı_checkForMenuItemTranslation($subitem, $language)) {
            unset($item['below'][$subkey]);
          }
        }
      }
      return $item;
    }

  }
}
function TemaAdı_load_link_entity_by_link(MenuLinkInterface $menuLinkContentPlugin) {
  $entity = NULL;
  if ($menuLinkContentPlugin instanceof MenuLinkContent) {
    list($entity_type, $uuid) = explode(':', $menuLinkContentPlugin->getPluginId(), 2);
    $entity = \Drupal::entityManager()->loadEntityByUuid($entity_type, $uuid);
  }
  return $entity;
}

Ofislerimiz

Drupart Locations

Ofislerimiz

Drupart AR-GE

GOSB Teknopark Hi-Tech Bina 3.Kat B3 Gebze - KOCAELİ

+90 262 678 8872

+90 216 706 12 58 

[email protected]

Londra

151 West Green Road, London, England

+44 203 815 6478

[email protected]

Newark

112 Capitol Trail Suite, A437 Newark DE, 19711

+1 (740) 666 6255

[email protected]

Wiesbaden

Hinterbergstraße 27
65207 Wiesbaden
Deutschland

+49 (0) 6151 – 492 70 23

[email protected]