Ссылки на тематические узлы в Друпале 6 - PullRequest
0 голосов
/ 02 сентября 2010

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

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

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

p.s: я очищал кеш и реестр тем перед каждой попыткой;)

1 Ответ

1 голос
/ 02 сентября 2010

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

Второе: если 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']);
    }
}
...