الحظر في دروبال - لا يطبع أي شيء، ما المشكلة في البرنامج النصي الخاص بي؟

StackOverflow https://stackoverflow.com/questions/3275429

  •  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');

http://api.drupal.org/api/function/hook_block/6

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top