Thứ Ba, 14 tháng 10, 2014

Hàm trong PHP

  • Cách khai báo hàm.
  • Xây dựng tập tin định dạng nội dung
  • Tập tin dùng chung

KHAI BÁO HÀM TRONG PHP

Hàm do người sử dụng định nghĩa cho phép bạn xử lý những tác vụ thường lặp đi lặp lại trong ứng dụng.
Để khai bao hàm, bạn sử dụng từ khoá function với cú pháp tương tự như sau:

function functioname($parameter)
{
return value;
}

    
Trong trường hợp hàm không có giá trị trả về thì hàm được xem như thủ tục. Ngoài ra, bạn có thể khai báo tham số tuỳ chọn bằng cách gán giá trị mặc định cho tham số. Ví dụ chúng ta khai báo:

function functioname($parameter1, $parameter2=10 )
{
 return value;
}
    
Đối với trường hợp này thì tham số $parameter1 là tham số bắt buộc và tham số $parameter2 là tham số tuỳ chọn, khi gọi hàm nếu không cung cấp tham số cho $parameter2 thì tham số này có giá trị là 10.
Ví dụ, bạn khai báo trang function.php có hàm getResult nhận hai số và phép toán sau đó tuỳ thuộc vào phép toán hàm trả về kết quả. Nếu người sử dụng không cung vấp phép toán thì mặc định là phép toán +.
Trang function.php

<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Function</h4>
<?php
function getResult($number1, $number2,$operator="+")
{
$result=0;
switch($operator)
{
case "+":
$result=$number1+$number2;
break;
case "-":
 $result=$number1-$number2;
break;
case "*":
$result=$number1*$number2;
break;
case "/":
if($number2!=0)
$result=$number1/$number2;
else
break;
case "%":
$result=0;
if($number2!=0)
$result=$number1%$number2;
 else
break;
}
$result=0;
return $result;
}
echo "result of default operator: ".getResult(10,20);
echo "<br>";
echo "result of * operator: ".getResult(10,20,"*");
?>
</BODY>
</HTML>

    
Nếu muốn định nghĩa function không có giá trị trả về, bạn có thể khai báo trong trang void.php như ví dụ sau:
Trang void.php
...
 function calloperator()
{
 echo "result of default operator: ".getResult(10,20);
echo "<br>";
echo "result of * operator: ".getResult(10,20,"*");
}
calloperator();
?>
</BODY>
</HTML>
Trong trường hợp truyền tham số như tham biến, bạn sử dụng ký hiệu & trước tham số, chẳng hạn chúng ta khai báo hàm có tham biến có tên average như trong trang reference.php như sau:
Trang references.php
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Function</h4>
<?php
function getAmount($quantity, $price,&$average)
{
$result=0;
$result=$quantity*$price;
$average=$result*6/12;
return $result;
}


$bq=0;
echo "result is : ".getAmount(10,20,$bq);
echo "<br>";
echo "result of Average is : ".$bq;
echo "<br>";
function getAmounts($quantity, $price,$average)
{
$result=0;
$result=$quantity*$price;
$average=$result*6/12;
return $result;
}
$bq=0;
echo "result is : ".getAmounts(10,20,$bq);
echo "<br>";
echo "result of Average is : ".$bq;
?>
</BODY>
</HTML>
Trong trường hợp trên thì hàm getAmount có tham số $average là tham biến còn hàm getAmounts có tham số $average là tham trị, và kết quả trả về của biến $bq khi gọi hàm getAmount là 100 trong khi đó giá trị của biến này trong hàm getAmounts là 0.

Xây dưng tập tin định dạng nội dung

Khi trình bày nội dung trên trang HTML hay trang PHP, để thống nhất định dạng chuỗi trong thẻ body hay thẻ div chẳng hạn bạn cần khai báo thẻ style trong thẻ
 <head>
