Joomla默认的布局都不是很适合国内的CMS布局,用Joomla设计一个符合国人习惯的首页,首先要要判断是否是首页,才能在index.php里定制首页代码。
下面是在网上搜集的一些判断是否是首页的代码:
下面这段只能在1.5版本应用,1.6版已经取消了frontpage
1
2
3
4
5
6
| <?php
if($option != "" && $option != "com_frontpage"){
}
?> |
下面这段可以应用在1.5+
1
2
3
4
5
6
7
| <?php
$menu = & JSite::getMenu();
if ($menu->getActive() == $menu->getDefault())
{
echo 'This is the home page';
}
?> |
1
2
3
4
| function isHome(){
if (JURI::current() == JURI::base()) return true;
return false;
} |
以上引用自:http://forum.joomla.org/viewtopic.php?f=304&t=428965
我在最近的一个Joomla站里,用的是个人方法,因为我的一个幻灯片只在首页出现,那么,我只判断是否有该幻灯片,即知是不是在首页。
1
2
|
$isFrontPage = $this->countModules('index-newsflash'); |
1、连接MYSQL数据库代码
<?php
$connec=mysql_connect(“localhost”,”root”,”root”) or die(“不能连接数据库服务器: “.mysql_error());
mysql_select_db(“liuyanben”,$connec) or die (“不能选择数据库: “.mysql_error());
mysql_query(“set names ‘gbk’”);
?>
2、读取数据库,并实现循环输出
<?php
$sql=”select * from liuyan order by ly_id desc”;
$conn=mysql_query($sql,$connec);
while($rs=mysql_fetch_array($conn)){
?>
循环的内容………
<?php
}
?>
3、如何实现分页,包括两个函数,两个调用
1)两个函数
<?
//分页函数
function genpage(&$sql,$page_size=2)
{
global $prepage,$nextpage,$pages,$sums; //out param
$page = $_GET["page"];
$eachpage = $page_size;
$pagesql = strstr($sql,” from “);
$pagesql = “select count(*) as ids “.$pagesql;
$conn = mysql_query($pagesql) or die(mysql_error());
if($rs = mysql_fetch_array($conn)) $sums = $rs[0];
$pages = ceil(($sums-0.5)/$eachpage)-1;
$pages = $pages>=0?$pages:0;
$prepage = ($page>0)?$page-1:0;
$nextpage = ($page<$pages)?$page+1:$pages;
$startpos = $page*$eachpage;
$sql .=” limit $startpos,$eachpage “;
}
阅读全文…
每一个访问Joomla网站的用户都对应这一个JUser对象,通过$user =& JFactory::getUser() 就可以获得这个对象引用并访问对象的成员函数和属性。
下面的代码就是显示用户的名称,邮件的一段代码:
1
2
| echo "<p>Your name is {$user->name}, your email is {$user->email}, and your username is {$user->username}</p>";
echo "<p>Your usertype is {$user->usertype} which has a group id of {$user->gid}.</p>"; |
我们来看看JUser的属性和成员函数:
id – 用户唯一编号
name – 姓名
username – 帐号
email – 邮件
password – 密码
password_clear – 用户修改密码的时候设置真
usertype – 用户类型(Super Administrator, Editor)
gid – 用户的类型id ,与usertype对应
block – 是否被阻止,如果阻止就设为1
registerDate – 注册日期
lastvisitDate – 最后一次登录日期
guest – 如果用户未登录就设置为1,其他以上的字段都设置为空
以上的属性都可以直接访问,如果想获取数据库中其他的参数,可以通过getParam函数来获得,下面的代码获取的用户的语言参数:
1
2
3
4
| $user =& JFactory::getUser();
$language = $user->getParam('language', 'the default');
echo "<p>Your language is set to {$language}.</p>"; |
通常判断用户是否登录都是通过guest来判断的,当然通过id是否大于0也可以。
用户访问权限
阅读全文…
使用wp-codebox遇到个问题就是直接打lang=”html”,html根本没有带上高亮的效果。
网上GOOGLE下,原来wp-codebox高亮是使用的是GeSHi – Generic Syntax Highlighter(http://qbnz.com/highlighter/)
GeSHi对html的解释是html4strict
因此我们只需要把 lang=”html” -> lang=”html4strict” 就即可高亮。
使用WP-Codebox 添加代码高亮显示 遇到如下问题
1.最好只安装一种代码高亮显示插件,都是javascript写成的 很容易拖累网页速度,并且会发生冲突
2.原版的wp-codebox代码行数显示会有问题 已解决 方案如下
我刚安装codebox时,一旦行号大于9,行号就变成了1、0、1、1、1、2、1、3
修正方法:
修改:/wp-content/plugins/wp-codebox/css/codebox.css
找到:.wp_codebox td.line_numbers
将其width修改到15px(视自己情况而定)此处 15只适合行数在100以下的代码 100以上可以修改至22px
另附 wp-codebox参数
<pre lang=”lang” line=N colla=”+/-”>代码 < /pre>
先请看如下代码:
1
2
3
| filter:alpha(opacity=50); /* IE */
-moz-opacity:0.5; /* Moz + FF */
opacity: 0.5; /* 支持CSS3的浏览器(FF 1.5也支持)*/ |
简单解释,IE使用私有属性filter:alpha(opacity),Moz Family使用私有属性-moz-opacity,而标准的属性是opacity(CSS 3, Moz Family部分支持CSS3)。后面的数值是透明度,使用百分比或者小数(alpha(opacity))使用大于0小于100的数值,其实也是百分比)。
从上面的代码中你没有看到Opera。没错,Opera还未支持标准的opacity从Opera9开始支持CSS3的opacity了,也没有其私有的可支持Alpha透明的属性。
但是,我们知道,Opera是支持Alpha透明的PNG图片的(当然Moz Family也支持)。所以我们可以使用背景图片来实现Alpha透明效果。
例子:http://www.omemo.net/neo/lab/alpha/
关键在于:
1
2
3
| background: transparent url(alpha80.png) left top repeat!important;
background: #ccc;
filter:alpha(opacity=50); |
既然Moz Family支持Alpha透明的PNG,所以我们没有必要使用其私有属性了。当然,你可以使用标准的opacity,但别同时使用Alpha透明图片和opacity,这样的话就成了两者的混合了。你可以把上面的例子下载过来,然后/*opacity: .5;*/的注释看看。
这部分内容来自于:http://www.omemo.net/neo/blog/?p=87
2、如想实现父标签透明,而子标签不透明,采用对于采用png透明的父标签来说不存在问题,如果采用alpha值无论ie还是非ie都存在这样的问题,css声明了position透明标签包含的内容都透明。
例如:
阅读全文…
在IE6中设置display:block的空容器一个较小高度时,如
<p style=””height: 1px;”> </p>
,会发现其高度不能小于某个值,比如在字体大小为12px时这个值是15px,在浏览器默认字体大小时这个值为19px,你可以通过调整IE6中的“查看>字体大小”来观看这个高度的变化。解决方案:
设置font-size:0,但是这个容器的高度最小为2px,所以没有办法实现高度为1px的效果
在容器中增加内容或其他空标签,如 、
,并设置line-height:0,但该容器会存在一个和其父容器字体大小有关的外边距,这个问题在IE7中也会出现,
在容器中增加内容或其他空标签,同时设置font-size:0,line-height:0
上述解决方案在某些字体下会有非常大难以预料的变化,
设置zoom:0.03,这个会受到font-size、font-family的影响而显示不同效果,并且在IE7下不可见,
设置overflow:hidden,这是目前看到的最完美的解决方案。
我们在写css的时候最常用的长度单位是px(像素),经常看到的还有em,pt等等,其实css中的长度单位一共有8个,分别是px,em,pt,ex,pc,in,mm,cm;
1.px:像素(Pixel),相对于设备的长度单位,像素是相对于显示器屏幕分辨率而言的。
譬如,WONDOWS的用户所使用的分辨率一般是96像素/英寸。而MAC的用户所使用的分辨率一般是72像素/英寸。
2.em:相对长度单位。相对于当前对象内文本的字体尺寸。
如当前行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。
3.pt:点(Point),绝对长度单位。
4.ex:相对长度单位。相对于字符“x”的高度。此高度通常为字体尺寸的一半。
如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。
5.pc:派卡(Pica),绝对长度单位。相当于我国新四号铅字的尺寸。
6.in:英寸(Inch),绝对长度单位。
7.mm:毫米(Millimeter),绝对长度单位。
8.cm:厘米(Centimeter),绝对长度单位。
阅读全文…
在文本框光标位置插入内容在实际的项目应用中经常用到,比如在文本框插入表情,首先要获取光标在文本框中的位置,当然这个有浏览器兼容性问题。
IE下可以通过document.selection.createRange();获取光标位置,代码也很简单:
1
2
3
4
| if (document.selection) {
pos = document.selection.createRange();
pos.text = "要插入的字符串";
} |
Firefox浏览器则稍微负责一点,需要首先获取光标位置,然后对value进行字符串截取处理。
1
2
3
4
5
6
7
8
9
| if (obj.selectionStart || obj.selectionStart == '0') { //obj是文本框对象
var startPos = obj.selectionStart;
var endPos = obj.selectionEnd;
obj.value = obj.value.substring(0, startPos) + "要插入的字符串" + obj.value.substring(endPos, obj.value.length);
obj.selectionStart = startPos + myValue.length;
obj.selectionEnd = startPos + myValue.length;
} else {
obj.value += "要插入的字符串";
} |
现在微博很火,我们可以尝试一下插入话题,你点击话题,在光标位置就会插入:#请在这里输入自定义话题#,注意,“请在这里输入自定义话题”这几文字是被选中,你可以直接敲打键盘编辑文本。
在火狐下先对比较简单,我们只要在上面的代码中插入一句就可以了:
obj.setSelectionRange(startPos-t,obj.selectionEnd+t);
t是根据数值选中插入文本内容两边的边界数值,如:0是表示插入文字全部选择,-1表示插入文字两边各少选中一个字符。
但是在ie下比较麻烦,要设置光标的位置,然后选中文字。
完整代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| (function($) {
$.fn.extend({
insertContent: function(myValue, t) {
var $t = $(this)[0];
if (document.selection) { //ie
this.focus();
var sel = document.selection.createRange();
sel.text = myValue;
this.focus();
sel.moveStart('character', -l);
var wee = sel.text.length;
if (arguments.length == 2) {
var l = $t.value.length;
sel.moveEnd("character", wee + t);
t < = 0 ? sel.moveStart("character", wee - 2 * t - myValue.length) : sel.moveStart("character", wee - t - myValue.length);
sel.select();
}
} else if ($t.selectionStart || $t.selectionStart == '0') {
var startPos = $t.selectionStart;
var endPos = $t.selectionEnd;
var scrollTop = $t.scrollTop;
$t.value = $t.value.substring(0, startPos) + myValue + $t.value.substring(endPos, $t.value.length);
this.focus();
$t.selectionStart = startPos + myValue.length;
$t.selectionEnd = startPos + myValue.length;
$t.scrollTop = scrollTop;
if (arguments.length == 2) {
$t.setSelectionRange(startPos - t, $t.selectionEnd + t);
this.focus();
}
}
else {
this.value += myValue;
this.focus();
}
}
})
})(jQuery); |
调用方式:
1
2
3
4
| /*
$(文本域选择器).insertContent("插入的内容");
$(文本域选择器).insertContent("插入的内容",数值); //根据数值选中插入文本内容两边的边界
*/ |
最近评论