用户工具

站点工具


drupal:module:auto-tag

Drupal自动添加标签

<?php
// $Id$
 
/**
* @file
* gdh quan cuxiao block for shop term page
*
* gdh quan cuxiao block for shop term page
 
*/
 
function gdhquancuxiao_block($op = 'list', $delta = 0, $edit = array()) {
  if ($op == 'list') {
    $blocks[0] = array('info' => t('quan block'));
    $blocks[1] = array('info' => t('cuxiao block'));
    return $blocks;
  } else if ($op == 'view') {
    if ($delta == 0) {   //quan block
      $block = array(
        'subject' => gen_quan_title(),
        'content' => gen_quan_content()
      );
      return $block;
    } elseif ($delta == 1) {
      $block = array(
        'subject' => gen_cuxiao_title(),
        'content' => gen_cuxiao_content()
      );
      return $block;
    }
  }
}
 
/*
get current page's term id
*/
function gdh_get_tid() {
  $tid = 0;
  if ( arg(0) == "taxonomy" && arg(1) == "term" ) {
    if (is_numeric(arg(2))) {
      $tid = arg(2);
    }
  } elseif ( arg(0) == "subdomain" && arg(1) == "homepage" ) {
    if (is_numeric(arg(2))) {
      $tid = arg(2);
    }
  } else {
    $tid = gdh_get_node_shop_name_tid();
  }
  return $tid;
}
 
/*
get node page shop name term id 
*/
function gdh_get_node_shop_name_tid() {
  $tid = 0;
  if ( arg(0) == "node" && is_numeric(arg(1)) && (!arg(2))) {
    $nid = arg(1);
    $n = node_load($nid);
    foreach ($n->taxonomy as $term) {
      if ($term->vid == 1) {
        $tid = $term->tid;
        break;
      }
    }
  } 
  return $tid;
}
 
 
 
/*
 quan block title & content
*/
function gen_quan_title(){
  $title = "";
  $tid = gdh_get_tid();
  $term = taxonomy_get_term($tid);
  if($term->vid == 1) {
    $title = $term->name;
    $title = "最新" . $title . "优惠券";
    $title =  $term->name . "优惠券";
  }else{
    $title = "" ;
  }
  return $title;
 
}
 
function gen_quan_content() {
  $info = "";
  $info .= "arg(0): " . arg(0) . "<br />";
  $info .= "arg(1): " . arg(1) . "<br />";
  $info .= "arg(2): " . arg(2) . "<br />";
  $tid = gdh_get_tid();
  $term = taxonomy_get_term($tid);
  if($term->vid == 1) {
    $info .= "<br />" . $tid;
    $nodes = gdh_quan_list($tid);
    $info = gdh_theme($nodes);
  }else{
    $info = "" ;
  }
  return $info;
}
 
 
function gdh_theme($nodes) {
  if ($nodes) {
    $html_ul = "";
    $html_ul = "<ul>";
    $items_ls = array();
    foreach ($nodes as $node) {
      $lstr = l($node->title, 'node/'. $node->nid);
      $items_ls[] = $lstr;
      $html_ul .= "<li>$lstr</li>";
    }
    $html_ul .= "</ul>";
    return $html_ul;
  }
}
 
function gdh_quan_list($tid = 0 ) {
  $nodes = array();
  $node_titles = array();
  $sql = "";
  $args = array();
 
  if($tid) {
    $sql = 'SELECT n.nid, n.title FROM {node} as n ';
    $sql .= "WHERE n.type='promotion' AND  n.nid in ";
    $sql .= '(SELECT tn.nid FROM {term_node} as tn WHERE tn.tid=%s) ';
    $sql .= 'AND n.nid  IN ';
    $sql .= '(SELECT tn.nid FROM {term_node} as tn WHERE tn.tid=2) ';
    $sql .= 'ORDER BY created DESC LIMIT 5' ;
    $sql = db_rewrite_sql($sql);
    $args[] = $tid;
    $result = db_query($sql, $args);
//      watchdog('similarterms',  $sql, NULL, WATCHDOG_INFO);
    while ($r = db_fetch_object($result)) {
      $n = node_load($r->nid);
      $nodes[] = $n;
      $node_titles[] = $n->title;
    }
  }
  return $nodes;
  # return $node_titles;
  # return $sql;
}
 
 
/* cuxiao block title & content
*/
 
function gen_cuxiao_title(){
  $title = "";
  $tid = gdh_get_tid();
  $term = taxonomy_get_term($tid);
  if($term->vid == 1) {
    $title = $term->name;
    $title = "最新" . $title . "促销";
    $title =  $term->name . "促销";
  }else{
    $title = "" ;
  }
  return $title;
 
}
 
