Tüm siteyi HTTPS'ye Yönlendirme

Drupal veya başka bir içerik yönetim sisteminde tüm siteye ait HTTP trafiği 301 ile HTTPS'ye yönlendirmek için aşağıdaki kodu kullanabilirsiniz.

RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Drupal 7 Programatik Olarak Oluşturulan Sayfanın Cache'ini Kapatma

Drupal 7 kullanarak modül yardımıyla oluşturmuş olduğunuz sayfanın Drupal tarafından önbelleklenmesini kapatmak istiyorsanız aşağıdaki komutu o sayfanın çağrıldığı fonksiyonda kullanabilirsiniz.

drupal_page_is_cacheable(FALSE);

Drupal 7 Menü Sekmesini Yalnızca Belirli İçerik Türlerinde Göstermek

Drupal 7'de içeğinizin detayına editleme ve düzenleme harici eklemiş olduğunuz tab'ın yalnızca belirli içerik türlerinde gösterilmesini istiyorsanız Contextual filters bölümünden Nid field'ını ekleyin ve WHEN THE FILTER VALUE IS NOT IN THE URL  ayarlarını Display all results for the specified field yapınız

Drupal 7 Özel Tema Geliştirme: Fontları Önce Yüklemek

Drupal 7 için geliştirmiş olduğunuz özel tema'da localde bulunan fontların geç yüklenmesi problemi var ve fontlar düzgün görüntülenmiyorsa html.tpl.php dosyasının içerisinde fontların css dosyasından önce yükleyebilirsiniz. 

Drupal 7 'de XML Sitemap için Priority, Changefreq, Lastmod değerlerini değiştirme

XML Sitemap modülünde ana sayfa, menü, içerik türü, sınıflandırma terimi  ve kullanıcı bazında ayarlamalar yapılabiliyor. Ancak sadece priority değerini değiştirmemize izin veriyor. Changefreq ve Lastmod değerlerini de aşağıdaki hook yardımıyla değiştirebiliriz.

Drupal 7'de field group içindeki bir field'a varsayılan değer atama

Drupal 7'de field group içinde yer alan bir field'a (alan) varsayılan değer atamak normal field'dan biraz farklıdır. hook_from_alter içinde doğrudan $form['field_adi'] ile ulaştığınız noktadan değil, field grup içinde yer alan field'a atama yapmanız gerekiyor. Form içinde fgm_ ile başlayan bir değer olacaktır, fgm_node_NODETYPE_form_group_GROUPNAME' yapısına göre isimlendirilen değer altından field'a varsayılan değer ataması yapabilirsiniz. 

Aşağıdaki örnekte field_ag_id isimli alan için varsayılan değer ataması yapılmaktadır.

Drupal 7, Iframe 'X-Frame-Options' Ayarlama

Sitenize iframe eklemek istediğiniz de aşağıdaki hatayı alıyorsanız;

...because it set 'X-Frame-Options' to 'SAMEORIGIN'.

Bu sorunu .htaccess'e alt satırdaki komutu ekleyerek çözebilirsiniz.

<IfModule mod_headers.c>

    Header unset X-Frame-Options

</IfModule>

Drupal 7 Headers Bölümünden X-Drupal-Cache ve X-Generator Kaldırma

Drupal 7 kullanıyor ve sitenizin header bölümünde yer alan X-Drupal-Cache ve X-Generator kaldırmak istiyorsanız .htaccess'e aşağıdaki kodları eklemeniz yeterlidir.

<IfModule mod_headers.c>
    Header unset X-Drupal-Cache
    Header unset X-Generator
</IfModule>

Drupal 7 Body Class'ına View Adını Tanımlama

Drupal Yazılım Geliştirme Şirketi olarak bugün sizlere Drupal 7 kullanarak oluşturmuş olduğunuz view sonucuna tema giydirirken url değişikliğinden etkilenmemek için body tag'ına view'ınızın adını class olarak koymak isterseniz aşağıdaki kodu kullanabilirsiniz. Bu değişiklikleri tema klasörünüzde bulunan template.php dosyası içinde yapmanız gerekmektedir.

Drupal 7 İlk Defa Giriş Yapan Kullanıcıyı Tespit Etmek

Drupal 7 ile sayfanıza ilk defa giriş yapan kullanıcıları basit fonksiyon kullanarak yakalayabilirsiniz. Bunun için Drupal'ın "hook_user_login" fonksiyonundan yararlanacağız.

function modulAdi_user_login(&$edit, $account) {
	if ($account->access == 0) :
		//İlk giriş
	endif;
}

Drupal 7 Modül Fonksiyonlarını Kullanma Yolları

Drupal 7 ile geliştirme yaparken kurulu olan modüllerin foksiyonlarını doğrudan çağırabilir ve kullanabilirsiniz. Örnek olarak pathauto modülüne ait string ifadeleri temiz url formatlarına çeviren "pathauto_cleanstring" foksiyonunu kullanalım.

Modül içi kullanım : drupart.module

if (module_exists('pathauto')) {
module_load_include('inc','pathauto','pathauto');
$text = pathauto_cleanstring($text);
}

 

Themplate içi kullanım : html.tpl.php (modül içinde kullanıdığımız module_load_include burada çalışmayacaktır)

Drupal Programatik Olarak Başlık Değiştirme

Drupal 7 de programatik(kodla, manuel) olarak başlığı değiştirmek isterseniz drupal_set_title fonksiyonunu kullanmanız yeterlidir.

drupal_set_title('Drupart Dijital Çözümler');

Drupal 7 View Aktarma

Drupal 7'de iki site arasında view aktarmak istiyorsanız edit name desription  bölümünde bulunan export view bağlantısına tıklayın.

Drupal 7 View Aktarma

Drupal 7 View Sonucunu Başka Dile Çevirme

Drupal 7'yi bildiğiniz gibi birden çok dilli olarak kullanabilirsiniz. Drupal'da oluşturmuş olduğunuz view'da bulunan butonları custom text'leri başka dillere çevirmek istiyorsanız https://www.drupal.org/project/i18nviews adresinden ilgili modulu kurduktan sonra edit view name/description butonuna tıklayın ve View Translate linkine tıklayıp view'ınızı istediğiniz dillere çevirebilirsiniz.

Drupal 7 Parola Sıfırlama

Drupal 7 de şifrenizi unuttunuz ve sistemde bulunan parolamı unuttum bölümünü kullanarak yeni şifre talep ediyor ancak mail ayarlarını yapmadığınızdan dolayı yeni parolanız sizlere ulaşmıyor ise drupal'ınızın veritabanına bağlanın kullanıcı uid'iniz users tablosundan bulun ve aşağıdaki komutu sql olarak çalıştırın.

Drupal 7 Kilitli Kullanıcıyı Açmak

Drupal 7 de kullanıcı girişi yaparken üst üste 5 kere yanlış parola denediğinizde hesabınız kilitlenecektir. Hesabınız kilitlendiğinde drupal'ınızın veritabanına bağlanın ve flood tablosunun içini temizleyin. 

Drupal 7 Flood Tablosu

Centos Sunucuya Memcache Kurulumu ve Drupal Entegrasyonu

Drupal diğer içerik yönetim sistemlerine göre çok daha fazla kaynak tüketiyor, performans artışı için de cache ile ilgili birtakım uygulamalar kurmak, ayarlar yapmak gerekiyor.

Centos bir web sunucuya memcache kurmak ve drupal ile entegre etmek için aşağıdaki adımları takip edebilirsiniz;

Memcache Kurulumu

Sunucunuzda PHP 5.3 ve PECL olduğunu varsayıyoruz. 

Drupal'da public:// ile gerçek dosya yolu

Drupal'da public:// ile başlayan bir views veya node çıktısı için resmin gerçek yolunu image_style_url ile öğrenebilirsiniz. Örnek verecek olursak;

[field_urun_resim] => Array(
    [tr] => Array(
              [0] => Array(
                     [uri] => public://thumbnail/urun.jpg
                     )
             )
     )

gibi bir sonuçta, uri değeri için gerçek resmin yolunu ekrana yazdırmak için aşağıdaki komutu kullanabilirsiniz.

$path = image_style_url('thumbnail', $node->field_urun_resim['tr'][0]['uri']);
print $path;

Drupal'da PHP değişkenlerini Javascipt/jQuery'e gönderme

Drupal Modül geliştirme örneklerimize PHP/Drupal değişkenlerini JavaScript olarak işleme örneği ile başlıyoruz. Buradaki örnekte Drupal'daki bir değeri tarayıcı tarafında çalışan Javascript'e göndereceğiz.

Drupal'da modül geliştirirken Drupal-PHP değişkenlerini JavaScript/jQuery'e göndermeniz gereken durumlar olabilir. Drupal 7 için yazacağımız aşağıdaki örnekte; Drupal'daki Kullanıcı adını Alert ile ekrana göstereceğiz.

Drupal'da generator meta tag'ını kaldırmak

Drupal 7'de çeşitli sebepler ile generator meta etiketini kaldırmak isteyebilirsiniz. Bunun için hook_html_head_alter hook'unu kullanabilirsiniz.

meta name="Generator" content="Drupal 7 (http://drupal.org)"

template.php dosyasına aşağıdaki satırları ekleyin.

function temaadi_html_head_alter(&$head_elements) { unset($head_elements['system_meta_generator']); }

