微信小程序显示cms里的html文章

最近领导让我研究一下微信小程序,将cms里的文章显示到微信小程序里。本以为是个简单的功能,但看了微信的开发文档之后才发现小程序不能解析html文档,也不支持跳转到web页面。微信小程序我就不多介绍了官方文档和网上的讨论很多,在这里贴一下我实现小程序显示cms文章的方法。

由于小程序不支持html解析,所以我们只能修改cms的文章模版,将文章内容转化为json数据输出,然后再在小程序里用js解析json并做出相应显示。

小程序不支持a标签,在小程序中也不适宜带入花哨的样式,所以我修改cms模版,将html中的样式和a标签都去掉,只留下文字,换行和图片数据,在小程序中将分段文字和图片显示为<view>和<image>


首先在cms模版中将html文章转化为json数据,识别图片,文本和换行,过滤掉样式和标签。这里是用php的正则表达式函数来实现的,$content是cms里的html文章。

<?php
$_arr = preg_split('/(<img.*?>)/i', $content, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
$_r = array();
foreach($_arr as $_txt) {
	if(substr($_txt, 0, 4) == '<img') {
		$_matchs = array();
		preg_match('/<img.*?src="(.*?)"/i', $_txt, $_matchs);
		$_txt = $_matchs[1];
		if(preg_match('/^\//', $_txt)) $_txt = $gupload.$_txt;
		$_r[]= array('type'=>'img', 'data'=>$_txt);
	}else {
		$_txt = preg_replace('/&.*?;/', ' ', $_txt);
		$_txt = preg_replace('/\s+/', ' ', $_txt);
		$_txt = preg_replace(array('/<br.*?>/i', '/<p.*?>/i', '/<li.*?>/i', '/<div.*?>/i', '/<tr.*?>/i', '/<th.*?>/i'),
						"\n", $_txt);
		$_txt = preg_replace('/<.*?>/', '', $_txt);
		$_r[]= array('type'=>'txt', 'data'=>$_txt);
	}
}
$_data = array('title'=> $title, 'info'=> $inputtime, 'content'=> $_r);
echo json_encode($_data);
?>


小程序显示文章时请求cms生成的json数据,并通过循环和模版将文章内容显示出来。{{content}}是cms模版输出的json数据,是一条条段落或图片数据组成的数组。

<template name="img">
	<view>
<image class="content-img" mode="aspectFit" src="{{item.data}}"></image>
	</view>
</template>
<template name="txt">
	<view>
		<text>{{item.data}}</text>
	</view>
</template>
		
<view class="content">
	<block wx:for="{{content}}">
		<template is="{{item.type}}" data="{{item}}"/>
	</block>
</view>



  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
技术选型1,前端微信小程序原生框架cssJavaScript2,管理后台云开发Cms内容管理系统web网页3,数据后台小程序云开发云函数云数据库云存储 1,小程序端1-1,首页首页有以下几个功能点点餐菜单浏览排号等位拨打电话顶部轮播图搜索菜品这点餐分两种1,可以设置直接点餐直接点餐:适合小型饭店,或者奶茶类的快餐店。直接就可以下单,不用识别桌号2,也可设置扫码点餐扫码点餐适合中大型饭店,可以区分桌号,方便管理我后面会教大家如何生成桌号二维码,只需要把对应桌号的二维码贴在餐桌上,用户点击 扫码点餐 识别二维码,即可获取到桌号信息。1-2,菜品浏览页菜品浏览分两种1,不带分类适合菜品少的时候2,带分类菜品多的时候,带分类更方便客户选择不带分类 带分类 1-3,搜索功能我们这搜索有两个触发方式1,直接点击搜索图标2,点击键盘上的搜索键1-4,搜索结果,支持模糊查询如我这只搜‘鱼’,那么菜品中所有包含鱼的都可以搜索到 1-5,购物车首先菜品列表页可以直接添加商品到购物车购物车弹起后可以做如下操作1,增删单个菜品2,清空购物车3,删除菜品这些操作都和菜品列表是联动的,也就是菜品列表和购物车增删个数,都是可以同步的。我会在项目预览章节的视频做具体演示。1-6,下单页下单页就是确认订单后进行下单支付的。有以下功能1,点餐明细2,价格计算3,桌号地址4,就餐人数5,添加备注6,点击下单1-7,支付页支付页分两种方式1,模拟支付适合前期学习,毕业设计等演示类的场景。2,真实微信支付适合商用,但是使用微信支付必须要有营业执照,所以前期如果只是学习的话,建议使用模拟支付。 1-8,我的订单页我的订单页分以下几个状态1,新下单待上餐2,已上餐待评价3,订单完成4,订单取消1-9,提交评论页我们可以对店家进行评论。 1-10,评价列表页可以查看所有评价和自己的评价 1-11,排号等位可以看出,我们可以选择就餐人数,排大桌或者小桌。我这已排小桌为例通过上图可以看出1,当前排号情况2,我的排号3,可以重新排号4,到号时会有到号提示后面我会把订阅消息功能加进来,这样到号后会有订阅消息提示。 1-12,个人中心个人中心分登录和未登录两种状态未登录已登录 1-13,微信授权登录小程序 2,后厨端和排号管理端2-1,后厨端主要供后厨的厨师使用1,可以查看当前新下单2,完成后可以操作菜品完成3,可以监听用户新下单4,有新订单时会有语音提示5,厨师登录页语音提示我会在视频课具体演示厨师登录页 厨师管理页可以查看待制作订单用户新下单后,会有语音提示 2-2,排号管理页同样也有登录页,和上面厨师登录一样,这重点看下排号管理页管理员可以查看当前排号情况,可以叫号。3,cms管理后台我们这的可视化网页后台使用的时云开发自带的cms(内容管理)3-1,登录页 3-2,管理后台我们可以在这 1,添加轮播图,删除轮播图,修改轮播图2,添加菜品,删除菜品,修改菜品,上架下架菜品3,管理订单4,查看评价5,管理后厨和排号管理员6,查看排号数据  比如我查询某个用户的所有订单 查询所有新下单还未上菜的订单 还有更多的功能,我会在视频课给大家用视频来演示,这样更直观。 4,数据库数据库我们这用云开发自带的云数据库餐厅管理员查看趋势图

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值