php,$arcurl = $this>Fields['arcurl'] ? $this>Fields['arcurl'] : 'default_path';,
``利用[field:arcurl/]获取文章路径的解决方法
在织梦CMS(DedeCMS)中,使用[field:arcurl/]标签无法直接获取文章的静态地址,这是因为arcurl并不是一个物理表,SQL标签无法直接通过arcurl获取文章的静态地址,为了解决这个问题,可以采用以下几种方法:
方法一:使用id获取文章路径
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/]
无法获取文章路径的问题,如果问题依然存在,可能需要进一步检查网站的配置文件或者联系技术支持。