教程:dedecms织梦TAG标签调用代码
优采云 发布时间: 2022-11-17 02:51教程:dedecms织梦TAG标签调用代码
标签标签
是一种自己定义的关键词,比分类更准确、更具体,可以概括文章主要内容,合理使用TAG标签,可以让你发表的文章更容易检索。
很多网站首页、列表页和文章页都用超链接调用TAG关键词,有利于蜘蛛搜索和抓取,也有利于用户点击,那么如何在织梦dedecms系统的网站上实现此功能呢?对此,做网站吧,整理出以下方法供大家使用:
1、TaT ?B 6g 标签 o V % 的语法解释
基本语法:
{dede:tag row='30' sort='new' getall='0′}
c B 8 r///a/dedejq/[field:link/]'>[field:tag /]
{/dede:tag}
参数说明:
row=K z 9 W k \ B * x '30' 呼叫号码为 30
sort='new' 排序 月, 兰特, 周
getall='0' 获取当前内容页面 TAG 标记的类型 0,以及获取所有 TAG 标记的类型 1。
基础模板字段:链接、标记
2. 最新的标签标签称为
{dede:tag row='30' sort='new'}[字段:突出显示/]
([字段:结果/])
{/dede:tag}
3.调用本月热门标签标签
{dede:tag row='30' sort='month'}I d s d stp:///a/dedejq/[field:link/]'>[field:
tagname/]([field:result/])
{/dede:tag}
4. 随机标签调用
{deu } ^de:tag row='60' sort='rand'}
$ J | m W 5 F /a/dedejq/[field:link/]'>[field:highlight/]([field:result/])
{/dede:tag}
5. 采集热 [# W 0 V N L n – 门标签,转换后刷新
模板代码:
{dede:tag row='10' sort='month' }
, E y u mom/a/dedejq/[field:link/]'>[field:tagname/] &o : T # hlt;/a>
{/dede:tag}
^ e 8 {t language=“JavaScript”>
偏移量){
tag_a.className=“tag”+(rnd-offsc y 2 4et);
}
}
}/
/–>
CSS代码:
.tag1 { color:h Z j j m G i + X#339900; font-weight:bold; }
.tag2 { color:#e65730; }
.tag3 { color:#00b9da; }
.tag4 { color:#FG 2 4 C +E3981; 7 5 ) T [ Jfont-weighW Z P 7 } G &t:bold; font-size:14px; }
6. 在页面文章调用标签标签
{J w % = S y p 8 gdede:tag table='dede_search_keywords' sort='keyword' row='2′ ifd O b y F=“}
\ L \dedejq/[field:link/]' target=_i 7 * # _blank>[field:tag /]
{/dede:tag}
或
{dede:fie# n : 2 [ r XLD name='Keywords' runphp='yes' }
if(!empty(@me)){
$kws = 爆炸(' ',@me);
@me = “”;
foreach($kws as $k){
@me .= “O / x 4 # '/tag.php?/$k/'>$k ”;
}
@me= str_repla' $ F 0 }ce('+', ' ',trim(@me));
}
{/dede:field}
7. 列表页调用 TAG 标签的两个 b # k F w D 方法
dedecms列表中的默认值无法调用 tag\q v C; _ X 标签。Do 网站 G * { r p i, 7 n 为您提供以下不同版本的标签标签调用 T D G A p A are you 方法:
(1)、de, w \decms 5.7 调用方法
首先,找到 include\helpers\archive.helper.php 文件(注:有些朋友会有疑问,首页和频道,列表应该添加不同的调用,但我开始用列表页面测试,成功;添加 m \ b v q r 首页后,测试也进入了 D Y G R U Y T + D 功能显示,所以我没有继续深入研究,另外,这个文件的内容发生了变化,在后台文件是无法更改的,提示 _&0 7 是注入 sql,所以要在 ftp 中找到这个文件来更改 0。)
在底部添加:
函数; f G GetTags_list($aid)
{
全球$dsql;
$tags = “;
$query = “从'ma_taglisi v \ at'中选择标签,其中aid='$aid'”;
~ w T $dsql->Execute('tag',$query);
0 I 5 + 2 y a s whil' j % s ~ we($row = $dsql->GetArray('tag'))
{
$tags .= ($tags==“ ?“9 R.Q e #<^ ) \ n 6;a hreb E H f Q uf='“.urlencode($row['tag']).”' &gl f _t;Y ] R 5 L t # = G“.$row['tag'].”“ : ','.”O % V x b ^ .i P /tags.php?/“.urlencode($row['tag']).”' >“.$row['tag'].”“);
}
返回 $tau P % @ rgs;
}
那么Q I S + v b H k,加上:,这里列表需要调用标签标签
[字段:id 函数=GetTags_list(@me)/]
以完成。
(2)、dedecms 5K T y W + C g j.6 版本 G \ G Y # |G本的调用方法
方法一:
只需在模板需要的地方添加以下代码:
[字段:ID runphp=yes]
$tsql = new DedeSql(false);
$tags = “B F e –;
$tsql->SetQuery(“选择 i.tag 从 dede_taglist t 左连接 dede_tagindex i on i.id=t.tid 其中 t.an / ;E Zid='@me'“);
$tsql-e ) ;>ExG V q @ecute('t');
while($row = $tsql->GetArray('t',MYSQL_ASSOC)){
$tags .= “”.$row['tag'].“ &k u blt;/a>”;
}
@me=$tags;
[/字段:id]
注意:此步骤无法在 dede 5.7 中实现。
方法2:
打开 dedecms根目录 T k Y ~include/common.func.php,在底部的 “!k ?A b O?>“在以下代码之前:
让我们做网站:列表页调用标签的方法
函数列表标签($aid)
{
$tsql = new DedeSql(false);
$tags = “;{ ( n : u X ' , m
$tsql->SetQuery(“Select i.tag FrM .o 9 Oom dt 7 ;2 j ] ^ede_taglist t left join dede_tagindex i on i.id=t.tid where t.aid='$aid'“);
$tsql->执行('t');
whi– x W s e – ale($row = $tsql->GetArray('t',MYSQL_ASSOC)){7 C \ j
$tags .= “D ( & 6lencode($row['tag']).” /'>“.$rowj 0 Y ? x v z o J['tag'].”";
}% W ?z F |_ = i
雷图]U Y骨灰盒$tags;
}
{@ ? n i 2 0 , 5 4dede:field.id runphp=yes}
$tsql = new DedeSql(false);
$tags = “;
$tsql->SetQuery(“Select i.tag From ded\ } q |e_taglist t left join dede_tak f 4gindex i on i.id=t.tid where t.aid='@me'”);
$' 1 ~tsql->Execute('t');
while($row = $tsql->GetArray('t',MYSQL_ASSOC)){
$tags .= “e D Hhp?/”.urlencode($row['tag']).“' >”.$row['tag'].“”;
}
@me=$# A F ytags;
{/dede:field.id}
添加代码 6 j't*$x 后,可以使用列表页:
{m s s C $dede:field.id function=“listtag(@me)”/}
以调用标签标签。
方法三:
inc_functions.php 添加 :
函数列表标记($aid){
$tsql = new DedeSql(p ' w x 8 Q 3 s tfalse);
$tags = “;
$tsql->SetQuery(“Select i.tagname From xkzzz_tag_list t left join xkzzz_tu 4 t \ 0 { x gag_index i on i.id=t.tid where t.aid='$aid'”);
$tsql->执行('t');
while($row = $tsql->Getj [ x &Array('t'{ N f M K v S,MYSQL_AO r _ 0 |SSOC)){
$tags .= “s 1 j { ~ + !/tag.php?/”.urlencodeE # 6 [ z H 0 V Y($row['tagname']).“' >”.$rowu F G y A ,['tagname'].“”;
}
+ _ c j c 6 d 返回$tags;
}
然后添加 :,其中列表页位于
[字段:ID 函数=“列表标记(@me)”/]
可以调出来,但是这个方法也需要更改程序文件,看不懂代码的朋友,慎用吧!
8. 首页调用该方法文章 Tg j LAG 标签
如果您网站使用 dedecms v5.7 可以使用以下标签:
径直
[field:id function=GetTags(@me)/]
可以调出,但不能调出g Y # k x s T O \没有连接,为了添加标签标签的链接,还需要做到以下几点:
首先,注 4 + z { # 。E % 删除 130 行收录/帮助程序/存档.helper.php 文件
$tags .= ($tags==“ ? $row['标签'] : ','.$row['标签']);
用以下?!C 语句替换,当然是 J { |R 您还可以添加自己的样式:
$tags .= “_ % k a !php?/”.urlencode($row['tag']).“ /'>”.$row['tag'].”";
添加 # z ; ! p t ] o 下一代 { 0 H R i 代码:
if ( ! function_exists(7 h * Y 0 r Q'GetTagk')){
函数 GetTagk($aid)
{@ / ! ; * K { i
全球$dsql;
$tagk = “;
$query = “选择标签,从'ma_taglist'中辅助,其中aid='$aid'”;
$dsql->Execute('tagD v ^ n b',$query);
while($row = $dsql->GetArray('tag'))
{
$tagk .= ($t\ Z * & \ } 3agk==“n 1 i ? $row['tag'] : ','.$row['tag']);
}
返回 $ta 2 V )O { mgk;
}
}
然后,打开 dede/a( h m^ Jrticle_edit.php 找到:
$tags = Gf I j DetTags($aid);
添加以下内容:
$t( H e ~ M T 8 | *agk = GetTagk($o Q D Jaid);
打开 dede/tempj x z t F n h mlets/article_edit.htm 再次调用标签标签
学习笔记:学python,怎么能不学习scrapy呢
本文分享自华为云社区《学python怎么能不学scrapy?本博客带你学起来-云社区-华为云》,作者:橡皮擦。
在正式写爬虫案例之前,我们先系统地了解一下scrapy。
scrapy安装和简单操作
使用命令pip install scrapy进行安装。安装成功后,需要采集几个网址,方便后续学习使用。
安装完成后,直接在控制台输入scrapy,出现如下命令即表示安装成功。
> scrapy
Scrapy 2.5.0 - no active project
Usage:
scrapy [options] [args]
Available commands:
上图是scrapy内置命令列表,标准格式的scrapy,可以通过scrapy -h查看指定命令的帮助手册。
scrapy中有两种命令,一种是全局的,一种是项目中的。后者需要进入scrapy目录才能运行。
这些命令一开始不需要完全记住,随时可以查看。还有几个比较常用的,例如:
**scrpy 启动项目**
该命令首先根据项目名称创建一个文件夹,然后在该文件夹下创建一个scrpy项目。这一步是所有后续代码的起点。
> scrapy startproject my_scrapy
> New Scrapy project 'my_scrapy', using template directory 'e:\pythonproject\venv\lib\site-packages\scrapy\templates\project', created in: # 一个新的 scrapy 项目被创建了,使用的模板是 XXX,创建的位置是 XXX
E:\pythonProject\滚雪球学Python第4轮\my_scrapy
You can start your first spider with: # 开启你的第一个爬虫程序
cd my_scrapy # 进入文件夹
scrapy genspider example example.com # 使用项目命令创建爬虫文件
以上内容添加了一些评论,可以对照学习。默认生成的文件位于 python 运行时目录中。如果要修改项目目录,请使用如下格式化命令:
scrapy startproject myproject [project_dir]
例如
scrapy startproject myproject d:/d1
命令基于模板创建的项目结构如下,其中红色下划线为项目目录,绿色下划线为scrapy项目。如果要运行项目命令,首先要进入项目目录下红色下划线的my_scrapy文件夹。控制项目。
下面生成爬虫文件
使用命令scrapy genspider [-t template]生成爬虫文件。该方法是快捷操作,也可以手动创建。创建的爬虫文件会出现在当前目录或项目文件夹下的spiders文件夹中,name为爬虫名称,domain用于爬虫文件中allowed_domains和start_urls数据,[-t template]表示可以选择生成文件模板。
要查看所有模板,请使用以下命令,默认模板是 basic。
> scrapy genspider -l
basic
crawl
csvfeed
xmlfeed
创建第一个scrapy爬虫文件,测试命令如下:
>scrapy genspider pm imspm.com
Created spider 'pm' using template 'basic' in module:
my_project.spiders.pm
这时在spiders文件夹中,出现了pm.py文件,文件内容如下:
import scrapy
class PmSpider(scrapy.Spider):
name = 'pm'
allowed_domains = ['imspm.com']
start_urls = ['http://imspm.com/']
def parse(self, response):
pass
测试 scrapy 爬虫运行
使用命令scrapy crawl,spider是上面生成的爬虫文件名,如果出现如下内容,说明爬虫加载正确。
>scrapy crawl pm
2021-10-02 21:34:34 [scrapy.utils.log] INFO: Scrapy 2.5.0 started (bot: my_project)
[...]
scrapy的基本应用
scrapy 的工作流程非常简单:
采集首页源码;分析首页源码,获取下一页链接;请求下一页的源代码;解析源码,获取下一页的源码;[…] 过程中,提取到目标数据后,保存。
下面给大家展示一个scrapy的完整案例应用,作为爬虫120案例scrapy部分的第一个例子。
> scrapy startproject my_project 爬虫
> cd 爬虫
<p>
> scrapy genspider pm imspm.com</p>
得到项目结构如下:
对上图中部分文件的简要说明。
使用scrapy crawl pm运行爬虫后,所有的输出和描述如下:
上面代码的请求次数是7次,因为pm.py文件中默认没有添加www。如果添加此内容,则请求数变为 4。
当前pm.py文件代码如下:
import scrapy
class PmSpider(scrapy.Spider):
name = 'pm'
allowed_domains = ['www.imspm.com']
start_urls = ['http://www.imspm.com/']
def parse(self, response):
print(response.text)
其中的parse是指请求start_urls中的地址,得到response后的回调函数,通过参数response的.text属性直接输出网页源码。
获取到源码后,需要对源码进行解析存储
在存储之前,需要手动定义一个数据结构,在items.py文件中实现,修改代码中的类名,MyProjectItem → ArticleItem。
import scrapy
class ArticleItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
title = scrapy.Field() # 文章标题
url = scrapy.Field() # 文章地址
author = scrapy.Field() # 作者
修改pm.py文件中的parse函数,增加网页解析相关操作。这个操作类似于pyquery的知识点,直接观察代码就可以掌握。
def parse(self, response):
# print(response.text)
list_item = response.css('.list-item-default')
# print(list_item)
for item in list_item:
title = item.css('.title::text').extract_first() # 直接获取文本
url = item.css('.a_block::attr(href)').extract_first() # 获取属性值
author = item.css('.author::text').extract_first() # 直接获取文本
print(title, url, author)
response.css 方法返回一个选择器列表,可以对其进行迭代,然后对其中的对象调用 css 方法。
在pm.py中导入items.py中的ArticleItem类,然后按照如下代码修改:
def parse(self, response):
# print(response.text)
list_item = response.css('.list-item-default')
# print(list_item)
for i in list_item:
item = ArticleItem()
title = i.css('.title::text').extract_first() # 直接获取文本
url = i.css('.a_block::attr(href)').extract_first() # 获取属性值
author = i.css('.author::text').extract_first() # 直接获取文本
# print(title, url, author)
# 对 item 进行赋值
item['title'] = title
item['url'] = url
<p>
item['author'] = author
yield item</p>
这时候scrapy爬虫运行时,会出现如下提示信息。
至此一个单页爬虫就完成了
接下来再次修改parse函数,解析完第一页后,再解析第二页的数据。
def parse(self, response):
# print(response.text)
list_item = response.css('.list-item-default')
# print(list_item)
for i in list_item:
item = ArticleItem()
title = i.css('.title::text').extract_first() # 直接获取文本
url = i.css('.a_block::attr(href)').extract_first() # 获取属性值
author = i.css('.author::text').extract_first() # 直接获取文本
# print(title, url, author)
# 对 item 进行赋值
item['title'] = title
item['url'] = url
item['author'] = author
yield item
next = response.css('.nav a:nth-last-child(2)::attr(href)').extract_first() # 获取下一页链接
# print(next)
# 再次生成一个请求
yield scrapy.Request(url=next, callback=self.parse)
上面代码中,变量next代表下一页的地址,通过response.css函数获取链接。请重点学习css选择器。
产量下降。request(url=next, callback=self.parse)表示重新创建一个请求,请求的回调函数是parse自身,代码运行效果如下。
如果要保存运行结果,只需运行以下命令即可。
scrapy crawl pm -o pm.json
如果要将每条数据存储为单独的一行,请使用以下命令 scrapy crawl pm -o pm.jl 。
生成的文件还支持csv、xml、marchal、pickle,大家可以自己试试。
让我们使用数据管道
打开pipelines.py文件,修改类名MyProjectPipeline→TitlePipeline,然后编译如下代码:
class TitlePipeline:
def process_item(self, item, spider): # 移除标题中的空格
if item["title"]:
item["title"] = item["title"].strip()
return item
else:
return DropItem("异常数据")
此代码用于去除标题中的左右空格。
写入后需要在settings.py文件中开启ITEM_PIPELINES配置。
ITEM_PIPELINES = {
'my_project.pipelines.TitlePipeline': 300,
}
300是PIPELINES操作的优先顺序,可以根据需要修改。再次运行爬虫代码,你会发现标题的左右空格已经被去掉了。
至此,一个scrapy的基础爬虫就写好了。
戳下方关注,第一时间了解华为云的新鲜技术~
华为云博客_大数据博客_人工智能博客_云计算博客_开发者中心-华为云