.

   <style> A {
COLOR: #003063;
TEXT-DECORATION: none
}
A:hover {
COLOR: #003063;
TEXT-DECORATION: underline
}
A:link {
FONT-WEIGHT: bold; COLOR: red;
TEXT-DECORATION: none
}
A:visited {
FONT-WEIGHT: bold; COLOR: black;
TEXT-DECORATION: none
}
.title {
FONT-WEIGHT: normal; FONT-SIZE: 22px
}
.text{
FONT: 11px Arial, Helvetica, sans-serif
}
</style>

    
Trong đó, A tương ứng với liên kết (chuỗi trong thẻ
<a>
) có định dạng ứng với trường hợp liên kết, di chuyển con chuột, chọn liên kết.

A {
COLOR: #003063;
TEXT-DECORATION: none
}
A:hover {
 COLOR: #003063;
TEXT-DECORATION: underline
}
A:link {
FONT-WEIGHT: bold; COLOR: red;
TEXT-DECORATION: none
}
A:visited {
FONT-WEIGHT: bold; COLOR: black;
TEXT-DECORATION: none
}
    
Chẳng hạn, chúng ta khai báo trang PHP với nội dung được áp dụng với kiểu định dạng khai báo trong thẻ style như ví dụ 4
Khai báo thẻ Style
<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head>
<title>Style trong PHP</title>
<style> A {
COLOR: #003063;
TEXT-DECORATION: none
}
A:hover {
COLOR: #003063;
TEXT-DECORATION: underline
}
A:link {
FONT-WEIGHT: bold; COLOR: red;
TEXT-DECORATION: none
}
A:visited {
FONT-WEIGHT: bold; COLOR: black;
TEXT-DECORATION: none
}
.title {
FONT-WEIGHT: normal; FONT-SIZE: 22px;
COLOR: #003063;
}
.text{
FONT: 11px Arial, Helvetica, sans-serif
}
</style>
</head>
<body>
<h4>Style Tag</h4>
<TABLE cellSpacing=0 cellPadding=0
width="100%" border=0>
<TR>
<TD vAlign=top class=title>
*** Quản Trị SQL Server 2000 *** </TD>
</TR>
<TR>
<TD class=text>
<div align=justify>
Tìm hiểu cách cài đặt, cấu hình, quản trị, backup & restore, import & export, thiết kế, lập trình, tự động hoá tác vụ quản trị,bản sao dữ liệu, bảo mật và chống thâm nhập dữ liệu bằng.
<b>SQL Injection</b>.</div>
</TD>
</TR>
<TR><TD><hr size=1 color=red></TD</TR>
<TR><TD>Welcome to
<a href='www.huukhang.com' class=>
www.huukhang.com</a></TD
</TR>
</TABLE>
</body>
</html>

 
Khi triệu gọi trang style.PHP trên trình duyệt, nội dung của trang webđược định dạng theo thẻ stylenhư hình 1.

Áp dụng thẻ style
Tương tự như vậy khi bạn muốn thống nhất nội dung trong những thẻ khác của một trang web thì khai báo một định dạng trong thẻ style. Tuy nhiên, khi đặt tên trùng với thẻ HTML, mọi thẻ đó trong trang sẽ cùng chung một định dạng. Chẳng hạn, bạn khai báo định dạng cho thẻ td như sau:
TD {
FONT: 10px Arial, Helvetica, sans-serif
}
 


 
Mọi nội dung trình bày trong thẻ td sẽ có định dạng như trên. Nếu bạn muốn có định dạng khác thì khai báo thuộc tính class cho thẻ td đó, ví dụ sử dụng định dạng khác cho thẻ td:
<td class=text>ABC</td>
Thay vì chuỗi ABC sẽ có định dạng là FONT: 10px Arial, Helvetica, sans-serif thì chúng sẽ có định dạng của FONT: 11px Arial, Helvetica, sans-serif.
Chú ý rằng, trong mỗi trang web bạn phải khai báo thẻ style và định nghĩa thống nhất cho các thẻ. Khi có sự thay đổi bạn phải thay đổi trong mọi trang web. Để sử dụng chung cho mọi trang web trong ứng dụng, bạn cần xây dựng một tập tin style, tập tin được biết đến với tên gọi custom style sheet (css).
Bất kỳ trang web nào trong ứng dụng, muốn áp dụng kiểu định dạng trong tập tin css thì khai báo liên kết tập tin cssbằng thẻ link.
Ví dụ, chúng ta khai báo tập tin style.css bao gồm các định dạng như ví dụ 5
Khai báo tệp tin css

A {
COLOR: #003063;
TEXT-DECORATION: none
}
A:hover {
COLOR: #003063;
TEXT-DECORATION: underline
}
A:link {
FONT-WEIGHT: bold; COLOR: red;
TEXT-DECORATION: none
}
A:visited {
FONT-WEIGHT: bold; COLOR: black;
TEXT-DECORATION: none
}
.title {
FONT-WEIGHT: bold; FONT-SIZE: 14px;
COLOR: #003063;
}
.text{
FONT: 11px Arial, Helvetica, sans-serif
}



    
Sau đó trong trang PHP, bạn khai báo liên kết tập tin này bằng thẻ link, nếu muốn áp dụng định dạng này trong mỗi thẻ HTML bạn sử dụng thuộc tính class như khai báo định dạng của thẻ style ngay trong trang đó như ví dụ 6.
Khai báo sử dụng tập tin css

<html>
<head>
<title>
Welcome to Link Style Sheet File
</title>
<LINK href='style.css' rel=stylesheet>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
</head>
<body>
<h4>Style File</h4>
<TABLE cellSpacing=0 cellPadding=0
width="100%" border=0>
<TR>
<TD vAlign=top class=title>
*** Quản Trị SQL Server 2000 *** </TD>
</TR>
<TR>
<TD class=text>
<div align=justify>
Tìm hiểu cách cài đặt, cấu hình, quản trị, backup & restore, import & export, thiết kế, lập trình, tự động hoá tác vụ quản trị, bản sao dữ liệu, bảo mật và chống thâm nhập dữ liệu bằng.
<b>SQL Injection</b>.</div>
</TD>
</TR>
<TR><TD><hr size=1 color=red></TD</TR>
<TR><TD>Welcome to
<a href='www.huukhang.com' class=>
www.huukhang.com</a></TD
</TR>
</TABLE>
</body>
</html>

Triệu gọi trang includestyle.php trên trình duyệt như hình 3, màu và kích thước font cùng với kiểu chữa của nội dung không thay đổi so với style.php, bởi vì phần thẻ style được tách ra thành tập tin style.css, sau đó dùng thẻ link để liên kết tập tin css này vào trang PHP trở lại.

Liên kết tập tin css
Chú ý rằng, nếu khai báo thuộc tính class trong thẻ <table> thì những nội dung trong thẻ <table> sẽ có định dạng theo định dạng khai báo trong thuộc tính class. Tương tự, nếu khai báo thuộc tính class trong thẻ <tr> thì nội dung trong thẻ<tr> sẽ có định dạng giống như định dạng khai báo trong thông tin class.

THỐNG NHẤT KÍCH THƯỚC CỦA MỌI TRANG PHP

Khi xây dựng ứng dụng web chuyên nghiệp, điều đầu tiên bạn nên quan tâm là sự thống nhất về kích thước của các phần trên trang web. Điều này có nghĩa là khi người sử dụng thay đổi trang web khi duyệt, phần top, left, right, bottom có kích thước như nhau.
Để làm điều này, bạn chia trang web ra thành 5 phần: top, left, right, body và bottom. Phần top thường trình bày các thuộc tính như quản cáo (baner)logo (biểu tượng của công ty), menu (thực đơn của ứng dụng) và một số thông tin khác.
Phần left là thông tin về các menu phụ hay còn gọi là menu của menu chính, bên cạnh menu con này trang web thường có các liên kết về liên hệ, quảng cáo, mailing list (đăng ký email), gởi đến bạn bè (send to friend), ....
Đối với phần right, thường là phần giới thiệu về các thông đặc biệt và quảng cáo, chẳng hạn đối với ứng dụng bán sách, phần right thường là danh sách các nhóm sách bán chạy, sắp phát hành, ...
Phần bottom thường thông tin liên lạc của công ty, chủ nhân của website và bản quyền. Ngoài ra, phần bottom đôi khi là danh sách các menu con khác.
Tóm lại, tuỳ thuộc vào ý tưởng thiết kế mỗi phần như trên bao gồm các thuộc tính mà nhà thiết kế cần trình bày sao cho phù hợp. Tuy nhiên, phần bodylà phần trình bày nội dung chính của mỗi trang web. Ngoài ra, tuỳ vào từng trường hợp cụ thể, trang web có thể không có phần left và right .
Như vậy, chúng ta sẽ chia trang webra thành 5 phần, phần bodychính là phần chính của trang web đó, còn 4 phần còn lại được chèn vào khi có nhu cầu.
Chẳng hạn, có những trang web do thông tin trình bày trong phần bodynhiều, nên cần không gia lớn hơn, bạn có thể không cần sử dụng hai phần leftvà right.
Để làm điều này, trước tiên chúng ta thiết kế trang sample.phpcó 5 phần như hình 3.

Trang sample.php
  • Tạo một table gồm 3 hàng 3 cột và khai báo border=1 để đễ canh lề sau đó bạn có thể khai báo lại thuộc tính này bằng 0.
  • Phần top và bottom là một hàng và merge 3 cột thành 1.
  • Bên trong mỗi phần có thể có một hay nhiều thẻ table khác.
  • Có thể không có phần left và right nhưng bắt buộc phần top và bottom phải có.
  • Bạn có thể sử dụng chiều rộng của table theo kích thước tương đối (%) hay số chỉ định, đối với màn hình 600*800 thì chiều rộng thường sử dụng là 780, khi người sử dụng chọn độ phân giải của màn hình lớn hơn thì kích thước của table này không thay đổi, trong khi đó nội dung sẽ phủ đầy màn hình khi bạn khai báo kích thước theo 100%.

Để có giao diện như trang sample.php như trên, bạn có thể khai báo như ví dụ 7.
Nội dung trang sample.PHP

<html>
<head>
<title>
Welcome to Including File
</title>
<LINK href='style.css' rel=stylesheet>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
</head>
<body bottomMargin=0 leftMargin=0
topMargin=0 rightMargin=0>
<TABLE cellSpacing=2 cellPadding=2
width="778" border=1 align=center>
<TR HEIGHT="100">
<TD  Align=center colspan=3>
TOP
</TD>
</TR>
<TR HEIGHT="280">
<TD vAlign=top width="20%">
LEFT
</TD>
<TD vAlign=top width="60%">
BODY
</TD>
<TD vAlign=top width="20%">
RIGHT
</TD>
</TR>
<TR HEIGHT="50">
<TD colspan=3 align=center>
BOTTOM
</TD
</TR>
</TABLE>
</body>
</html>


    
Trong trường hợp bạn muốn có đường phân cách giữa mỗi phần bằng image, bạn có thể khai báo lại trang sample.phpcó 5 hàng và 5 cột như templalte.php như hình 4.

Phâncách có viềng

Để trình bày trang template.php như hình 4, bạn khai báo nội dung trang này như ví dụ 8.
Khai báo template.php

<html>
<head>
<title>
Welcome to Including File
</title>
<LINK href='style.css' rel=stylesheet>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
</head>
<body bottomMargin=0 leftMargin=0
topMargin=0 rightMargin=0>
<TABLE width="778" border=0 cellSpacing=0
cellPadding=0 align=center>
<TR HEIGHT="100">
<TD  Align=center colspan=5>
TOP
</TD>
</TR>
<!---Khai báo đường phân cách--->
<TR HEIGHT="1">
<TD colspan=5 bgcolor=gray></TD>
</TR>
<TR HEIGHT="280">
<TD vAlign=top width="150">LEFT</TD>
<!---Khai báo đường phân cách--->
<TD bgcolor=gray width="1"></TD>
<TD vAlign=top width="476">BODY</TD>
<!---Khai báo đường phân cách--->
<TD bgcolor=gray width="1"></TD>
<TD vAlign=top width="150">RIGHT</TD>
</TR>
<!---Khai báo đường phân cách--->
<TR HEIGHT="1">
<TD colspan=5 bgcolor=gray></TD>
</TR>
<TR HEIGHT="50">
<TD colspan=5 align=center>
BOTTOM
</TD
</TR>
</TABLE>
</body>
</html>
    
Sau đó tách trang template.phpnày thành 5 trang khác nhau được đặt tên tương ứng là top.htm, left.htm, right.htm bottom.htm, trong đó phần body tương ứng với trang template.php.
Để khai báo chèn tập tin trong trang PHP, bạn sử dụng cú pháp như sau:
<?php include("filename");
?>

    
Hay
<?php require("filename");
?>

    
Trong đó trang template.php khai báo chèn top.htl , left.htm, right.htm và bottom.htm như ví dụ 9.
Khai báo chèn tập tin trong templates.php
<html>
<head>
<title>
Welcome to HUUKHANG.COM
</title>
<LINK href='style.css' rel=stylesheet>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
</head>
<body bottomMargin=0 leftMargin=0
topMargin=0 rightMargin=0>
<TABLE width="778" border=0 cellSpacing=0
cellPadding=0 align=center>
<TR HEIGHT="100">
<TD  Align=center colspan=5>
<?php include("top.htm")?>
</TD>
</TR>
<!---Khai báo đường phân cách--->
<TR HEIGHT="1">
<TD colspan=5 bgcolor=gray></TD>
</TR>
<TR HEIGHT="280">
<TD vAlign=top width="150">
<?php include("left.htm")?>
</TD>
<!---Khai báo đường phân cách--->
<TD bgcolor=gray width="1"></TD>
<TD vAlign=top width="476">BODY</TD>
<!---Khai báo đường phân cách--->
<TD bgcolor=gray width="1"></TD>
<TD vAlign=top width="150">
<?php include ("right.htm")?>
</TD>
</TR>
<!---Khai báo đường phân cách--->
<TR HEIGHT="1">
<TD colspan=5 bgcolor=gray></TD>
</TR>
<TR HEIGHT="50">
<TD colspan=5 align=center>
<?php include("bottom.htm")?>
</TD
</TR>
</TABLE>
</body>
</html>


   
Khi triệu gọi trang template.php, nội dung của 4 trang left.htmright.htm, top.htm,bottom.htm chèn vào trangtemplate.php như hình 5.

Trang templates.php sau khi chèn

Trong đó, nội dung của trang top.htm định nghĩa tương tự như ví dụ 10
Nội dung trang top.htm


<TABLE width="100%" border=0 cellSpacing=0
cellPadding=0 HEIGHT="100%" align=center>
<TR >
<TD  width="150"  Align=center> LOGO
</TD>
<TD   Align=center> BANNER
</TD>
</TR>
<TR HEIGHT="1">
<TD  colspan=2 bgcolor=gray></TD>
</TR>
<TR HEIGHT="20%" bgcolor=black  class=menu>
<TD  width="150" > Welcome
</TD>
<TD>
Home | Search | Contact | Help
</TD>
</TR>
</TABLE>


    
Nội dung của tập tin left.htm được định nghĩa tương tự như ví dụ 11
Nội dung trang left.htm

<TABLE width="100%" border=0 cellSpacing=0
cellPadding=0 HEIGHT="100%" align=center>
<TR >
<TD  width="150"  Align=center> LEFT
</TD>
</TR>
</TABLE>

    
Nếu có sử dụng trang right.htm thì nội dung của tập tin này được định nghĩa tương tự như ví dụ 12
Nội dung trang right.htm

<TABLE width="100%" border=0 cellSpacing=0
cellPadding=0 HEIGHT="100%" align=center>
<TR >
<TD  width="150"  Align=center> FREE ADV
</TD>
</TR>
</TABLE>

    
Tương tự như vậy, trang bottom.htm có nội dung như ví dụ 13
Nội dung trang bottom.php

<TABLE width="100%" border=0 cellSpacing=0
cellPadding=0 HEIGHT="100%" align=center>
<TR class=text>
<TD Align=center> HUUKHANG.COM<br>
Copyright ©2000-2005. All Rights Reserved.
</TD>
</TR>
</TABLE>
    
