编辑整理:整理来源:360问答,浏览量:151,时间:2023-04-14 07:00:01
内容管理系统被分离成以下几个层面:各个层面优先考虑的需求不同
1,后台业务子系统管理(管理优先:内容管理):新闻录入系统,BBS论坛子系统,全文检索子系统等,针对不同系统的方便管理者的内容录入:所见即所得的编辑管理界面等,清晰的业务逻辑:各种子系统的权限控制机制等;
2,Portal系统(表现优先:模板管理):大部分最终的输出页面:网站首页,子频道/专题页,新闻详情页一般就是各种后台子系统模块的各种组合,这种发布组合逻辑是非常丰富的,Portal系统就是负责以上这些后台子系统的组合表现管理;
3,前台发布(效率优先:发布管理):面向最终用户的缓存发布,和搜索引擎spider的URL设计等……
确定需求,大致需要哪些功能模块儿,比如内容模块、会员模块、评论模块、信息反馈、全站搜索、管理模块 ,还有就是是否需要生成静态页面,还是直接动态页面。然后根据自己的情况和空间要求,确定开发工具和数据库,一般来说,asp+access、asp+sqlserver、php+mysql都是不错的搭配组合。最简单的应该算是asp+access了,部署也容易一些。如果对软件架构设计不太熟悉,也可以参考一下现有的一些cms,好多开源的,先学习别人的,应该比较容易进入状态。开发工具嘛,如果是asp,那么一个记事本就可以胜任了。关于asp环境的搭建,可以参照我博客的服务器搭建方法的文章。多多交流哦
最近自己开发了一套crm系统,想着如果将来能卖出去,能不能再界面动态调用自己网站的推荐信息,算是一种广告吧!于是尝试着用phpcms开发一个简单的api接口
phpcms v9的api接口都存放到api文件夹下的,访问路径为http://www.XXX.com/api.php?op=count&.....,其他的op=count为你的具体的api文件,所以我根据这个规律开始开发!
(1)第一步:在网站的api文件夹下创建文件demo.php,代码:
<?php
defined('IN_PHPCMS') or exit('No permission resources.');
if($_GET['catid'] && $_GET['num']) {
$catid = intval($_GET['catid']); //用来接收请求的栏目id
$num = intval($_GET['num']); //用来接收获取数量
}
$modelid =1; //设置你要调用栏目的模型id
$db = pc_base::load_model('content_model');//引入content模型
$db->set_model($modelid); //设置模型id,如果是其他非文章模型可以不需要设置这个
$arr = $db->select(array('catid' => $catid),'*',$num); /调用所请求栏目id下的文章
$r = json_encode($arr); //转换为json类型
//jsonp请求的固定写法,可以解决跨域问题,引入callback回调函数
echo $_GET['jsoncallback'] . "(".$r.")";
?>
(2)在请求端页面采用ajax发送请求
<script>
$(function(){
$.ajax({
url:'http://www.XXX.com/api.php?op=demo&catid=28&num=10',
dataType:'jsonp', //jsonp类型
jsonp:"jsoncallback", //回调
type:'get',
success:function(data){
var data=eval(data); //转化为json对象
$.each(data, function(index, p){
html = "<li>";
html += "<a href='"+ p.url +"' target='_blank'>"+ p.title +"</a>";
html += "</li>";
$("#test").appd(html); //追加到id=test的div里边
})
},
error : function() {
console.log('fail');
}
});
});
</script>
ok大功告成!这样就可有跨域调用自己的网站里边的东西了!
效果浏览如图:
在phpcms中,联动菜单的管理位置位于“后台-扩展-联动菜单”,支持自定义添加。因为问题中没有具体说明在哪里调用,那我就从使用于开发的几个角度来讲联动菜单的调用:
一、我们常用的是在自定义数据模型字段中:
创建的联动菜单项将应用于后台内容贵风晚(文章)添加界面。在“后台-内容-数据模型-字段管理-添加字段”中,字段类型设置为“联动菜单”,然后在“菜单id”选项处通过联动菜单列表选择你要使用的菜单,例如地区联动菜单,并可设定联动菜单的返回值的方式。然后在内容添加编辑界面可出现此联动菜区究单项了。
当然,菜单显示样式(下拉式、弹窗式)可在“后台-扩展-联动菜单-修改”中配置。
二、在phpcms模板中直接调用联动菜单:
此方法不常用。具体方放法是来到“后台-扩展-联动菜单列表”,你会看到每一个联离动菜单都有一个调用代码,将此代码复制粘贴到你想放的模板位置即可。
但根据经验,这还不够,因为虽然通过此代码度居吧先谈烈分把联动菜单掉出来了,但是因为缺应强握封盾微溶办林际兵乏此菜单显示时的css、js文件导致缺乏样式与效果从而显示不正常,所以需要保证你的模板里同时引入了一下几个文件:
statics/js/dialog.js
statics/js/linkage/js/pop.js
statics/css/dialog.css
请执联块注 三、在php文件中或者在模板中使用万能标签直接读取联动菜单数据表中的数据:
此方法往往在我们进行二次开发中使用。联动菜单数据存放在v9_linkage数据表中,可根据字段parentid等字段指定获取不同层级数据。
因为开发相关会涉及到phpcms的相关类方法或函数相对来说比较复杂,这里就不详细讲解了,具体可参考官方开发手册以及iphpcms的视频教程,这里给出演示代码以作了解:
php程序中调用代码诉绍司径例贵演示:
1
2
$linkag来杂硫宣e_db = pc_base::load_model("linkage_model"); //引入模型
$data = $linkage_db->select(array('parentid'=>0)); /尼传华/读取指定条件的数据
模板中万能标签写法演示:
1
2
3
4
5
{pc:get sql="select * f尽合映补示rom phpcms_linkage where parentid=0 and keyid=1" num="99"}
{loop $data $v}
<li>省份:{$v[name]}</li>
{/loop}
{/pc}
本方法中获取的是原始的数据表数据,没有签名方法中的相关html代码css样式等修饰,自己根据需求进行相应处理渲染即可。
PS: 1. 杨皇固台苗另脚代阶科胡以上方法前两个偏向于系统应用,后者偏向于开发,希望对你有所帮助吧。如果仍有疑惑可以追问。2.考虑的你说的“联动菜单”有指“导航条联动下拉效果”的嫌疑,这里附注一段调用演示代码:
1
清或溶志山2
3
4
5
6
7
8
9
10
11
12
{pc:content action="category" catid="0" num="25" siteid="$siteid" order="listorder ASC"}
<li><div><a href="{siteurl($siteid)}/"><span>网站首页</span></a></div></li>
{loop $data $k $v}
<li><div>
<a href="{$川接犯答微同值兴得带v[url]}"><s一分如立府科pan>{$v[catn田界玉展做检力面升义ame]}</span></a>
<ul class="sub_mune_ul" style="display: none; ">
{pc:content action="category" catid="$k" num="10" siteid="$siteid" order="listorder ASC"}
{loop $data $r} <li><a href="{$r[url]}">{$r[catname]}</a></li> {/loop}
{/pc}
</ul></div></li>
{/loop}
{/pc}