لدي نوع محتوى مخصص تم إنشاؤه بواسطة وحدة نمطية. هل هناك خطاف يمكنني استخدامه لتعيين الاسم المستعار للمسار لنوع المحتوى المخصص الخاص بي عند إنشاء عقدة؟
أحد الحقول هو رمز أبجدي رقمي ، وأريد استخدام ذلك في المسار. على سبيل المثال: "event/myc0d3"
لقد لاحظت أن هذه الوظيفة ( path_set_alias ) موجودة في 6 ، ولكن لا يمكنني العثور على ما يعادل 7. ولا أعرف أين يمكنني أن أسميها.
hook_node_insert () لم يكن يعمل في حالتي ، ومع بعض عمليات البحث توصلت إلى هذا مشاركة المدونة . قمت بتنفيذ hook_insert () بنفس الطريقة ومعززة.
/**
* Implements hook_insert().
*/
function mymodule_insert($node) {
// Set the URL alias
if (empty($node->path['alias'])) {
$node->path['alias'] = 'slug/' . $node->nid;
}
}
بدلاً من استخدام hook ، Pathauto يجب استخدام الوحدة النمطية حيث يمكنك تحديد نمط معين لكيفية إنشاء الأسماء المستعارة لكل نوع محتوى (في /admin/config/search/path/patterns
). هناك يمكنك استخدام أنماط الاستبدال أو رمز خاص بك. إنها طريقة أكثر نظافة.
وإلا يمكنك تجربة hook_node_presave($node)
وتغيير الاسم المستعار مباشرة:
$node->path['pathauto'] = 0; // Required only if Pathauto is enabled.
$node->path['alias'] = "foo/bar";
أو استخدم الوظيفة path_save(&$path)
مباشرة كما يلي:
$path = array('source' => "node/$node->nid", 'alias' => 'foo/bar');
path_save($path);
تسمى الوظيفة الآن path_save () ، انظر path_taxonomy_term_insert () كمثال.
تنفيذ hook_node_insert () .