[织梦DEDE迁移]读取织梦MySQL生成所有文章链接

广告:本人承接迁移织梦到wordpress的业务.

本文阐述了从织梦的Mysql数据库读取数据表,生成所有文章链接的方法。

本文中使用了封装了Mysql常用函数的一个模块DBUtil,代码见链接

1、确认链接的组成结构

这个信息记录在dede的分类表dede_arctype的namerule字段中;

执行SQL语句:SELECT namerule ?FROM dede_arctype;

会看到返回结果都是一个值(一般都没有修改):{typedir}/{Y}/{M}{D}/{aid}.html

这意思是,链接由以下字段组成:

{typedir}:类型的目录,来源于dede_arctype的typedir字段;{Y}{M}{D}:文章发布的时间,来源于dede_archives表的pubdate字段;{aid}:文章ID,来源于dede_archives的ID字段;

2、读取Mysql,拼凑URL

大致过程:

读取mysql的dede_arctype表和dede_archives,得到所有链接信息(包括文章ID、类型名称、类型目录、标题、发布日期、自定义文件名)对于每一个链接,根据第1步骤的介绍装备链接;至此已经拿到了所有的链接ID、链接标题和链接URL。

# -*- encoding:utf8 -*-from common import DBUtilimport pprintimport datetimedbUtil = DBUtil.DB('127.0.0.1',3306,'root','','oiayafnq_lwqn')site_home_url = "http://www.crazyant.net"class Link():    def __init__(self, p_linkid, p_title, p_linkurl):        self.linkid=p_linkid        self.title=p_title        self.linkurl=p_linkurl    def __str__(self):        strv="%s\n%s\n%s\n"%(self.linkid,self.title,self.linkurl)        return strvclass DedeLinks():    def __init__(self):        self.allLinks=[]    def getDbArticlesInfo(self):        '''                        获取数据库中链接的信息以及对应的分类        '''        rs = dbUtil.query('''                    SELECT                         dede_archives.id,dede_arctype.typename,dede_arctype.typedir,typeid,title,pubdate,filename                    FROM                         dede_archives,dede_arctype                     WHERE dede_archives.typeid=dede_arctype.id;                ''')        return rs    def equipLink(self, typedir, urldate, filename, linkid):        '''                        根据分类目录、发布文章日期、自定义连接名(可以为空),链接ID,拼接成一个URL        '''        article_date=str(datetime.date.fromtimestamp(urldate)).replace("-","")        #print filename        link_dir = "%s/%s/%s"%(typedir,article_date[:4],article_date[4:])        if filename.strip()!="":            link = "%s/%s.html"%(link_dir,filename)        else:            link = "%s/%s.html"%(link_dir,linkid)        link = link.replace("{cmspath}",site_home_url)        return link    def getAllDedeLinks(self):        rs = self.getDbArticlesInfo()        for row in rs:            (linkid,typename,typedir,typeid,title,pubdate,filename) = row            linkurl =self.equipLink(typedir, pubdate, filename, linkid)            linkNode = Link(linkid, title, linkurl)            self.allLinks.append(linkNode)    def process(self):        self.getAllDedeLinks()if __name__=="__main__":    dlinks = DedeLinks()    dlinks.process()    for linkNode in dlinks.allLinks:        print linkNode

其他模块可以访问该模块,采用dlinks.allLinks来访问所有的链接,其中的每个列表元素均包括链接ID、链接标题和链接URL。

转载请注明来源:织梦dede迁移读取织梦mysql生成所有文章链接

[织梦DEDE迁移]读取织梦MySQL生成所有文章链接

相关文章:

你感兴趣的文章:

标签云: