在Drupal 6中的自定义块中显示节点预告片

时间:2012-03-12 19:13:19

标签: drupal drupal-6

我想要一个自定义块,显示来自某个分类的一个随机选择的节点的预告片。我找到了http://drupal.org/node/135344,但它只显示了一系列节点标题。如何为随机的一个节点显示预告片?

我正在使用Drupal 6,包括i18n。我不想使用Views模块,因为我打算自定义它的外观。谢谢你帮助新手!

1 个答案:

答案 0 :(得分:1)

使用您提供的链接,我想出了一个快速模块,用于显示块中给定分类术语的随机节点。如果您有自己的模块,则可能只需要get_block_content()中给出的部分。该模块名为* test_block *,这些文件位于sites / all / modules / test_block

<强> test_block.info

name = Test Block
description = Display a random block for given taxonomy term(s)
dependencies[] = node
core = 6.x

<强> test_block.module

<?php
/**
 * Implementation of hook_block()
 */
function test_block_block($op='list', $delta=0, $edit=array()) {
  switch ($op) {
    case 'list':
      $blocks[0]['info'] = t("Random Node Block");
      return $blocks;

    case 'view':
      $blocks['subject'] = t("Random Node Block");
      $blocks['content'] = get_block_content();

      return $blocks;
  }
}

/**
 * Return the HTML teaser of a random node
 * for a given taxonomy term
 */
function get_block_content() {
  // Comma separated lists of terms tid to display nodes
  $terms = '4,6';

  $sql = "SELECT n.nid FROM {node} n INNER JOIN {term_node} tn ON n.nid = tn.nid WHERE tn.tid IN ($terms) AND n.status = 1 ORDER BY RAND() LIMIT 1";
  $nid = db_result(db_query($sql));
  if ($nid) {
    // Return the node teaser
    return node_view(node_load($nid), TRUE);
  }
  return t('No nodes available for the term(s) given.');
}

有关节点显示的更多选项,请参阅node_view()