Sitenin dilinin id'si ve ismi

Aşağıdaki kod ile sitenin seçilmiş olan diliniz getirir.

<?php
// Get language manager service.
$languageManager = \Drupal::service('language_manager');
//Get the current lanuage code.
$langcode = $languageManager->getCurrentLanguage()->getId();
//Gett the current language name.
$langname = $languageManager->getCurrentLanguage()->getName();

Programatik olarak Node oluşturma

// Node deposu getir.
$nodeStorage = \Drupal::service('entity.manager')->getStorage('node');
// Set node content.
$content = [
    'type' => 'article',
    'title' => 'title',
    'body' => [
        'value' => 'Lorem ipsum dolor sit amet...',
        'format' => 'basic_html'
    ],
    'uid' => $uid
];
// Node oluşturma.
$node = $nodeStorage->create($content);
// Node-u kayıt et.
$node->save();

Check if Entity has a field

// Get entity storage.
$entityName = 'node';
$entityStorage = \Drupal::service('entity.manager')->getStorage($entityName);
// Load the entity by $eid - entity id.
$eid = 1;
$entity = $entityStorage->load($eid);
// Load field type by field name.
$fieldName = 'field_custom';
// Check if the entity has this $fieldName.
if ($entity->hasField($fieldName)) {
    // Do something...
}

Programatik olarak modülün durumunu sorgulama

Aşağıdaki kod ile modülün aktif veya aktif olmadığını test edebilirsiniz.

// Modülün makine ismi.
$moduleName = 'admin_toolbar';
//  $moduleName durumunu test ed'n'z.
$moduleHandler = \Drupal::service('module_handler');
if ($moduleHandler->moduleExists($moduleName)) {
    // aktif ise
}

Programatik olarak kullanıcıyı kullanıcı adı ve şifre ile doğrulama

$uid = \Drupal::service('user.auth')-&gt;authenticate($username, $password);

if ($uid) {
   // Başarıyla doğrulandığı takdirde ...
}

Drupal 8 Sayfa Yönlendirme, drupal_goto

Drupal 8'de drupal_goto fonksiyonu kaldırıldı, onun yerine RedirectResponse sınıfı kullanılmaya başlandı. Aşağıdaki örnekte mevcut sayfanın URL'si alınarak tekrar kendi içinde yönlendirme yapılmaktadır.

$current_path = \Drupal::service('path.current')->getPath();
$response = new RedirectResponse('/beyin-bilimi');
$response->send();
return;

ldap_user modülünü kaldırmak

Drupal 8'de ldap_user modülünü kaldırmak istediğinizde problem yaşayabiliyorsunuz.  Aşağıdaki gibi bir bağımlılıktan dolayı modül kaldırılamıyor.

There is data for the field ldap_user_ldap_exclude on entity type User

Bu durumu düzeltmek ve modülü kaldırabilmek için aşağıdaki sql'i kullanabilirsiniz.

UPDATE users_field_data SET ldap_user_puid_sid=NULL,ldap_user_puid=NULL,ldap_user_puid_property=NULL,ldap_user_current_dn=NULL,ldap_user_last_checked=NULL,ldap_user_ldap_exclude=NULL;

Drupal 7 - Drupal 8 database 'e özel variable (değişken) tanımlama

Bu işlem genelde veriyi cachelemek( önbelleğe almak ) için kullanılır . Örneklemek gerekirse şöyle açıklayabiliriz , belli bir adresten bir json verisi çektiğini varsayalım her işlem sırasında adrese gidip aynı veriyi çekmesi gerekecektir , bu da sistemde uzun süreli bir yavaşlamaya dönüşecektir.

Burada yapmamız gereken işlem ilk çektiğimizde onu sistemimizde cahceleyip ardından cachelediğimiz veriyi kullanmak olacaktır.

Bu işlem Drupal 7 ve Drupal 8 için değişik şekillerde işlemektedir. 

Drupal 8 Debug Kapatma

Drupal 8 ile oluşturduğunuz web sitenize sağ tıklayıp kaynağı görüntüle dediğiniz takdirde sitenizde  html comment görebilirsiniz.


ÖRNEK
<!-- THEME DEBUG -->
<!-- THEME HOOK: 'html' -->
<!-- FILE NAME SUGGESTIONS:
* html--front.html.twig
* html--node.html.twig
html.html.twig
-->
<!-- BEGIN OUTPUT from 'themes/mysites/templates/layout/html.html.twig' -->

Drupal 8 İçerik Türünde Paragraftan Seçilen Veriye Göre Class Ekleme

Drupal 8 de oluşturduğumuz içerik türünde uç kullanıcının class eklemesi bir hayli zor olmakla beraber , göstereceğim yöntem ile basit bir şekilde kullanıcılarınıza class tanımlaması yaptırtabilirsiniz.

Yapmamız gereken işlem bir paragraf type oluşturuyoruz ve bu paragraf type kısmında kullanıcılarımızın girebilecekleri class verilerini tanımlıyoruz.

Örnek olarak kullanıcımıza girdiği içerik için renk seçtirme opsiyonu yapacağız. 

Drupal 8 İçeriğin Dosyalarının Silinme Süresini Ayarlama

Drupal 8 ile gelen, drupal'ı daha da kullanışlı kılan özelliklerden bir tanesi olan dosya ve resim alanlarınıza yüklü bulunan dosyaların içerik silindikten sonra sunucudan silinme süresini ayarlamak için /admin/config/media/file-system adresine gidiniz.   İlgili sayfada Delete orphaned files after bölümünde silinme süresini ayarlayabilirsiniz.

Drupal 8 Programatik Olarak Resim Oluşturmak

Drupal 8 kullanıcısı iseniz ve  elenizde bulunan public://slider/2017-05/bl_slider1.png şeklinde resim yolunu Drupal resim stillerini kullanarak yeniden boyutlandırmak ve  <img src=''> şeklinde koda dönüştürmek için aşağıdaki fonksiyonu kullanabilirsiniz.

Drupal 8 Theme Suggestions

Drupal 8'de bazı kurallara göre farklı sayfa şablon dosyaları kullanabilirsiniz. Örneğin sisteme giriş yapmamış tüm kullanıcılar için ortak bir sayfa oluşturabilir veya URL'ye göre farklı şablon dosyaları kullanabilirsiniz. Aşağıdaki örnekte login olmamış olan kullanıcılar için page__not_logged_in  ve eğer içerik node ise node type şablon önerileri eklenmiştir. 

Drupal 8 Taxonomy Bilgilerine Programatik Olarak Erişmek

Drupal 8'de bazı durumlarda sınıflandırma terimlerini (taxonomy) programatik olarak yüklemeniz ve bilgilerine erişmeniz gerekebilir. Aşağıdaki kod örnekleri ile taxonomy id'ye göre ilgili terimin değerine veya adına erişebilirsiniz.

$term_id = \Drupal\taxonomy\Entity\Term::load($tid)->get('tid')->value;
$term_name = \Drupal\taxonomy\Entity\Term::load($tid)->get('name')->value;

Drupal 8 Kullanıcı Uid'sini alma

Drupal 8'de kullanıcının uid'sine programatik olarak erişmek için aşağıdaki komutu kullanabilirsiniz.

$account = \Drupal::currentUser();
$uid=$account->uid;