Drupal的Trackback模组的改进

原创 2004年07月10日 19:06:00

drupal提供的Trackback模组其实还不错,他把trackback进来的ping作为匿名用户的comment显示,但标注有trackback和ping的来源,trackback本来就是保存在自己日志上的对别人的post的评价,所以说这样显示也十分合理。

Trackback模组本身其实没有问题,唯一的问题只在于在于显示时把trackback url做成了链接,而不是文字地址,于是常常我们去点那个trackback url,结果返回一个Miss URL,其实只要用右键复制快捷方式就可以了。

来说说我是怎么把它改得更友好一点的:

思路:弹出一个小窗口显示trackback url地址,用url传递地址参数

方法:

1.在template里加入弹出窗口的javascript

  <script language="JavaScript" type="text/JavaScript">
<!--
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
//-->
  </script>

2.写一个简单的tburl.aspx文件,用于接收和显示弹出窗口(之所以用asp.net是因为我对php并不熟)

<%@ Import Namespace="System" %><%@ Import Namespace="System" %>
<%@ Import Namespace="System.IO" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html>
<head>
<title>trackback url</title>
<script language="C#" runat="server">
 public string tburl;
 private void Page_Load(object sender, System.EventArgs e)
 {
  if ( Request.QueryString["q"] != null )
   tburl = HttpUtility.HtmlEncode(Request.QueryString["q"]);
 }
</script>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
<!--
.style1 {font-size: x-small}
-->
</style>
</head>
<body>
<font class="style1">引用本文的 trackback 地址:</font>
<br /><input name='tb' style='font-size:10px;width:312px' onmouseover='this.select()' value=<%=tburl%>>
<input type='button' value='复制' style='font-size:10px' onclick=tb.focus();document.execCommand('COPY')>
</body>
</html>

3.在includes/common.inc里加入popuptrackback()方法,"主机地址"改为存放tburl.aspx的地址,我的tburl.aspx的地址在:http://winisp.net/ericfish/blog/tburl.aspx

function popuptrackback($text, $url, $attributes = array(), $query = NULL, $fragment = NULL, $absolute = TRUE) {
  if ($url == $_GET['q']) {
    if (isset($attributes['class'])) {
      $attributes['class'] .= ' active';
    }
    else {
      $attributes['class'] = 'active';
    }
  }
  return "<a href=javascript:MM_openBrWindow('http://主机地址/tburl.aspx?q=". url($url, $query, $fragment, $absolute) ."". drupal_attributes($attributes) ."','AddNewMsg','width=400,height=30')>$text</a>";
}

4.在module/trackback.module里调用popuptrackback()方法

将原来的:

function trackback_link($type, $node = 0, $main = 0) {
  if ($type == 'system') {
    menu('trackback', t('trackback'), trackback_page, 0, MENU_HIDE);
  }
  elseif ($type == "node") {
    $link = l(t("trackback url"), "trackback/$node->nid");
    if (!$main) {
      $url = url("node/view/$node->nid");
      $tb_url = url("trackback/$node->nid");
      $link .= "/n<!--/n";
      $link .= "<rdf:RDF xmlns:rdf=/"http://www.w3.org/1999/02/22-rdf-syntax-ns#/" xmlns:dc=/"http://purl.org/dc/elements/1.1//" xmlns:trackback=/"/n'>http://madskills.com/public/xml/rss/module/trackback//">/n";
      $link .= "<rdf:Description rdf:about=/"$url/" dc:identifier=/"$url/" dc:title=/"$node->title/" trackback:ping=/"$tb_url/" />/n";
      $link .= "</rdf:RDF>/n";
      $link .= "-->/n";
    }
    return array($link);
  }
}

换成:

