Ana içeriğe atla

Drupal 8 Programatik Olarak Resim Oluşturmak

Seyfettin Kahveci
Seyfettin Kahveci
20 dakika okuma süresi

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.

use Drupal\image\Entity\ImageStyle; // kodunuzu kullandığınız sayfanın en başına bunu tanımlamalısınız aksi takdirde hata alırsınız.
$style = ImageStyle::load('large'); // buraya drupal resim stillerinden tanımlamış olduğunuz stilin makine adını girmelisiniz.
$uri = $style->buildUri($slider_url);// $slider_url=public://slider/2017-05/bl_slider1.png şeklindeki url'dir.
$image = \Drupal::service('image.factory')->get($uri);
/*
 * Belirtmiş olduğumuz resmin genişliği ve yüksekliği bulunuyor.
 * Buradaki çalışmayı yapmasanızda çalışır.
 * Ancak bu çalışmayı SEO açısından yapmanızı tavsiye ediyoruz.
 * Bu çalışmayı yapmadığınızda GTMetrix resim width,height hatası alacaksınız,
 * Ayrıca bazı SEO Analiz sitelerinde SEO puanınız düşük çıkacaktır.
 */
if ($image->isValid()) {
   $variables['width'] = $image->getWidth();
   $variables['height'] = $image->getHeight();
}
else {
   $variables['width'] = $variables['height'] = NULL;
}
$image_array = array(
  '#theme' => 'image',
  '#uri' => $uri,
  '#width' => $variables['width'],
  '#height' => $variables['height'], 
  '#alt' => 'Drupart Resim Bilgilendirme Metni',
  '#style_name' =>  'drupart_resim_class',
);

Daha sonra bu resmi basmak istediğiniz yere aşağıdaki kodu yapıştırmanız yeterlidir.

print drupal_render($image_array);

Bu işlem sonucunda html etiketiniz <img alt="" class="image-style-drupart_resim_class" height="570" src="/sites/default/files/styles/thumb_1920_570/public/slider/2017-05/bl_slider1.png" typeof="foaf:Image" width="1920" /> şeklinde oluşmuş olacaktır.

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]