• 2173阅读
  • 30回复

2016年4月30日:终于调试成功活动聚焦插件! [复制链接] [手机版]

上一主题 下一主题
离线为你守候
温馨家园,为你守候!

只看楼主 倒序阅读 使用道具 绿 楼主  发表于: 2016-04-30 23:59:35 星期六
莘祺网活动聚焦访问地址目前为测试数据 20170206开始正式更新)

经过两个星期的努力,活动聚焦终于调试成功!真的太不容易啦!

起初的前后台页面修改,虽然也付出了很多时间,但难度相对来说还不是太大,最大的问题是活动存档,存在着根本上的逻辑问题。

发布活动时存储一个大意是活动月值的数据(start_month),
  1. $start_month = PwStrtoTime(get_date(PwStrtoTime($start_time),"Y-m"));

从代码上看,这个活动月值由活动开始时间(start_time)转换而来,但事实上却不完全是这样!经过几天的研究,计算,发现这个所谓的月值其实就是发布的活动开始时间对应月的“今天”(发布日期)零点的时间戳!!!举例说,今天发布活动,不管是5月5号开始的,还是5月15号开始的,总之不管5月的哪一天,这个所谓的月值其实都一样,就是今天5月1日零点的时间戳;不管是6月哪一天的活动,对应月值都是6月1日零点的时间戳。

而活动存档的查询同样是这样的,查询条件其实是存档对应月(本月5月,6月,7月,4月,3月,等)的"今天"零点的时间戳!!!查询条件其实每天都是变化的,所以昨天发布的活动昨天可以查询出来,但到了今天就查不出来了,除非是将来某月的“昨天”。

综合来看,月值和查询条件都可能分别有31种(1到31号,当然了也有28,29,30),唯一能对得上的存档查询结果其实是:当天对应的某月那天发布的活动!(例外是查询当天编辑了某个或某几个活动)。

这是不是逻辑有问题?开始测试不久就发现了存档存在问题,但知道逻辑有问题是差不多在努力了十天之后。然而,知道了问题所在,却并不代表我能解决,因为对这些,我基本上也是没有任何基础。

现在这个活动聚焦是以频道的方式展示的(应该也有插件版本的),之前有个早期版本是以插件形式展示的,简单测试过,因为是早期版本,所以前后台的页面显示不是特别丰富,但似乎活动存档是正常的。于是,最近几天把主要精力用在了研究早期版本的活动存档上,希望能从中挖掘出来解决问题的方法。

4月29日晚研究到凌晨一点多,而30号早上是四点半多起来的,也就是说前天晚上睡了还不到四个小时。事实上这个活动存档也确实花了我最近相当一部分精力,试了各种各样我所能想到的方法,包括网上搜索查询到的方法,无奈咱技术不过关,一直没有突破。活动月值、开始和结束时间都是以时间戳的形式保存的,早期版本只有开始和结束时间,它们是以2016/05/03 12:34的形式直接保存的,所以关键的第一步就是要把月值数据也改成这种形式的,只有有了这个基础,才能继续构建类似的存档查询语句。

格式化开始时间,试了N种方法,也改了N遍代码(其实我自己都不确定对不对),却一直不成功,最后忽然想到数据类型:早期版本是字符类型,而现在却是整数型(我理解是这样),于是修改数据类型为字符型,再把
  1. $begtime = Char_cv($begtime);

复制过来,稍加修改:
  1. $start_month = Char_cv($start_time);

终于成功了!测试活动记录内容为:
不容易啊,终于把月值改成日期格式了
时间:2016/06/10 05:53 — 2016/06/11 05:53
地点:
简介:

活动编辑部分,修改方法也与这个相类似,然后就是修改存档查询条件,同样是参考仿照,最后终于在昨天(30号)6点半之前解决了存档问题!真的是太不容易了!!!

写了这么多,忘了写活动聚焦的访问地址,放在最前面吧。

前期的记录在这里:活动聚焦插件修改
注:帖子内容于5月1日更新。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线为你守候
温馨家园,为你守候!

只看该作者 沙发  发表于: 2016-05-01 09:52:16 星期日  点亮(0)
后台活动列表是按活动开始时间倒序排列的,但列表页活动搜索结果却是按发布活动id正序排列的,所以想修改下也是按开始时间排序,
  1. $query = $db->query("SELECT ea.*,ec.class_name FROM pw_ext_activity ea LEFT JOIN pw_ext_activity_class ec ON ea.classid=ec.class_id WHERE ea.aid > 0 ".$sql.$limit);

改为:
  1. $query = $db->query("SELECT ea.*,ec.class_name FROM pw_ext_activity ea LEFT JOIN pw_ext_activity_class ec ON ea.classid=ec.class_id WHERE ea.aid > 0 ".$sql." ORDER BY ea.start_time DESC $limit");

因为结尾是".$sql.$limit,也就是还有另外的附加查询条件,这样的格式有些特殊,我不太懂(怕把查询条件弄错了,那样就查询不出来了),所以还要好好测试。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线为你守候
温馨家园,为你守候!

