php 隨機(jī)排序廣告的實(shí)現(xiàn)代碼
更新時(shí)間:2011年05月09日 19:37:07 作者:
博客流行在側(cè)邊欄放置 4 到 6 個(gè) 125x125 的廣告, 但一般的擺放順序存在問(wèn)題. 如果廣告位置被固定, 各個(gè)位置的天然關(guān)注度肯定是不一樣的
投放廣告的人都很關(guān)注他的廣告會(huì)放在哪個(gè)位置, 因?yàn)檫@可能影響點(diǎn)擊次數(shù), 甚至是否在第一屏顯示. 就這個(gè)問(wèn)題, 其實(shí)很容易解決, 只要隨機(jī)顯示廣告即可.
代碼如何實(shí)現(xiàn)? 在這我推薦兩種隨機(jī)顯示廣告的處理辦法.
在后端處理
在后端排序好再輸出頁(yè)面. 將廣告節(jié)點(diǎn)用數(shù)組存放, 對(duì)數(shù)組進(jìn)行隨機(jī)排序, 再輸出經(jīng)過(guò)排序的數(shù)組. 參考代碼 (PHP) 如下:
// 用數(shù)組存放廣告列表
$ads = array('<a href="#"><img src="ad-125x125.png" alt="廣告 1" width="125" height="125" /></a>'
,'<a href="#"><img src="ad-125x125.png" alt="廣告 2" width="125" height="125" /></a>'
,'<a href="#"><img src="ad-125x125.png" alt="廣告 3" width="125" height="125" /></a>'
,'<a href="#"><img src="ad-125x125.png" alt="廣告 4" width="125" height="125" /></a>'
);
// 對(duì)數(shù)組進(jìn)行隨機(jī)排序
shuffle($ads);
// 輸出經(jīng)過(guò)排序的數(shù)組
$html = '';
foreach ($ads as $ad) {
$html .= $ad;
}
echo $html;
我們來(lái)擴(kuò)展一下, 如果我是站長(zhǎng), 預(yù)留了 4 個(gè)廣告位, 但現(xiàn)在只有 3 個(gè)在投放; 我想在空置的廣告位放置一個(gè) "虛位以待" 的廣告招租鏈接, 并顯示在最后, 該如何處理呢? 在排序完成之后再插放廣告招租鏈接就可以了.
// 用數(shù)組存放廣告列表
$ads = array('<a href="#"><img src="ad-125x125.png" alt="廣告 1" width="125" height="125" /></a>'
,'<a href="#"><img src="ad-125x125.png" alt="廣告 2" width="125" height="125" /></a>'
,'<a href="#"><img src="ad-125x125.png" alt="廣告 3" width="125" height="125" /></a>'
);
// 對(duì)數(shù)組進(jìn)行隨機(jī)排序
shuffle($ads);
// 輸出經(jīng)過(guò)排序的數(shù)組
$html = '';
foreach ($ads as $ad) {
$html .= $ad;
}
// 添加廣告招租鏈接
$html .= '<a href="#"><img src="sell-ad-125x125.png" alt="虛位以待" width="125" height="125" /></a>';
echo $html;
我就是用這個(gè)方法來(lái)輸出 125x125 廣告的, 因?yàn)樗庇^(guān)可靠, 處理方便. 但是如果你希望對(duì)頁(yè)面做靜態(tài)化, 建議選用 JS 隨機(jī)排序的方法.
在前端處理
在后端按原有循序輸出, 在頁(yè)面通過(guò) JavaScript 重新排序. 假設(shè)頁(yè)面輸出廣告區(qū)域的 HTML 片段如下.
<div id="ads">
<a href="#"><img src="ad-125x125.png" alt="廣告 1" width="125" height="125" /></a>
<a href="#"><img src="ad-125x125.png" alt="廣告 2" width="125" height="125" /></a>
<a href="#"><img src="ad-125x125.png" alt="廣告 3" width="125" height="125" /></a>
<a href="#"><img src="ad-125x125.png" alt="廣告 4" width="125" height="125" /></a>
</div>
我們可以通過(guò) JS 來(lái)對(duì)廣告進(jìn)行重新排序. 參考代碼如下:
<div id="ads" style="display:none;">
<a href="#"><img src="ad-125x125.png" alt="廣告 1" width="125" height="125" /></a>
<a href="#"><img src="ad-125x125.png" alt="廣告 2" width="125" height="125" /></a>
<a href="#"><img src="ad-125x125.png" alt="廣告 3" width="125" height="125" /></a>
<a href="#"><img src="ad-125x125.png" alt="廣告 4" width="125" height="125" /></a>
</div>
<div id="random-ads" style="display:none;">
</div>
<script type="text/javascript">
//<![CDATA[
var source = document.getElementById('ads');
var target = document.getElementById('random-ads');
var ads = source.getElementsByTagName('a');
// 下標(biāo)數(shù)組
var arr = new Array();
for(var i=0; i<ads.length; i++) {
arr[i] = i;
}
// 隨機(jī)排序
function randomSort(a, b){
var tmp = parseInt((Math.random() + 0.5), 10);
return tmp ? a-b : b-a;
}
// 將老的廣告區(qū)的節(jié)點(diǎn)隨機(jī)插放到新的廣告區(qū)
arr.sort(randomSort);
for(var i=0; i<arr.length; i++) {
target.appendChild(ads[arr[i]].cloneNode(true));
}
// 顯示新的廣告區(qū)和移除老的廣告區(qū)
source.parentNode.removeChild(source);
target.style.display = 'block';
//]]>
</script>
如果有如同方法 1 那樣的擴(kuò)展需求, 將空廣告位顯示在最后, 且顯示廣告招租鏈接, 該如何處理? 這個(gè)當(dāng)作課后習(xí)題吧...
代碼如何實(shí)現(xiàn)? 在這我推薦兩種隨機(jī)顯示廣告的處理辦法.
在后端處理
在后端排序好再輸出頁(yè)面. 將廣告節(jié)點(diǎn)用數(shù)組存放, 對(duì)數(shù)組進(jìn)行隨機(jī)排序, 再輸出經(jīng)過(guò)排序的數(shù)組. 參考代碼 (PHP) 如下:
復(fù)制代碼 代碼如下:
// 用數(shù)組存放廣告列表
$ads = array('<a href="#"><img src="ad-125x125.png" alt="廣告 1" width="125" height="125" /></a>'
,'<a href="#"><img src="ad-125x125.png" alt="廣告 2" width="125" height="125" /></a>'
,'<a href="#"><img src="ad-125x125.png" alt="廣告 3" width="125" height="125" /></a>'
,'<a href="#"><img src="ad-125x125.png" alt="廣告 4" width="125" height="125" /></a>'
);
// 對(duì)數(shù)組進(jìn)行隨機(jī)排序
shuffle($ads);
// 輸出經(jīng)過(guò)排序的數(shù)組
$html = '';
foreach ($ads as $ad) {
$html .= $ad;
}
echo $html;
我們來(lái)擴(kuò)展一下, 如果我是站長(zhǎng), 預(yù)留了 4 個(gè)廣告位, 但現(xiàn)在只有 3 個(gè)在投放; 我想在空置的廣告位放置一個(gè) "虛位以待" 的廣告招租鏈接, 并顯示在最后, 該如何處理呢? 在排序完成之后再插放廣告招租鏈接就可以了.
復(fù)制代碼 代碼如下:
// 用數(shù)組存放廣告列表
$ads = array('<a href="#"><img src="ad-125x125.png" alt="廣告 1" width="125" height="125" /></a>'
,'<a href="#"><img src="ad-125x125.png" alt="廣告 2" width="125" height="125" /></a>'
,'<a href="#"><img src="ad-125x125.png" alt="廣告 3" width="125" height="125" /></a>'
);
// 對(duì)數(shù)組進(jìn)行隨機(jī)排序
shuffle($ads);
// 輸出經(jīng)過(guò)排序的數(shù)組
$html = '';
foreach ($ads as $ad) {
$html .= $ad;
}
// 添加廣告招租鏈接
$html .= '<a href="#"><img src="sell-ad-125x125.png" alt="虛位以待" width="125" height="125" /></a>';
echo $html;
我就是用這個(gè)方法來(lái)輸出 125x125 廣告的, 因?yàn)樗庇^(guān)可靠, 處理方便. 但是如果你希望對(duì)頁(yè)面做靜態(tài)化, 建議選用 JS 隨機(jī)排序的方法.
在前端處理
在后端按原有循序輸出, 在頁(yè)面通過(guò) JavaScript 重新排序. 假設(shè)頁(yè)面輸出廣告區(qū)域的 HTML 片段如下.
復(fù)制代碼 代碼如下:
<div id="ads">
<a href="#"><img src="ad-125x125.png" alt="廣告 1" width="125" height="125" /></a>
<a href="#"><img src="ad-125x125.png" alt="廣告 2" width="125" height="125" /></a>
<a href="#"><img src="ad-125x125.png" alt="廣告 3" width="125" height="125" /></a>
<a href="#"><img src="ad-125x125.png" alt="廣告 4" width="125" height="125" /></a>
</div>
我們可以通過(guò) JS 來(lái)對(duì)廣告進(jìn)行重新排序. 參考代碼如下:
復(fù)制代碼 代碼如下:
<div id="ads" style="display:none;">
<a href="#"><img src="ad-125x125.png" alt="廣告 1" width="125" height="125" /></a>
<a href="#"><img src="ad-125x125.png" alt="廣告 2" width="125" height="125" /></a>
<a href="#"><img src="ad-125x125.png" alt="廣告 3" width="125" height="125" /></a>
<a href="#"><img src="ad-125x125.png" alt="廣告 4" width="125" height="125" /></a>
</div>
<div id="random-ads" style="display:none;">
</div>
<script type="text/javascript">
//<![CDATA[
var source = document.getElementById('ads');
var target = document.getElementById('random-ads');
var ads = source.getElementsByTagName('a');
// 下標(biāo)數(shù)組
var arr = new Array();
for(var i=0; i<ads.length; i++) {
arr[i] = i;
}
// 隨機(jī)排序
function randomSort(a, b){
var tmp = parseInt((Math.random() + 0.5), 10);
return tmp ? a-b : b-a;
}
// 將老的廣告區(qū)的節(jié)點(diǎn)隨機(jī)插放到新的廣告區(qū)
arr.sort(randomSort);
for(var i=0; i<arr.length; i++) {
target.appendChild(ads[arr[i]].cloneNode(true));
}
// 顯示新的廣告區(qū)和移除老的廣告區(qū)
source.parentNode.removeChild(source);
target.style.display = 'block';
//]]>
</script>
如果有如同方法 1 那樣的擴(kuò)展需求, 將空廣告位顯示在最后, 且顯示廣告招租鏈接, 該如何處理? 這個(gè)當(dāng)作課后習(xí)題吧...
您可能感興趣的文章:
- 強(qiáng)制PHP命令行腳本單進(jìn)程運(yùn)行的方法
- PHP運(yùn)行時(shí)強(qiáng)制顯示出錯(cuò)信息的代碼
- php廣告加載類(lèi)用法實(shí)例
- 適用于抽獎(jiǎng)程序、隨機(jī)廣告的PHP概率算法實(shí)例
- php 廣告調(diào)用類(lèi)代碼(支持Flash調(diào)用)
- 用PHP實(shí)現(xiàn)的隨機(jī)廣告顯示代碼
- 用PHP實(shí)現(xiàn)小型站點(diǎn)廣告管理
- 用PHP實(shí)現(xiàn)小型站點(diǎn)廣告管理(修正版)
- 隨機(jī)廣告顯示(PHP函數(shù))
- php強(qiáng)制運(yùn)行廣告的方法
相關(guān)文章
PHP基于單例模式實(shí)現(xiàn)的mysql類(lèi)
這篇文章主要介紹了PHP基于單例模式實(shí)現(xiàn)的mysql類(lèi),涉及PHP基于單例模式封裝對(duì)MySQL數(shù)據(jù)庫(kù)的連接及查詢(xún)相關(guān)技巧,需要的朋友可以參考下2016-01-01PHP的RSA加密解密方法以及開(kāi)發(fā)接口使用
本篇文章給大家詳細(xì)介紹了PHP開(kāi)發(fā)接口使用RSA進(jìn)行加密解密方法,對(duì)此有興趣的朋友可以學(xué)習(xí)下。2018-02-02自己在做項(xiàng)目過(guò)程中學(xué)到的PHP知識(shí)收集
以前沒(méi)學(xué)過(guò)PHP,最近剛好一個(gè)項(xiàng)目需要用到,我就決定一邊學(xué)一邊做PHP2012-08-08Ext.data.PagingMemoryProxy分頁(yè)一次性讀取數(shù)據(jù)的實(shí)現(xiàn)代碼
Ext.data.PagingMemoryProxy分頁(yè)一次性讀取數(shù)據(jù)的實(shí)現(xiàn)代碼,需要的朋友可以參考下。2010-04-04實(shí)例說(shuō)明js腳本語(yǔ)言和php腳本語(yǔ)言的區(qū)別
今天小編就為大家分享一篇關(guān)于實(shí)例說(shuō)明js腳本語(yǔ)言和php腳本語(yǔ)言的區(qū)別,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-04-04php中郵箱地址正則表達(dá)式實(shí)現(xiàn)與詳解
本文章不但要講述了關(guān)于正則達(dá)式而且還講述了關(guān)于郵箱正則的構(gòu)成用法詳解,有需要了解的朋友可以參考一下,同時(shí)我們也提供了多種不同的郵箱驗(yàn)證實(shí)例2012-04-04微信公眾平臺(tái)開(kāi)發(fā)教程⑥ 微信開(kāi)發(fā)集成類(lèi)的使用圖文詳解
這篇文章主要介紹了微信公眾平臺(tái)開(kāi)發(fā)之微信開(kāi)發(fā)集成類(lèi)的使用,結(jié)合圖文形式詳細(xì)分析了微信開(kāi)發(fā)集成類(lèi)的原理、功能、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-04-04