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.