Trong mỗi trang khai báo chèn không có các thẻ đóng và mở html, body bởi khi chèn thì nội dung của tập tin được chèn sẽ được chèn vào tập tin bị chèn và trong tập tin bị chèn đã có hai thẻ này.
Kịch bản trình chủ PHP hỗ trợ các tập tin được chèn với các tên mở rộng như htm, PHP, inc, lib, html. Do thực chất của việc khai báo chèn là chèn đoạn mã trong tập tin chèn vào tập tin bọ chèn, trong trường hợp này trang chèn htm hay PHP đều giống nhau đó là lý do tại sao các trang chèn ở trên đều có tên mở rộng là htm.
Tuy nhiên, khi bạn gọi trang chèn này một mình ví dụ tom.htm, nếu bên trong có mã PHP thì mã đó không được thông dịch. Nếu những trang chèn này có nhu cầu gọi một mình thì bạn có thể chuyển chúng thành trang PHP thay vì htm như đã trình bày.
Sau khi có được trang templates.php, bạn có thể sử dụng trang này là mẫu cho các trang khác bằng cách save as thành các trang PHP khác khi lập trình. Khi khai báo chèn tập tin, bạn có thể sử dụng đường dẫn tương đối hoặc tuyệt đối của tập tin chèn so với tập tin bị chèn.


TẬP TIN DÙNG CHUNG

Ngoài cách chèn ở trên, nếu bạn có những hàm sử dụng chung cho các trang PHP khác thì bạn khai báo thành một trang PHP khác sau đó dùng cú pháp chèn tập tin để chèn chúng vào khi có nhu cầu.
Ví dụ trong trường hợp này chúng ta muốn sử dụng chung hàm có tên getPaging nhận 5 tham số $totalRows (tổng số mẩu tin), $curPg (số trang hiện hành), $pg (số trang trình bày), $re (số mẩu tin trên 1 trang), $file (trang php cần gọi) trong tập tin paging.php.

<?php
function paging($totalRows,$curPg,$pg,$re,$file)
{
$paging="";
$mxR = $re;
$mxP = $pg;
if($totalRows%$mxR==0)
$totalPages = (int)($totalRows/$mxR);
 else
 $totalPages = (int)($totalRows/$mxR+1);
$curRow = ($curPg-1)*$mxR+1;
if($totalRows>$mxR)
{
$start=1;
$end=1;
$paging1 ="";
for($i=1;$i<=$totalPages;$i++)
{
if(($i>((int)(($curPg-1)/$mxP))* $mxP) && ($i&lt;=((int)(($curPg-
1)/$mxP+1))* $mxP))
{
if($start==1) $start=$i;
if($i==$curPg)
$paging1 .=  $i."&nbsp;&nbsp;";
else
{
$paging1 .= "<a class=lslink  href='$file";
$paging1 .="&page=".$i."'>".$i;
$paging1 .="</a>&nbsp;&nbsp;";
}
$end=$i;
}
}
$paging.= "Trang :&nbsp;&nbsp;" ;
if($curPg>$mxP)
{
$paging .="<a class=lslink href='$file";
$paging .="&page=".($start-1);
$paging .="'>Previous</a>&nbsp;&nbsp;";
}
$paging.=$paging1;
if(((($curPg-1)/$mxP+1)*$mxP) < $totalPages)
{
$paging .= "<a class=lslink href='$file";
$paging .="&page=".($end+1);
$paging .="'>Next</a>&nbsp;&nbsp;";
}
}
return $paging;
}
?>
Sau đó khai báo trang result.php, chèn tập tin paging.php và gọi hàm getPaging như sau:
<html>
<head>
<title>
Welcome to HUUKHANG.COM
</title>
<LINK href='style.css' rel=stylesheet>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
</head>
<body bottomMargin=0 leftMargin=0 topMargin=0 rightMargin=0>
<?php
include("paging.php");
echo paging(47,2,10,5,"result.php?x=10");
?>
</body>
</html>
    
Kết quả trả về như hình 6 sau

Hàm dùng chung

Các khóa học: Khóa học lập trình php, khóa học drupal, khóa học đồ họa

Thứ Tư, 1 tháng 10, 2014

Cách tạo vị trí menu trong Blog WordPress

