Drupal: preprocess den değişken template.php için geçen?

2 Cevap php

Nasıl sitename_modulename_user_loginblock ($ form) adında bir işlevi, template.php bir preprocess işlevi bir değer alabilir miyim?

Ben loginblock işlevi kendisi yapabilirdi yüzden özel bir sorgu ile preprocess fonksiyonunda değer yaratmış, ama sadece $ form orada mevcuttur ve ben sorgusunu oluşturmak için 3 diğer değişkenleri gerekir.

loginblock işlevi biçimlendirme ve bir kaç değişken doları çıkış verir. afaik bu fonksiyonu ve sayfadaki dönüş değeri ekran arasında ek bir adım var mı?

2 Cevap

$ doldurmak template.php bir preprocess işlevi geçmek için [] dizi vars, belirttiğiniz anahtar böylece değişken değeri, şablonda bir değişken adı ve değeri olacaktır:

$vars['foo'] = "bar";

Lütfen preprocess işlevi "bar" bir değer ile şablonu $ foo yaratacak

Yapmaya çalıştığınız ne hakkında biraz karıştı. İdeal logingblock bir blok yerine preprocess yaratılan bir şey olurdu. O seçenek bakmak isteyebilirsiniz.

Jeremy belirtildiği gibi, bunu yapmak istediğinizi gerçekten belli değil, bu yüzden belki açıklığa kavuşturmak için soru düzenlemeniz gerekir.

Eğer varsayılan senin temalar template.php özel bir sürümü ile user_login_block() işlevi geçersiz kılmak istiyorsanız gibi bana geliyor. Bu durumda ise, bu sadece * tekabül etmektedir. Tpl.php dosyalar için değişkenler hazırlamak gibi, sen bir preprocess işlevi yoktur değişkenleri geçemez.

Bu article on overriding form functions elde etmek istediğinize bağlı olarak, yararlı olabilir.

Adlandırma önemlidir. Fonksiyonu geçersiz kılma olarak çalışması için, bunu isim olurdu themename_user_loginblock($form).