文档章节

【HERE地图开发记录(2)】finecms高级版添加Here地图字段类别

SevensChan
 SevensChan
发布于 2015/08/25 18:04
字数 1127
阅读 257
收藏 1

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

由于finecms的自定义字段类别属于系统自带项,需要增加的话就要加代码了,如果是普通的控件增加就相对简单,Here地图的话就略带点坑了,废话不说马上去片!

1.增加finecms字段类别

首先在dayrui/libraries/Field文件夹中增加我们自己的字段类别文件,因为同是地图项目,所以我直接复制Baidumap.php,改名为Heremap.php

打开Heremap.php后,我们可以先看看构造函数

/**
     * 构造函数
     */
    public function __construct() {
		parent::__construct();
		$this->name = IS_ADMIN ? lang('991') : ''; // 字段名称
		$this->fieldtype = array('INT' => 10); // TRUE表全部可用字段类型,自定义格式为 array('可用字段类型名称' => '默认长度', ... )
		$this->defaulttype = 'INT'; // 当用户没有选择字段类型时的缺省值
    }

其中name属性就是在系统中显示的名字,这里读取的是/dayrui/language/*/admin_lang.php 里面的message信息,为了以后finecms升级不冲突,我在这里就设一个偏远山区的下标991为我的名称信息(PS lang函数是CI框架的辅助函数,用以读取已加载的语言文件)

/*============个人开发部分=======*/
$lang['991']	= 'Here地图';

然后看到的是fieldtype,从解释上来看,是没屌用的,姑且认为是保存在系统表里面的字段类型,因为这个case里面没有使用到这个属性,这里就暂不做深究。

然后就可以返回到系统里面看看修改的效果

ok,因为系统是自动加载这个目录下的文件,所以我们也不需要改表就可以看到我们需要的东西了。

然后下面一个函数是option()函数,有注释不难理解就是用来在后台菜单录入时候需要用户去填的参数

/**
	 * 字段相关属性参数
	 *
	 * @param	array	$value	值
	 * @return  string
	 */
	public function option($option) {
	
		$option['city'] = isset($option['city']) ? $option['city'] : '';
		$option['level'] = isset($option['level']) ? $option['level'] : 15;
		$option['width'] = isset($option['width']) ? $option['width'] : 700;
		$option['height'] = isset($option['height']) ? $option['height'] : 430;
		
		return '<tr>
                    <th>'.lang('265').':</th>
                    <td>
                    <input type="text" class="input-text" size="10" name="data[setting][option][width]" value="'.$option['width'].'">
					<div class="onShow">px</div>
                    </td>
                </tr>
				<tr>
                    <th>'.lang('266').':</th>
                    <td>
                    <input type="text" class="input-text" size="10" name="data[setting][option][height]" value="'.$option['height'].'">
					<div class="onShow">px</div>
                    </td>
                </tr>
				<tr>
                    <th>'.lang('267').':</th>
                    <td>
                    <input type="text" class="input-text" size="10" name="data[setting][option][level]" value="'.$option['level'].'">
					<div class="onShow">'.lang('268').'</div>
                    </td>
                </tr>
				<tr>
                    <th>'.lang('269').':</th>
                    <td>
                    <input type="text" class="input-text" size="40" name="data[setting][option][city]" value="'.$option['city'].'">
					<div class="onShow">'.lang('270').'</div>
                    </td>
                </tr>
				';
	}

效果如下:

然后继续往下看,input函数就是显示我们地图的表单输出了,这里finecms使用了art.dialog来装我们的小地图酱,把函数中的调用action改为我们自己的heremap action(将m=baidumap 改为 m=heremap):

art.dialog.open("'.(MEMBER_PATH.'index.php?c=api&m=heremap&width='.$width.'&height='.$height.'&name='.$name.'&level='.$level.'&value='.$value.'&city='.urlencode($city)).'", {
						title: "Heremap",

然后我们去找到这个controller, 具体位置是在/member/controllers/Api.php

找到以后,把baidumap()函数拷贝在下面粘贴一个heremap()函数,将显示的模板改为

$this->template->display('heremap.html', 'admin');

OK,跟finecms的整合配置就到这里了,然后开始写heremap.html模板里的东东

2. 显示部分

在这部分其实已经跟finecms没太大关系了,主要就是here地图的使用,贴代码也没有太大意义了,这里我提供一个我写好的demo下载吧,代码未经优化~有洁癖的就别看了~顺便附送Here的JS api离线版

下载地址:http://share.weiyun.com/266cb7e6643b73371617014c0616dd52

heremap.php 放置在 \dayrui\libraries\Field

模板文件heremap.html放置在 \dayrui\templates\admin 

PS: 两个文件中的相关语言配置 在附近的language文件夹中的语言文件配置下就好了 为了不冲突这里就不放出来了

API文档是官方最新的英文版


3. 更新部分

在使用中还有一个地方要添加代码,这部分是我觉得finecms写得不好的地方

具体文件是dayrui/core/D_common.php

搜索Baidumap, 然后跟着Baidumap的相关代码加一个我们自己的heremap代码就行了

同理,后面我也加了Google map,具体步骤一样

© 著作权归作者所有

SevensChan

SevensChan

粉丝 25
博文 59
码字总数 32119
作品 0
澳门
高级程序员
私信 提问
FineCMS - 迅睿CMS建站程序

FineCMS介绍 http://finecms.net/ 产品简介 FineCMS(简称免费版、企业版、公益版)是一款基于PHP+MySql+CI框架开发的高效简洁的中小型内容管理系统,面向多终端包括Pc端网页和移动端网页,支...

boonya
04/08
0
0
FineCMS 轻量版开源公告说明

FineCMS轻量版诞生于2009年底,源程序由开发者李睿在qeephp框架(1.5以后采用doitphp改装版)为基础开发的一套以简单、实用、开源为目录的CMS建站系统,主要目标用户锁定在个人站长,在经历了...

天睿云计算
2014/07/15
4.8K
7
FineCMSv2013新版,史上最灵活、最简单、最强大的网站管理系统

FineCMS v2(简称v2)是一款开源的跨平台网站内容管理系统,以“实用+好用”为基本产品理念,提供从内容发布、组织、传播、互动和数据挖掘的网站一体化解决方 案。系统基于CodeIgniter框架,...

天睿云计算
2013/10/29
2.8K
1
如何调用finecms指定栏目的描述关键词

  有时我们在用finecms建站时需要调用指定栏目的描述和关键词,实现个性化需求,比如id为23的栏目很重要,要让它在首页展示出来,这时我们要如何调用呢?{drcatvalue(23, 'name')}这个是调...

osc_k816frzg
2018/01/10
4
0
技能篇丨FineCMS 5.0.10 多个漏洞详细分析

今天是一篇关于技能提升的文章,文章中的CMS是FineCMS,版本是5.0.10版本的几个漏洞分析,主要内容是介绍漏洞修补前和修补后的分析过程,帮助大家快速掌握该技能。 注:篇幅较长,阅读用时约...

osc_wfzj799x
2019/05/29
3
0

没有更多内容

加载失败,请刷新页面

加载更多

腾讯副总裁魏颖:提瓢入市,倚杖而归

  魏颖,腾讯公司副总裁,2008 年加入腾讯,全面负责公司薪酬福利、绩效管理、员工关系以及海外业务人力资源。   ————————   很多人对人力资源(HR)工作的理解就是一些人事流...

alkcendkljk
58分钟前
13
0
OSChina 周二乱弹 —— 我要一份儿大姐姐的爱

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @Cobbage :分享赵雷的单曲《阿刁 (Diao)》: 《阿刁 (Diao)》- 赵雷 手机党少年们想听歌,请使劲儿戳(这里) @喵星人123 :昨天睡到半夜 突然...

小小编辑
59分钟前
11
0
window下 mongodb开启用户名和密码 权限

在默认情况下,mongod是监听在127.0.0.1之上的,任何客户端都可以直接连接27017,且没有认证。 好处是,用户可以即时上手,不用担心被一堆配置弄的心烦意乱。 坏处是,公网服务器搭建MongoDB...

东东笔记
今天
9
0
数据倾斜

数据倾斜: 两种数据倾斜发生的现象: 80%情况下都发生挂了,只有极少20%情况下能把task执行完成 窄依赖:结构简单,如果发生数据丢失,方便查找丢失的数据 宽依赖:结构复杂,如何发生数据丢...

七宝1
今天
20
0
我的jdk源码(十一):ArrayList

一、概述 ArrayList类是AbstractList的子类,实现了具体的add(), set(), remove()等方法。它是一个可调整大小的数组可以用来存放各种形式的数据。 二、源码分析 (1) 类的声明,源码如下: ...

Java觉浅
昨天
24
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部