Trong quá trình làm blog với WordPress, chắc hẳn là bạn sẽ cảm thấy khó chịu khi chỉ phải sử dụng những vị trí cho menu được cố định do theme đó định sẵn. Chẳng hạn như theme mà bạn đang sử dụng chỉ hỗ trợ cho menu ở vị trí top (trên cùng), và bạn muốn tạo menu ở vị trí bottom (dưới cùng), hay đơn giản là nằm ở vị trí bên trái hoặc bên phải để tạo các danh mục sản phẩm. Hy vọng bài viết sẽ giúp các bạn đang theo học lập trình web với WordPress.
Trước hết chúng ta cần làm theo các bước sau đây :
Bước 1 : Register Menus
Đầu tiên các bạn tìm đến file function.php trong folder theme mà các bạn đang sử dụng. Chúng ta sẽ viết vài dòng code vào file này để đăng ký (register) tên menu của bạn. Các bạn copy đoạn code sau :
PHP Code:
function register_my_menus() { register_nav_menus( array( 'header-menu' => __( 'Header Menu' ) ) );}add_action( 'init', 'register_my_menus' );
Ở đoạn code trên chúng ta đăng ký tên menu là ” Header Menu “. Nếu các bạn muốn hiện nhiều hơn một menu thì làm thế này :
PHP Code:
function register_my_menus() { register_nav_menus( array( 'header-menu' => __( 'Header Menu' ), 'extra-menu' => __( 'Extra Menu' ) ) );}add_action( 'init', 'register_my_menus' );
Chúng ta sẽ có 2 tên menu được đăng ký là ” Header Menu ” và ” Extra Menu “.
Bước 2 : Hiển thị Menu trên Theme
Sau khi đăng ký xong, chúng ta sẽ chọn một vị trí nào đó trong Theme của bạn để hiển thị menu ra đúng vị trí đó. Để làm điều này thì các bạn chỉ cần copy đoạn code sau vào vị trí mà bạn muốn hiển thị menu.
PHP Code:
<?php wp_nav_menu( array( 'theme_location' => 'header-menu' ) ); ?>
Cái quan trọng nhất trong đoạn code trên chúng ta cần chú ý là chỉ định theme_location cho tên menu mà chúng ta đăng ký. Nếu bạn nào muốn chèn thêm class cho menu thì có thể làm thế này :
PHP Code:
wp_nav_menu( array( 'theme_location' => 'extra-menu', 'container_class' => 'my_extra_menu_class' ) );
Bước 3 : Vào Menus Panel
Phần code coi như xong, để hoàn tất thì các bạn vào trang Admin , vào Appearance -> Menus , lúc này trong theme của bạn sẽ xuất hiện thêm một vị trí menu cho bạn.

Hy vọng với thủ thuật đơn giản này sẽ giúp các bạn làm chủ blog WordPress và có thêm kinh nghiệm cho việc lập trình của mình.

Tạo menu đa cấp, multi-level menu đệ quy trong PHP

Trong một website có lẽ sẽ không bao giờ không có menu, tùy vào mục đích thiết kế và ý tưởng mà menu được thể hiện khác nhau ở mỗi trang web. Trong đó menu đa cấp là một dạng phổ biến nhất, hôm nay mình sẽ chia sẽ với mọi người cách tạo menu đa cấp trong PHP, hy vọng đây sẽ là bài viết có ích cho các bạn mới học PHP
Menu là gì? Và tại sao cần phải có menu? Menu là một chỉ mục mà nó trỏ đến một list danh sách bài viết nay một bài viết hoặc một trang web nào đó. Đối với cấp độ người dùng thì menu giống như một sự chỉ dẫn cần thiết cho việc khai thác thông tin website một các hiểu quả. Đối với SEO thì menu cũng rất quan trọng nó giúp đánh giá sự điều hướng liên kết trong SEO.
Qua đó cho thấy sự cần thiết của menu trong WEB, vậy menu đa cấp hay multi-level menu là gì? menu đa cấp hay multi-level menu là một dạng menu mà nó phân ra các chỉ mục rõ ràng cho ta dễ dàng trong việc quản lý tính liên quan của thông tin từ website.
Tạo CSDL cho menu đệ quy
Lúc trước khi muốn tạo menu mấy cấp thì cho mấy bảng dữ liệu và truyền khóa ngoại vào giống như bài tạo menu đa cấp trong  lập trình web với ASP.net còn bây giờ với menu đệ quy thì tất cả các thể loại bạn lưu chỉ cần lưu trong một bảng dữ liệu duy nhất mà thôi.
Đây mình chỉ làm demo nên chỉ cho vào các thuộc tính cần thiết thôi bạn bổ sung vào nha!Trong CSDL trên có ID làm khóa chính, Tên Loại và Loại cha lưu các ID mà nó thuộc vào thể loại đó. Sau đó bạn vào trong host tạo một file menu.php để mình code test thử, bạn nhớ thêm dữ liệu vào để mình kiểm tra xem có đúng với yêu cầu không.
Sau đó khi đã có dữ liệu demo ví dự như trên bạn code menu đa cấp, multi-level menu đệ quy trong PHP như sau:
Mã HTML:
<?php
$hostname = "localhost";
$database = "bcdonline_db";
$username = "root";
$password = "root";
$con = mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_query("set names 'utf8'");
?>
Mã HTML:
<?php
mysql_select_db($database, $con);
$sql = mysql_query("SELECT * FROM theloai WHERE LoaiCha = 0");
echo '<ul>';
while($row = mysql_fetch_array($sql)){      
echo '<li><a href="#" >'.$row['TenLoai'].'</a></li>';   // Tra lai tat ca cac Menu cha
getSubcategory($row['IDLoai']);        // neu ton tai cac Menu con thi se duoc hien thi
}  
echo '</ul>';
/**
* Ham nay tra lai tat cac cac Menu con
*/

