2010-09-02 2 views
0

По умолчанию ссылки узла на странице блога содержат blog_usernames_blog (блог администратора), comment_add (Добавить комментарий) и node_read_more (Подробнее).Ссылки узла Theming в Drupal 6

Мне нужно избавиться от первых 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 в конце функций, массив ссылок точно так же, как я хочу; но когда страница отображается, отображаются старые ссылки по умолчанию.

Почему? Как я могу связать узловые ссылки только для некоторого типа контента и только на странице списка узлов, с функциями theming?

p.s: я очистил кэш и тему реестра перед каждым попробовать;)

ответ

1

Во-первых, вы должны проверить на $ крючке, иначе эта функция предобработки будет вызываться на каждом месте. Это приведет к снижению вашего сайта, даже если вы запустите небольшой сайт на большом сервере.

Во-вторых: если print_r, печатает правильные ссылки, то, безусловно, код/​​is/ran, не нужно беспокоиться о реестре темы.

Теперь вы, вероятно, смотрите на неправильную тему. 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']); 
    } 
} 
+0

Спасибо за предложения, они действительно оценили, им новое для Друпала .. но вы написали пример неправильно? Я вижу, что ваш пример использует theme_preprocess_node вместо theme_link, что вы указали – Strae

+0

Извините. Действительно, я неправильно написал функцию. Отредактировал его. – berkes

+0

mmh ... на api.drupal.org нет 'theme_preprocess_links', и ни один из' * _preprocess_links' ... вы имели в виду 'hook_link_alter'? – Strae

Смежные вопросы