Düğüm oluşturulduğunda programsal olarak yol diğer adı oluşturma


8

Bir modül tarafından oluşturulan özel bir içerik türü var. Bir düğüm oluşturulduğunda özel içerik türümün yol diğer adını ayarlamak için kullanabileceğim bir kanca var mı?

Alanlardan biri alfa-sayısal bir kod ve bunu yolda kullanmak istiyorum. ör .: etkinlik / myc0d3 '

Bu fonksiyonun ( path_set_alias ) 6'da var olduğunu fark ettim , ancak 7 için eşdeğerini bulamıyorum. Ve nerede diyeceğimi bilmiyorum.

Yanıtlar:


10

Kanca kullanmak yerine, içerik türü (at ) başına takma adların nasıl oluşturulacağını belirli bir desen tanımlayabileceğiniz Pathauto modülü kullanılmalıdır /admin/config/search/path/patterns. Orada değiştirme kalıplarını kullanabilir veya kendiniz kodlayabilirsiniz. Çok daha temiz bir yaklaşım.

Aksi takdirde hook_node_presave($node), takma adı doğrudan değiştirmeyi deneyebilirsiniz :

$node->path['pathauto'] = 0; // Required only if Pathauto is enabled.
$node->path['alias'] = "foo/bar";

veya path_save(&$path)fonksiyonu doğrudan aşağıdaki gibi kullanın :

$path = array('source' => "node/$node->nid", 'alias' => 'foo/bar');
path_save($path);

Benim için sadece her ikisi birlikte çalıştı, böylece takma metin alanı içinde sonunda doğru takma ad yazılır. Sadece path_save () işe yaradı ama sonra düğüm düzenleme takma metin alanında yanlış takma vardı, bu yüzden basit bir yeniden kaydetme bana yine yanlış takma isim almış olurdu.
leymannx


9

hook_node_insert () benim durumumda çalışmıyor ve bazı aramalarda bu blog yazısı ile geldim . Ben aynı şekilde ve presto hook_insert () uyguladı .

/**
 * Implements hook_insert().
 */
function mymodule_insert($node) {
    // Set the URL alias
    if (empty($node->path['alias'])) {
        $node->path['alias'] = 'slug/' . $node->nid;
    }
}

2
hook_insert()Yalnızca onu uygulayan modül bir içerik türü tanımlarken kullanıldığını fark etmek için; kanca, başka bir modülden tanımlanan içerik türü için bir düğüm üzerinde hareket etmek için kullanılamaz.
kiamlaluno

bu sadece makalelere bağlantı vermenin değil, cevabı genişletmenin ve bu makalelerden ana yararlı bilgileri çıkarmanın önerilmesinin nedeni budur - bu 'blog yazısı' bağlantısı artık geçerli değildir ve 404
Titi

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.