只看该作者 板凳  发表于: 2016-05-01 10:17:52 星期日  点亮(0)
后台活动列表页活动搜索的“活动名称”的查询语句为:(就是上面结尾代码中的其中一个条件,共6个,分别对应下面后台截图中的6个查询条件)
  1. $sql .= "AND (ea.title LIKE '%".trim($title)."%' OR ea.address LIKE '%".trim($title)."%' OR ea.description LIKE '%".trim($title)."%')";

从中可以看出,虽然提示文字为“活动名称”,事实上还包括地址和简介,所以此处文字,要稍微修改下。

可能有的地方说得有些迷糊,哈哈,看下后台截图吧。为了保持原来的分辨率,做了拼合处理。


尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线为你守候
温馨家园,为你守候!

只看该作者 地板  发表于: 2016-05-01 15:58:04 星期日  点亮(0)
从代码上看,这个活动月值由活动开始时间(start_time)转换而来,但事实上却不完全是这样!经过几天的研究,计算,发现这个所谓的月值其实就是发布的活动开始时间对应月的“今天”(发布日期)零点的时间戳!!!举例说,今天发布活动,不管是5月5号开始的,还是5月15号开始的,总之不管5月的哪一天,这个所谓的月值其实都一样,就是今天5月1日零点的时间戳;不管是6月哪一天的活动,对应月值都是6月1日零点的时间戳。


上传个解决活动存档问题前的数据表截图(一个半小时前的模拟测试数据。为了测试、纪念、记录,重新安装的插件)。发布时间当然就是今天5月1日了,标题(title)就是活动开始的日期,可以看出只要活动开始月份是一样的,月值(start_month)都是一样的,分别是5月1日和6月1日零点的时间戳,相差2678400,再除以24,除以3600,等于31,正解。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线为你守候
温馨家园,为你守候!

只看该作者 4楼 发表于: 2016-05-01 16:20:46 星期日  点亮(0)
这是早期插件版本的活动聚合后台,似乎有些简陋(对比下2楼的截图),不过后来的版本可能就是在这样的基础上发展起来的。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线为你守候
温馨家园,为你守候!

只看该作者 5楼 发表于: 2016-05-01 17:00:18 星期日  点亮(0)
前后台其它的修改就不多说了,下面说最主要的地方——当然,最最重要的地方是解决活动存档。下面的这个截图是我这次修改使用到的版本,这是最上面的头部。其实它是由两个文件控制的,左侧的导航和搜索,右侧登录、注册及登录后相关用户信息。最初的文件竟然找不到了,也许是被我删除了,起初的右侧没修改前是快捷登录,也就是在活动聚合页如果未登录可以通过快捷登录框登录,不过测试发现这个功能使用不了,经过修改也还是不行,于是改成了现在看到的样子。

左侧还有论坛搜索,这真有些醉了,有谁会在这里搜索吗?况且它左侧的导航也显示不全啊,所以去掉。去掉后空间是有了,不过左侧的导航是定宽的,所以修改它的宽度以显示更多内容。最前面的“全站首页”按说是应该在下面那一长条的地方显示一些东西才对,不过却没有,于是屏蔽其代码,所对应的文件只负责显示全部的论坛主导航,还不错。

尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线为你守候
温馨家园,为你守候!

只看该作者 6楼 发表于: 2016-05-01 17:21:35 星期日  点亮(0)
好了,各个帖子检查完毕,今天关于这个主题的更新也花了不少时间。
关于活动聚合的测试和记录就至此结束吧。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线为你守候
温馨家园,为你守候!

只看该作者 7楼 发表于: 2016-05-01 17:55:35 星期日  点亮(0)
6楼 发表于: 2016-06-06 05:52:21  点亮(0) , 来自:本机地址 , 编辑
月值(字符,20)   `begtime` varchar(20) NOT NULL default '0',
活动发布 $start_month = Char_cv($start_time);

活动编辑 'start_month' => Char_cv($start_time),


尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线为你守候
温馨家园,为你守候!

只看该作者 8楼 发表于: 2016-05-01 17:59:20 星期日  点亮(0)
7楼 发表于: 2016-06-06 06:16:39  点亮(0) , 来自:本机地址 , 编辑
(第一次)错误信息:
Query Error: SELECT * FROM pw_ext_activity WHERE MONTH(start_month)= '7' AND YEAR(start_month)= '2016' ORDER BY end_time DESC ORDER BY start_time DESC LIMIT 0,5

修改后,第二次就成功了!
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线为你守候
温馨家园,为你守候!

只看该作者 9楼 发表于: 2016-05-01 18:00:32 星期日  点亮(0)
板凳  发表于: 2016-04-25 09:43:43  点亮(0) , 来自:本机地址 , 编辑
缓存文件添加开始月行(两处)
插件 admin.php         $actdb[$rt['classid']][$rt['aid']] =  array($rt['start_time'],$rt['end_time'],$rt['start_month']);
频道页 index.php

尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!