روابط Node في Drupal 6
-
26-09-2019 - |
سؤال
بشكل افتراضي ، تحتوي روابط العقدة في صفحة المدونة blog_usernames_blog
(مدونة المشرف) ، comment_add
(أضف تعليقًا جديدًا) و node_read_more
(اقرأ أكثر).
أحتاج إلى التخلص من أول 2 منهم ، وتغيير النص في node_read_more.
لقد قمت بإنشاء وظيفة تدعى $themenamepreprocess_node
في template.php في موضوعي ، مع هذا المحتوى:
function mytheme_preprocess_node(&$vars, $hook){
$node = $vars['node'];
//blog node, not in full node page
if($vars['node']->type == 'blog' AND !$vars['page']){
$vars['node']->links['node_read_more']['title'] = t('My custom read more here');
unset($vars['node']->links['blog_usernames_blog']);
unset($vars['node']->links['comment_add']);
}
//debug:
echo "<!-- DEBUG\n";
print_r($vars['node']->links);
echo "\n-->";
}
لكنه لا يعمل ؛ عندما أقوم بطباعة $vars['node']->links
في نهاية الوظائف ، صفيف الروابط هو بالضبط كما أريد ؛ ولكن عندما يتم تقديم الصفحة ، يتم عرض الروابط الافتراضية القديمة.
لماذا ا؟ كيف يمكنني عرض روابط العقدة فقط لبعض نوع المحتوى وفقط في صفحة قائمة العقدة ، مع وظائف الرسائل؟
ملاحظة: لقد قمت بمسح ذاكرة التخزين المؤقت وسجل السمة قبل كل تجربة ؛)
المحلول
أولاً: يجب أن تختبر على $ hook ، وإلا سيتم استدعاء وظيفة المعالجة هذه في كل مكان. سيؤدي إلى أسفل موقعك ، حتى لو قمت بتشغيل موقع صغير على خادم كبير.
ثانياً: إذا كان print_r ، يطبع الروابط الصحيحة ، فمن المؤكد أن الكود / run ، لا داعي للقلق بشأن سجل السمة.
الآن ، ربما تنظر إلى المظهر الخاطئ. Theme_links هو ما تريده. http://api.drupal.org/api/function/theme_links/5
function mytheme_preprocess_links(&$vars, $hook){
if ($hook == 'links') {
var_dump($vars);
unset($vars['links']['blog_usernames_blog']);
}
}