Drupal'da sayfanın tam yolunu (URL) bulmak

Drupal'da herhangi bir sayfanın tam yolunu bulmak için aşağıdaki kodu kullanabilirsiniz.

$path = isset($_GET['q']) ? $_GET['q'] : '';
$link = url($path, array('absolute' => TRUE));

Drupal'da üst menülerin bağlantısını kaldırmak (tıklanamayan menüler)

Drupal'da menü sisteminde, tüm menülere geçerli bir URL vermek zorundasınız. Superfish gibi eklentiler ile açılır menü yapmak ve üstteki menünün tıklanamamasını istiyorsanız aşağıdaki fonksiyon işinize yarayacaktır.

Drupal'da Tab Class'larını Değiştirmek

Drupal'da varsayılan olarak gelen tab primary class'larını başka bir class ile değiştirmek için aşağıdaki kodu temanın template.php dosyasına ekleyebilirsiniz. Aşağıdaki kod ile tab'ların class'larını nav ve nav-tabs olarak değiştirebilirsiniz. Özellikle Twitter Bootstrap entegrasyonu için bu gerekli.

Webform'a CAPTCHA Ekleme

Drupal'da bilgi toplamak için kullanabileceğiniz Webformlar'ı CAPTCHA ile spam içeriklere karşı koruyabilirsiniz.

Oluşturduğunuz webform'a captcha eklemek için;

Drupal 7 İpuçları: View'a Class Verme

Drupal 7 ile oluşturmuş olduğunuz view'a genel class vermek istiyorsanız Advanced bölümünde bulunan Css Class linkine tıklayınız.

Drupal 7 View'a Class Verme

Drupal 7 Webform Daha Fazla Butonu

Drupal 7'de webform'da oluşturmuş olduğunuz fieldların daha fazla butonuna tıklayınca gelmesi için https://www.drupal.org/project/webform_addmore eklentisini kurmanız gerekmektedir. webform 3.x için 7.x.1.2, Webform 4.x için 7.x.-2.x-dev kurmanızı öneriyoruz.
drupal webform add more

Drupal 7 Üye Olmayı Kapatmak ve Yönetici Onaylı Üye Kabulu

Drupal 7 de sitenize sizden başka bir kullanıcının üye olmasını istemiyorsanız admin/config/people/accounts adresinde bulunan REGISTRATION AND CANCELLATION bölümünden Administrators only, yönetici onaylı üye olunmasını istiyorsanız Visitors, but administrator approval is required seçip kaydetmeniz yeterlidir.

Drupal 7 Dosya Yollarını ve Tmp Dizinini Değiştirme

Drupal 7 de varsayılan dosya yolunu veya tmp dizinini değiştirmek istediğinizde admin/config/media/file-system adresinde bulunan Public file system path, Temporary directory bölümlerini değiştirip cache temizlemeniz yeterlidir.

Drupal 7 İçeriği Değiştirilen Modülün Güncellemesini Kapatmak

Drupal 7 de kurmuş olduğunuz modulun çeşitli sebeplerle içeriğini düzenlemiş veya düzenlemek zorunda kalmış olabilirsiniz. Ancak modül güncelleme bilgilerini kapatmadığınızda bu modül için yeni güncelleme geldiğinde güncellemeler sayfasında görünecek ve içeriğini değiştirmeyi unutup güncellediğinizde yapmış olduğunuz tüm değişiklikleri kaybedebilirsiniz.

Drupal 7: Webform'a Text Editör Ekleme

  • Öncelikle https://www.drupal.org/project/wysiwyg bu linkten, WYSIWYG modülünü indirip, modules klasörüne atıyoruz.
     
  • Yükledikten sonra yönetim panelinden modülü aktifleştiriyoruz.
     
  • Modülün ayarlar ekranında aşağıdaki gibi bir görüntü olması gerekiyor.

    Drupal Text Editör - Config

Drupal 7 Views Sonuçlarında Field'ı Toplama

Drupal 7 Views kullanarak oluşturmuş olduğunuz sonuçları gruplayıp bazı fieldları toplamak isterseniz View düzenleme ekranında OTHER bölümünde bulunan Use aggregation linkine tıklayınız.

Drupal 7 Use Agregation

Karşınıza gelen ekrandan Aggregate seçeneğini seçiniz.

Drupal 7 Modul Kalıntılarını Silme

7.50 sürümünden sonra Drupal'de daha önceden kurduğunuz ve düzgün kaldırmadığınız sitemde verileri bulunan moduller var ise aşağıdaki gibi bir hata almanız muhtemeldir.

"The following module is missing from the file system: MODULE NAME. In order to fix this, put the module back in its original location. For more information, see the documentation page."