function gen_cuxiao_content() {
  $info = "";
  $tid = gdh_get_tid();
  $term = taxonomy_get_term($tid);
  if($term->vid == 1) {
    $info .= "<br />" . $tid;
    $nodes = gdh_cuxiao_list($tid);
    $info = gdh_theme($nodes);
  }else{
    $info = "" ;
  }
  return $info;
}
 
function gdh_cuxiao_list($tid = 0 ) {
  $nodes = array();
  $node_titles = array();
  $sql = "";
  $args = array();
 
  if($tid) {
    $sql = 'SELECT n.nid, n.title FROM {node} as n ';
    $sql .= "WHERE n.type='promotion' AND  n.nid in ";
    $sql .= '(SELECT tn.nid FROM {term_node} as tn WHERE tn.tid=%s) ';
    $sql .= 'AND n.nid not IN ';
    $sql .= '(SELECT tn.nid FROM {term_node} as tn WHERE tn.tid=2) ';
    $sql .= 'ORDER BY created DESC LIMIT 5' ;
    $sql = db_rewrite_sql($sql);
    $args[] = $tid;
    $result = db_query($sql, $args);
//      watchdog('similarterms',  $sql, NULL, WATCHDOG_INFO);
    while ($r = db_fetch_object($result)) {
      $n = node_load($r->nid);
      $nodes[] = $n;
      $node_titles[] = $n->title;
    }
  }
  return $nodes;
  # return $node_titles;
  # return $sql;
}
 
function gdh_get_domain($url) {
    $comps = parse_url($url);
    $domain = "";
    #$patt_domain = '/^(([a-z0-9A-Z\-]+)(\.(cc|us|com|org|net|info))?(\.cn)?)$/';
    if(!$comps) {
        debugg ("not valid url: $url\n");
    } else {
        $hostname = $comps['host'];
        $patt_ip = '/\d+(\.\d+){3}/';
        $num_ip = preg_match($patt_ip, $hostname, $out_ip);
        $patt_domain = '/^(([a-z0-9A-Z\-]+)(\.(cc|us|com|org|net|info))?(\.cn)?)$/';
        $num_domain = preg_match($patt_domain, $hostname, $out_domain);
        if ($num_ip || $num_domain) {
            $domain = $hostname;
        } else {
            $patt_domain = '/\.(([a-z0-9A-Z\-]+)(\.(cc|us|com|org|net|info))?(\.cn)?)/';
            $num = preg_match($patt_domain, $hostname, $out);
            if($num) {
                $domain = $out[1];
            }
        }
    }
    $domain = strtolower($domain);
    return $domain;
}
 
/**
 * Implementation of hook_nodeapi().
 */
function gdhquancuxiao_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
  switch ($op) {
    case 'presave':
      if (strcmp($node->type, 'promotion') != 0 ) {
        # node type not promotion
      } elseif (! $node->taxonomy["tags"][1] ){
        $url = $node->field_url[0]["value"];
        $domain = gdh_get_domain($url);
        $sql = "select intro.nid from {content_field_domain} as intro ";
        $sql .= " where intro.field_domain_value=\"$domain\" ";
        $sql = db_rewrite_sql($sql);
        $result = db_query($sql);
        //      watchdog('similarterms',  $sql, NULL, WATCHDOG_INFO);
        if ($r = db_fetch_object($result)) {
          $intro_nid = $r->nid;
          # $intro_node = node_load($intro_nid);
          $sql_tname = "select td.name from {term_data} as td, {term_node} as tn where td.vid=1 and ";
          $sql_tname .= " td.tid=tn.tid and tn.nid=$intro_nid ";
          $sql_tname = db_rewrite_sql($sql_tname);
          $result_tname = db_query($sql_tname);
          if($tname_obj = db_fetch_object($result_tname)) {
            $tname = $tname_obj->name;
          } else { var_dump ( "error 1" ); }
          if($tname) {
            $node->taxonomy["tags"][1] = $tname;
          } else { var_dump ( "error 2" ); }
        }else {
          # var_dump($url);
          # var_dump($domain);
        }
        #var_dump($node);
      } else {
        #var_dump($node->nid);
      }
      # conver chiness ,to english , in tags
      foreach ( $node->taxonomy["tags"] as $key => $value) {
        # echo "Key: $key; Value: $value<br />\n";
        $new_tags = str_replace(',', ',', $value);
        $new_tags = str_replace(' ', ',', $new_tags);
        $node->taxonomy["tags"][$key] = $new_tags;
      }
      break;
  }
}
 
 
# vim: set expandtab tabstop=2 shiftwidth=2 autoindent smartindent ft=php :
drupal/module/auto-tag.txt · 最后更改: 2010/12/10 09:52 (外部编辑)