如何在Dedecms中解决使用[field:arcurl/]无法获取文章路径的问题?

avatar
作者
筋斗云
阅读量:0
可以尝试使用以下代码来获取文章路径:,,``php,$arcurl = $this>Fields['arcurl'] ? $this>Fields['arcurl'] : 'default_path';,``

利用[field:arcurl/]获取文章路径的解决方法

在织梦CMS(DedeCMS)中,使用[field:arcurl/]标签无法直接获取文章的静态地址,这是因为arcurl并不是一个物理表,SQL标签无法直接通过arcurl获取文章的静态地址,为了解决这个问题,可以采用以下几种方法:

方法一:使用id获取文章路径

如何在Dedecms中解决使用[field:arcurl/]无法获取文章路径的问题?

1、代码示例

 {dede:sql sql='Select * from dede_shop where id=6 limit 26'} <a href='[field:id runphp='yes']$id=@me;@me='';$url=GetOneArchive($id);@me=$url['arcurl'];[/field:id]' target="_blank">[field:title function='cn_substr(@me,20)'/]</a> {/dede:sql}

2、解释

使用[field:id runphp='yes']来获取当前文章的ID。

调用PHP函数GetOneArchive($id)获取文章信息,并将arcurl赋值给@me

最后输出文章的标题和静态地址。

方法二:使用aid获取文章路径

1、代码示例

 {dede:sql sql='Select * from dede_shop where aid=6 limit 26'} <a href='[field:aid runphp='yes']$id=@me;@me='';$url=GetOneArchive($id);@me=$url['arcurl'];[/field:aid]' target="_blank">[field:title function='cn_substr(@me,20)'/]</a> {/dede:sql}

2、解释

使用[field:aid runphp='yes']来获取当前文章的aid。

调用PHP函数GetOneArchive($id)获取文章信息,并将arcurl赋值给@me

最后输出文章的标题和静态地址。

方法三:结合SQL语句和PHP代码

1、代码示例

 {dede:sql sql='SELECT * FROM dede_archives limit 10'} <li> <a href='[field:id runphp='yes'] $id=@me;@me='';$url=GetOneArchive($id);@me=$url['arcurl'];[/field:id]' title="[field:title/]" target="_blank">[field:title function='cn_substr(@me,30,0)/']</a> </li> {/dede:sql}

2、解释

使用SQL语句从dede_archives表中选取数据。

通过[field:id runphp='yes']获取每篇文章的ID。

调用PHP函数GetOneArchive($id)获取文章信息,并将arcurl赋值给@me

最后输出文章的标题和静态地址。

方法四:使用系统标签调用文章内容

1、代码示例

 {dede:arclist typeid='1' row='10'}     <a href='[field:arcurl/]' target="_blank">[field:title function='cn_substr(@me,20)'/]</a> {/dede:arclist}

2、解释

使用系统标签dede:arclist调用文章内容。

typeid指定栏目ID,row指定显示的文章数量。

直接输出文章的标题和静态地址。

方法五:使用自定义标签

1、代码示例

 {dede:mytag name='mytag' id='123'}     <a href='[field:arcurl/]' target="_blank">[field:title function='cn_substr(@me,20)'/]</a> {/dede:mytag}

2、解释

使用自定义标签dede:mytag,其中name为标签名称,id为文章ID。

直接输出文章的标题和静态地址。

常见问题FAQs

1、问:为什么[field:arcurl/]无法获取文章路径?

答:因为arcurl不是一个物理表,SQL标签无法直接通过arcurl获取文章的静态地址,需要通过ID或aid来间接获取。

2、问:如果ID无效怎么办?

答:如果ID无效,可以尝试使用aid来获取文章路径,确保ID或aid是有效的。

3、问:如何在列表页调用多篇文章的路径?

答:可以使用系统标签如dede:arclist或者结合SQL语句和PHP代码来实现,确保在循环中正确获取每篇文章的ID或aid。

4、问:如何优化文章路径的显示效果?

答:可以使用函数如cn_substr长度,或者添加CSS样式来美化链接,根据具体需求调整代码。

通过以上方法和示例代码,可以有效解决在织梦CMS中使用[field:arcurl/]获取文章路径的问题,根据具体情况选择合适的方法,确保代码能够正确运行并达到预期效果。


Dedecms 利用[field:arcurl/] 无法获取文章路径的解决方法

问题

在 Dedecms 中,使用[field:arcurl/] 标签来获取文章的URL时,可能会遇到无法获取到正确路径的情况,这通常是由于文章URL的生成规则设置不正确或者网站配置问题导致的。

解决步骤

1、检查文章URL规则设置

进入 Dedecms 管理后台,找到“系统设置”。

在“系统设置”中,找到“URL规则设置”。

确保文章的URL规则设置为“自定义规则”或者“Rewrite规则”。

如果使用自定义规则,检查是否正确设置了文章的URL格式。

2、检查Rewrite规则

如果使用的是Rewrite规则,确保Rewrite规则配置正确。

修改.htaccess 文件,添加或修改Rewrite规则,确保可以正确解析文章路径。

3、检查文章属性

进入文章管理后台,查看文章的属性设置。

确保文章的“自定义链接”或“链接地址”字段填写正确。

4、检查服务器配置

确保服务器支持URL重写功能,如Apache的mod_rewrite模块已启用。

检查服务器配置文件,确保没有冲突的Rewrite规则。

5、更新缓存

清除Dedecms的缓存,有时缓存可能会影响URL的生成。

6、检查PHP设置

确保PHP的allow_url_fopen设置允许URL打开,这可能会影响URL生成。

示例代码

以下是一个简单的Rewrite规则示例,用于Apache服务器:

 RewriteEngine On RewriteRule ^articles/([azAZ09]+)$ /plus/view.php?aid=$1 [L]

这个规则会将/articles/articlename 的URL重写为/plus/view.php?aid=articlename

通过以上步骤,可以解决 Dedecms 中使用[field:arcurl/] 无法获取文章路径的问题,如果问题依然存在,可能需要进一步检查网站的配置文件或者联系技术支持。

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!