下面是详细讲解。
1. 准备工作
首先,你需要准备好以下的工具:
- 微信公众平台账号
- ThinkPHP项目
- jssdk扩展包(可使用官方提供的扩展包)
2. 创建自定义分享函数
在项目中创建一个自定义的分享函数,用来设置微信分享的标题、描述和链接等信息。可以创建一个公共控制器 BaseController,例如:
namespace app\common\controller;
use think\Controller;
class BaseController extends Controller
{
/**
* 自定义设置微信分享的标题和描述
* @param string $title 分享标题
* @param string $desc 分享描述
* @param string $link 分享链接
* @param string $imgUrl 分享图片链接
*/
protected function setShare($title, $desc, $link, $imgUrl)
{
$this->assign('wxTitle', $title);
$this->assign('wxDesc', $desc);
$this->assign('wxLink', $link);
$this->assign('wxImgUrl', $imgUrl);
}
}
上述示例中,我们通过 setShare 函数,将分享的四个参数(标题、描述、链接和图片链接)设置到了基类控制器中。
3. 在视图文件中使用
在需要分享的视图文件中,调用 BaseController 中的 setShare 函数来设置分享属性。在视图文件尾部添加如下代码:
<script>
wx.ready(function () {
wx.onMenuShareAppMessage({
title: '{:$wxTitle|default=$site_title}',
desc: '{:$wxDesc}',
link: '{:$wxLink}',
imgUrl: '{:$wxImgUrl}'
});
});
</script>
其中,{$wxTitle}、{$wxDesc}、{$wxLink} 和 {$wxImgUrl} 均为在 BaseController 中设置过的分享属性,也可自己定义。
4. 示例
以下举两个示例。
示例 1
假设要在文章内容页中设置微信分享属性。在 Article 控制器的 detail 操作中,通过获取文章信息,调用 setShare 函数设置分享属性。示例代码如下:
namespace app\index\controller;
use app\common\controller\BaseController;
use app\common\model\Article as ArticleModel;
class Article extends BaseController
{
/**
* 文章内容页
*/
public function detail($id)
{
// 获取文章信息
$article = ArticleModel::get($id);
if(!$article) {
abort(404, '文章不存在');
}
// 设置微信分享属性
$wxTitle = $article->title;
$wxDesc = $article->summary;
$wxLink = url('index/article/detail', array('id' => $id), true, config('is_https'));
$wxImgUrl = $article->cover_image;
$this->setShare($wxTitle, $wxDesc, $wxLink, $wxImgUrl);
$this->assign('article', $article);
return $this->fetch();
}
}
在对应的 detail.html 视图页面中,引入 jssdk 扩展包并设置分享属性。示例代码如下:
{include file="public/jssdk" /}
{extend name="public/base" /}
{block name="title"}{$article.title}{/block}
{block name="content"}
<div class="article-content">
<h1>{$article.title}</h1>
<div class="article-body">
{$article.content}
</div>
</div>
<script>
wx.ready(function () {
wx.onMenuShareAppMessage({
title: '{:$wxTitle|default=$site_title}',
desc: '{:$wxDesc}',
link: '{:$wxLink}',
imgUrl: '{:$wxImgUrl}'
});
});
</script>
{/block}
示例 2
假设要在首页中设置微信分享属性。在 Index 控制器的 index 操作中,直接调用 setShare 函数设置分享属性。示例代码如下:
namespace app\index\controller;
use app\common\controller\BaseController;
class Index extends BaseController
{
/**
* 首页
*/
public function index()
{
// 设置微信分享属性
$wxTitle = '网站首页';
$wxDesc = '欢迎访问我的网站';
$wxLink = url('index', '', true, config('is_https'));
$wxImgUrl = config('site_url') . 'static/images/logo.png';
$this->setShare($wxTitle, $wxDesc, $wxLink, $wxImgUrl);
return $this->fetch();
}
}
在对应的 index.html 视图页面中,引入 jssdk 扩展包并设置分享属性。示例代码如下:
{include file="public/jssdk" /}
{extend name="public/base" /}
{block name="title"}网站首页{/block}
{block name="content"}
<h1>欢迎访问我的网站</h1>
<script>
wx.ready(function () {
wx.onMenuShareAppMessage({
title: '{:$wxTitle|default=$site_title}',
desc: '{:$wxDesc}',
link: '{:$wxLink}',
imgUrl: '{:$wxImgUrl}'
});
});
</script>
{/block}
总结
通过以上的示例,你可以自定义设置微信分享的标题、描述、链接和图片链接。在需要分享的页面中,调用 setShare 函数设置分享属性,将分享属性绑定到对应的视图文件中,即可实现微信分享功能。
祝你好运!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:thinkphp项目如何自定义微信分享描述内容 - Python技术站