it-swarm.asia

إنشاء اسم مستعار مسار برمجياً عند إنشاء العقدة

لدي نوع محتوى مخصص تم إنشاؤه بواسطة وحدة نمطية. هل هناك خطاف يمكنني استخدامه لتعيين الاسم المستعار للمسار لنوع المحتوى المخصص الخاص بي عند إنشاء عقدة؟

أحد الحقول هو رمز أبجدي رقمي ، وأريد استخدام ذلك في المسار. على سبيل المثال: "event/myc0d3"

لقد لاحظت أن هذه الوظيفة ( path_set_alias ) موجودة في 6 ، ولكن لا يمكنني العثور على ما يعادل 7. ولا أعرف أين يمكنني أن أسميها.

8
cbaigorri

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;
    }
}
9
cbaigorri

بدلاً من استخدام 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);
10
kenorb

تسمى الوظيفة الآن path_save () ، انظر path_taxonomy_term_insert () كمثال.

9
Berdir

تنفيذ hook_node_insert () .

0
Oswald