Mã HTML:
function getSubcategory($loaicha){
$sql = mysql_query("SELECT * FROM theloai WHERE LoaiCha = ".$loaicha);  
while($row = mysql_fetch_array($sql)){
echo '<ul>';
echo '<li><a href="#" >'.$row['TenLoai'].'</a></li>';
getSubcategory($row['IDLoai']);         // *
echo '</ul>';
}  
}
?>
Mình đã phân rõ các phần, hàm của PHP từ việc kết nối CSDL trong php đến truy vấn và hiển thị ra cây menu bằng thể hiện các thẻ UL và LI.
Bây giờ mình chỉ việc CSS lại là có menu đa cấp, với các này bạn có thể lập vô tận n cấp tuy nhiên mình chỉ cần một bảng dữ liệu mà thôi.
Ngoài ra bạn còn có thể cho vào trong select option để chọn loại cho, việc làm này rất có ích và chuyên nghiệp trong việc code trang admin có thể loại.
Mã HTML:
<label>Loại Cha <span style="color: red;">*</span></label><br />
<select name='LoaiCha'>
<option value="0">Chọn loại cha</option>
<?php
mysql_select_db ($database, $con);
function Menu($parentid = 0, $space = "", $trees = array())
{
if(!$trees)
{
$trees = array();
}
$sql = "SELECT * FROM theloai WHERE LoaiCha = $parentid";
$query = mysql_query($sql);
while($rs = mysql_fetch_assoc($query))
{
$trees[] = array( 'IDLoai' => $rs['IDLoai'],
'TenLoai'=>$space.$rs['TenLoai'],
);
$trees = Menu($rs['IDLoai'], $space.'&nbsp;&nbsp;&nbsp;--&nbsp;&nbsp;', $trees);
}
return $trees;
}
$menu = Menu(0);
foreach($menu as $k => $row)
{
?>
<option value="<?php echo $row['IDLoai']; ?>"><?php echo $row['TenLoai']; ?></option>
<?php
}
?>
</select>
Demo sẽ giống như hình sau:

Kết luận: Bây giờ thì các bạn có thể tạo menu đa cấp, multi-level menu đệ quy trong PHP một cách dễ dàng rồi đúng không nào, hãy CSS và tùy biến lại theo cách mà bạn muốn, chúc mọi người thành công!

Thứ Năm, 2 tháng 1, 2014

Học lập trình php: Học PHP | PHP Framewword

Học lập trình php: Học PHP | PHP Framewword: Có lẽ thành ngữ Framewword Không xa lạ gì với những bạn đã từng học PHP , và giáo trình dạy học lập trình php cũng nhắc tới frameword. Fra...

Thứ Tư, 1 tháng 1, 2014