الحظر في دروبال - لا يطبع أي شيء، ما المشكلة في البرنامج النصي الخاص بي؟
-
17-09-2020 - |
سؤال
لدي كتلة أريد إظهار أزرار التحرير والحذف للمستخدمين الذين لديهم حق الوصول، وأزرار أخرى لبقية المستخدمين.هذا هو البرنامج النصي الذي أستخدمه للمستخدمين الذين لديهم إذن التحديث:
<?php
if(arg(0) == 'node' && is_numeric(arg(1))){
//load $node object
$node = node_load(arg(1));
//check for node update access
if (node_access("update", $node)){
print '<p><a href=\"./edit\">edit</a> <a href=\"./delete\">delete</a></p>';
}}
?>
هذا هو نفس البرنامج النصي الذي استخدمته لرؤية الكتلة على الكتل الأخرى، وهو يعمل.لماذا لا يعمل هنا؟
المحلول
لقد اختبرت الكود الخاص بك على موقع Drupal 6 ويبدو أنه يعمل بشكل جيد، باستثناء عناوين URL للرابط الذي ينشئه.أرى رابطين باسم "تحرير" و"حذف".هل أنت متأكد من أنك قمت بتمكين الحظر في منطقة ما، وأن المنطقة معروضة في page.tpl.php؟(يمكنك التحقق من ذلك عن طريق وضع كتلة أخرى في نفس المنطقة ومعرفة ما إذا كانت ستظهر أم لا.)
للحصول على الروابط الصحيحة، أوصي باستخدام Drupal l()
وظيفة مثل هذا:
<?php
if (arg(0) == 'node' && is_numeric(arg(1))) {
//load $node object
$node = node_load(arg(1));
//check for node update access
if (node_access("update", $node)){
$nid = $node->nid
print l(t('edit'), "node/$nid/edit") .' '. l(t('delete'), "node/$nid/delete");
}
}
?>
لاحظ أنني أستخدم أيضًا t()
وظيفة لجعل "تحرير" و"حذف" قابلة للترجمة.
نصائح أخرى
لا ينبغي أن كتلة print
لكن return
.ويجب أن يُرجع مصفوفة:
return array(
'subject' => t('i am an optional title'),
'content' => 'i am the content');