
使用过Phpcms V9的朋友,肯定知道PC V9默认的Page页面是只有一篇内容的,但是一旦添加了子栏目,那么父级Page栏目就会不能添加内容,这样就会出现问题:当访问父级栏目的时候,默认不会转到最新page或者某一个子栏目页面,这样会发现没有内容。于是需要自定义Phpcms V9列表页调用栏目第一篇文章内容,在此分享另外一种方法做到父单页栏目添加内容方法,这是PC V9鲜为人知的Page模型自定义的方法。
具体修改模型conten文件phpcms\modules\content\contentphp,方法是修改init方法
第一步:通过init我找到了public_categorys函数 直接定位到约514行。
就是下面这段代码:
$strs="<span class='\$icon_type'>\$add_icon<a href='m=content&c=content&a=\$type&menuid="$_GET['menuid']"&catid=\$catid' target='right' onclick='open_list(this)'>\$catname</a></span>";
$strs2 = "<span class='folder'>\$catname</span>";
将其中的
$strs2 = "<span class='folder'>\$catname</span>";
替换为:
$strs2= "<span class='folder'>\$add_icon<a href='m=content&c=content&a=\$type&menuid="$_GET['menuid']"&catid=\$catid' target='right' onclick='open_list(this)'>\$catname</a></span>";
修改后保存。这样让page能够修改这些栏目以及里面的内容,之后进行更新缓存、url更新,以及内容页更新等 *** 作。
第二步:修改create_htmlphp,之后更新
修改contentphp同文件夹下的create_htmlphp,找到178行
将
//$r['disabled'] = $r['child'] 'disabled' : '';
这一行去掉。
然后进后台更新缓存,可以编辑单页page父栏目了。
在phpcms中,联动菜单的管理位置位于“后台-扩展-联动菜单”,支持自定义添加。因为问题中没有具体说明在哪里调用,那我就从使用于开发的几个角度来讲联动菜单的调用:
一、我们常用的是在自定义数据模型字段中:
创建的联动菜单项将应用于后台内容(文章)添加界面。在“后台-内容-数据模型-字段管理-添加字段”中,字段类型设置为“联动菜单”,然后在“菜单id”选项处通过联动菜单列表选择你要使用的菜单,例如地区联动菜单,并可设定联动菜单的返回值的方式。然后在内容添加编辑界面可出现此联动菜单项了。
主要设置颜色如下:
编辑界面显示效果如下:
当然,菜单显示样式(下拉式、d窗式)可在“后台-扩展-联动菜单-修改”中配置。
二、在phpcms模板中直接调用联动菜单:
此方法不常用。具体方法是来到“后台-扩展-联动菜单列表”,你会看到每一个联动菜单都有一个调用代码,将此代码复制粘贴到你想放的模板位置即可。
但根据经验,这还不够,因为虽然通过此代码把联动菜单掉出来了,但是因为缺乏此菜单显示时的css、js文件导致缺乏样式与效果从而显示不正常,所以需要保证你的模板里同时引入了一下几个文件:
statics/js/dialogjs
statics/js/linkage/js/popjs
statics/css/dialogcss
三、在php文件中或者在模板中使用万能标签直接读取联动菜单数据表中的数据:
此方法往往在我们进行二次开发中使用。联动菜单数据存放在v9_linkage数据表中,可根据字段parentid等字段指定获取不同层级数据。
因为开发相关会涉及到phpcms的相关类方法或函数相对来说比较复杂,这里就不详细讲解了,具体可参考官方开发手册以及iphpcms的视频教程,这里给出演示代码以作了解:
php程序中调用代码演示:
$linkage_db = pc_base::load_model("linkage_model"); //引入模型$data = $linkage_db->select(array('parentid'=>0)); //读取指定条件的数据
模板中万能标签写法演示:
{pc:get sql="select from phpcms_linkage where parentid=0 and keyid=1" num="99"}{loop $data $v}
<li>省份:{$v[name]}</li>
{/loop}
{/pc}
本方法中获取的是原始的数据表数据,没有签名方法中的相关html代码css样式等修饰,自己根据需求进行相应处理渲染即可。
PS: 1 以上方法前两个偏向于系统应用,后者偏向于开发,希望对你有所帮助吧。如果仍有疑惑可以追问。2考虑的你说的“联动菜单”有指“导航条联动下拉效果”的嫌疑,这里附注一段调用演示代码:
{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]}"><span>{$v[catname]}</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}
跨页面变量传递的问题。可以使用 session或cookie 把传递的参数保存起来。然后再使用。
也可以把传递过来的参数,赋值给对象的属性。然后调用对象属性值。
在phpcms 里,a后面的参数,表示的是调用:
content模块中的 index 控制器中的 jieshou 方法。而不是普通通过get传递的参数。
你可以这样传递一个参数名为 jishou ,参数值为 123 的参数:
indexphpm=content&c=index&a=list&id=1&jieshou=123
1什么是phpcms 的 Get标签
通俗来讲,get 标签是Phpcms定义的能直接调用数据库里面内容的简单化、友好化代码,她可调用本系统和外部数据,只有你对SQL有一定的了解,她就是你的绝世好剑! 也就是适合熟悉SQL语句的人使用。有了她,我们打造个性化的网站,能非常方便的调用出数据库里面指定的内容。通过条件限制,我们可以调用出不同条件下的 不同数据。
如果说,我不懂SQL怎么办?没有问题,get 标签还有强大的创建工具(看这里),Phpcms2008 在新建模板和修改模板页面增加了 get 标签傻瓜式生成器,get 标签生成器可以帮助您列出指定数据源的数据表和字段,通过填空和选择方式生成可用的 get 标签代码。Phpcms2008 首次提供了最全面的数据字段,对本系统任何数据表和字段都提供了中文说明,这也会大大降低 get 标签的使用难度。
phpcms V9 保留了2008的get标签的使用方法
它包括了2种方式一种是内部数据,
另一种是外部数据
1、外部数据的调用
{ pc : get sql = "SELECT FROM phpcms_member" cache = "3600" page = "$page" dbsource = "discuz" return = "data" }
{ loop $data $key $val }
{ $val [ username ]}< br />
{ /loop}
{ $pages }
{/ pc }
一个是数据源,一个是产生的pages翻页
我们再分析下内部数据的使用方法
2、内部数据的调用
{pc:get sql="SELECT FROM `XX` WHERE fid =$ltid AND digest =2 AND ifupload =1 ORDER BY tid DESC" num="2" cache= "3600" return="data" }
{loop $data $r}
。。。。。
{/loop}{/pc}
由此可以看出 get 语句支持num的用法但是不支持 limit 5,5这样的用法
实在是很遗憾
num是调用的条数
get 标签参数完整剖析
{get dbsource="数据源" dbname="数据库" sql="SQL语句" rows="行数" return="返回变量名称" page="$page"}
输出代码(含返回变量值、数组、函数等)
{/get}
复制代码
dbsource="数据源" -->
首先根据网站配置进入phpcms登录界面,输入用户名、密码、验证码,点击登录,如图。
2
进入管理系统,首先看到的是我的面板,进行管理员信息修改和密码修改。
3
设置面板里面可以更改管理员权限,站点名称和域名设置,关键词的设置,和网站的seo有很大关系。
4
模块面板,涉及到充值板块,广告板块,友情链接板块,短信板块,投票板块,这些都是比较常用的东西。
5
内容板块涉及到网站的前台所有资源,文字,,广告的内容添加、删除与修改都需要在这里面 *** 作。
6
用户面板主要是审查、限制会员的权限,毕竟有些板块是收费的项目,是不允许游客访问的。
7
界面面板/模板风格,便于开发者代码的调试与修改。
8
扩展和phpsso这两个面板是为了phpcms v9提供版本更新以及开发者二次开发使用的,一般是不会用到的。这样试试吧如果还有不明白的可以想我一样在后盾人找找答案,多看几遍慢慢就会了,希望能帮到你◟(░´㉨`░)◜
这跟服务器缓存没有关系吧!首先你确认后台的数据库已经更新过了,然后看你们前台是不是静态页面,如果是静态页面一种可能是没有调用,全部做在页面上的,你后台更新前台当
php文件,还有一个办法就是在content�,橹屑尤肱卸希裀C的界面放到移动端如果不变布局,在不同的设备上显示不同的样式,只会看不清。
另
外cn" target="_blank">www;content',在 include
template(',你看下就知道了://www,$default_style);
的地方判断不同的设备调用不同的模板;modules\zacseo,位置是 phpcms\,做自适应是不错的选择cn)一样楼主你好
不改变PC的布局到移动端是不可能的;,可以动手写一个函数;index',可以实现同一个URL地址,'。
希望可以帮到你,但界面展示的信息会有所不同,在PC端显示和移动端都是同一个URLzacseo,像这个网站(
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)