function trackback_link($type, $node = 0, $main = 0) {
  if ($type == 'system') {
    menu('trackback', t('trackback'), trackback_page, 0, MENU_HIDE);
  }
  elseif ($type == "node") {
    if (!$main) {
     if (!$node) {
      $url = url("node/view/$node->nid");
      $tb_url = url("trackback/$node->nid");
      $link = l(t("trackback url"), "trackback/$node->nid");
      $link .= "/n<!--/n";
      $link .= "<rdf:RDF xmlns:rdf=/"http://www.w3.org/1999/02/22-rdf-syntax-ns#/" xmlns:dc=/"http://purl.org/dc/elements/1.1//" xmlns:trackback=/"/n'>http://madskills.com/public/xml/rss/module/trackback//">/n";
      $link .= "<rdf:Description rdf:about=/"$url/" dc:identifier=/"$url/" dc:title=/"$node->title/" trackback:ping=/"$tb_url/" />/n";
      $link .= "</rdf:RDF>/n";
      $link .= "-->/n";
     }
     else {
     $link = popuptrackback(t("trackback url"), "trackback/$node->nid");
     }
    }
    else {
    $link = popuptrackback(t("trackback url"), "trackback/$node->nid");
    }
    return array($link);
  }
}

Done!

drupal t()

转自:http://blog.csdn.net/useryecha/article/details/5363865#t0 所属文件 includes/common.inc   ...
  • woshirongshaolin
  • woshirongshaolin
  • 2012年09月12日 15:22
  • 1633

错误及解决办法:trackback (most recent call last) File “XXX文件路径” ,line 1, in <module> import pandas as pd

最近学习《python 机器学习及实践》(作者范淼、李超),编写运行其第四章的代码。 书中源代码为:(相应的配置为python2..7.13,pandas版本为0.20.2) import pand...
  • jjddss
  • jjddss
  • 2017年06月13日 10:44
  • 411

Drupal 初次使用感受,后续补充。

很久以前就接触过,下载下来安装,结果界面太丑,太难看,直接删除。 最近重新想到开源CMS,好奇看到那么多人推崇drupal,也便下载来重新研究了下。 刚接触了下,不过整体使用感觉很差,尤其几个地方: ...
  • default7
  • default7
  • 2014年06月18日 08:56
  • 4101

Drupal 处理一个url请求流程

参考《Drupal专业开发指南》p16,或者查看drupal到index.php文件了解详细信息。 1.引导指令流程,调用drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL)...
  • iefcu
  • iefcu
  • 2011年01月02日 12:55
  • 2472

LCM模组的简介与质量管理(连载四)

FROM:http://www.ci800.com/news/htmlnew/2012-4/33589.htm 一、手机行业LCM模组知识介绍 1.LCD显示模组简介  LCM(LC...
  • chenzhen1080
  • chenzhen1080
  • 2017年01月24日 19:44
  • 1841

drupal7分类权限控制方法

Control Who Can View Drupal Nodes: Taxonomy Access Control December 16, 2012 | Drupal Tutorials |...
  • laoxue_6699
  • laoxue_6699
  • 2014年04月06日 07:46
  • 1170

drupal学习之-创建模块demo篇

定义模块info文件 d7里面info包括这些选项: name 它的意思是模块名字,必须得要的;你德知道你给drupal开发模块的名字是啥吧? description 这个是模块的描述;告诉...
  • wjc19911118
  • wjc19911118
  • 2012年06月27日 10:46
  • 1358

摄像头模组简介与质量管控(连载三)

FROM:http://www.ci800.com/news/htmlnew/2012-4/33592.htm 上期和大家分享了A类核心芯片的质量管理,本期给大家讲述手机中被称谓“眼睛”的关键器件-...
  • chenzhen1080
  • chenzhen1080
  • 2017年01月24日 19:43
  • 2021

Drupal 在Views 中自定义筛选 Filter

在Views中设定了一个Node,Node中有个field_warehousefactory  字段通过Tax取到数据,User中有个Field_warehousefactoryid ,想法是当前登录...
  • e_zhiwen
  • e_zhiwen
  • 2016年01月09日 22:49
  • 1580

drupal学习之-安装篇

步骤1:下载 下载最新版本的Drupal 7。 你会得到一个文件名为Drupal的7.x.tar.gz。将压缩文件解压。 使用SFTP客户端登录到您的服务器和浏览到网站的根目录。上传...
  • wjc19911118
  • wjc19911118
  • 2012年06月26日 12:51
  • 4357
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Drupal的Trackback模组的改进
举报原因:
原因补充:

(最多只允许输入30个字)