Drupal 7 Menü Hook - Url'a Verip Bir Fonksiyon Çalışmak

function test_menu() {
    $items['url/url2'] = array(
        'title' => 'TEST MENU HOOK',
        'page callback' => 'test',
        'access callback' => TRUE,
        'file' => 'test.page.inc',
    );
    return $items;
}

test.page.inc dosyasında

    function test_page() {
        return 'Merhaba Test!';
    }

Drupal 7 Superfish Modülü ile Açılır Menü Yapımı

https://www.drupal.org/project/superfish adresinde Superfish modülünü indirin. Modülü kurduktan sonra Library modülü gerekmektedir. Eğer kurmadıysanız https://www.drupal.org/project/libraries linkten indirebilirsiniz. Superfish ve Library modüllerini etkinleştirin. Superfish eklentisini indirdiğiniz sayfada Superfish Library dokümanını indirin. 

Drupal 7'de textfield Alanlarını textare'ya Dönüştürmek

Kısa Metin Alanlarını Uzun Metin Alanına Dönüştürme

Drupal 7'de zaman zaman oluşturduğumuz metin alanlarını (Text field) uzun metin kutusuna dönüştürmeniz gerekebilir. Maalesef ilgili alanlar içinde veriler olduğu için bu düzenlemeyi Drupal arayüzünden yapamıyorsunuz. Field tanımları field_config tablosunda BLOB olarak yer alıyor ve bu metinleri doğrudan da değiştiremiyorsunuz.

Drupal 7 'de Sayfa Başlığını Değiştirme

Bazı durumlarda içinde bulunulan sayfanın başlığını isteğe göre değiştirmek gerekebilir. Bunun için drupal_set_title() fonksiyonu kullanılabilir.

 

drupal_set_title("Başlık...");

 

Drupal 7 'de Sayfa Başlığına Erişme (drupal_get_title)

İçinde bulunulan sayfanın başlığına erişmek için bu fonksiyon kullanılabilir.

 

drupal_get_title();

 

Drupal 7 İpuçları: Admin Menüye Link Ekleme

Drupal 7 de administrator yetkisine sahip kullanıcıda üst tarafta bulunan admin menüsüne admin/structure/menu/manage/management adresinden link ekleyebilirsiniz.

Drupal 7 İpuçları Admin Menüye Link Ekleme

Drupal 7'de Popup Mesajı Gösterme

Merhaba,

Bu yazımızda Drupal 7'de popup ile mesaj nasıl verebileceğinizden bahsedeceğiz.  Bu adresten https://www.drupal.org/project/popup_message modulü indirin ve kurun. 

Yapılandırma kısmından "Popup Message" adında gelmektedir. 

Drupal 7 Popup Message

Bu kısımda mesajını aktif edebilir, mesaj içeriğinizi girebilir, nerede göstereceğinizi belirleyebilirsiniz. 

Drupal 7'de Programatik Olarak Çoklu Dil Menü

Bu yazımızda Drupal 7 'de programatik olarak çoklu dil menüsü nasıl basacağınızdan bahsedeceğiz.

Page.tpl dosyanıza aşağıdaki çoklu dil menüsünü elde edeceğimiz kodu yapıştırın. 

$tree = menu_tree_output(
        i18n_menu_localize_tree(
            menu_tree_all_data('main-menu')
        )
 

Buradan istediğiniz verileri alıp menüyü basabilirsiniz.

Drupal 7 Programatik Blok Yazdırma

Bu yazımızda Drupal 7 ile bir bloku, içeriğin içine programatik olarak nasıl basılacağını anlatacağız.

Bulunan içerikte bloğu yerine basacağımız benzersiz bir kelime belirleyin. Kelimeyi "[]" parentezlerin içine yazın.

Örneğin; Sabit bir sayfanızın içinde 2 kolonluk bir yazınız var. 3. kolona dinamik gelen "Drupart Twitter" bloğunu göstermek istiyoruz.

PHP - Yandex APİ ile Metrica Veriler Çekmek.

1-  İlk önce kimlik bilgileri aşağıdaki gibi oluşturacak. link -> https://oauth.yandex.com/client/new

yandex_api

2- Scope -> Yandex.Metrica -> 'Access to statistics and ability to view all counter settings'  yukardaki gördüğünüz gibi işaretleyiniz.

Drupal 'da Form Submit Butonuna CSS Class Eklemek

Bir buton için yazmış olduğumuz css 'i sitedeki tüm butonlarda kullanmak isteyebiliriz. Ancak form arayüz ekranında, butona class eklemek için bir alan mevcut değil. Bunun için form_alter modülü yardımıyla form submit butonuna class değeri verebiliriz. $form['actions']['submit']['#attributes'] değerinin, array bir değişken alacağını da unutmayalım.