我想創建一個移動網站,我試圖讓我的導航適應屏幕大小。導航的HTML結構將發生變化,我知道我可以使用CSS和@MEDIA調用。但是,它不適用於我的情況,因爲我使用Foundation from ZURB框架,我需要更改元素,從UL到DD或DL等。如何使用Joomla和Ajax檢測屏幕大小來適應我的導航?
我環顧了幾個來源,發現由於PHP在我的AJAX準備好之前首先加載,所以我無法讓導航在移動設備上正確顯示。
我需要一些方法來檢測我的屏幕大小,並將該值傳遞給我在Joomla中的PHP菜單生成函數。
我嘗試以下:
window.onload = function(){
var height = $(window).height();
var width = $(window).width();
$.ajax({
type: "POST",
url: '',
data: {
"height": height,
"width": width
},
success: function (data) {
},
});
}
mod_menu樣品:
<?php
require_once('FirePHPCore/FirePHP.class.php');
$firephp = FirePHP::getInstance(true);
ob_start();
$width = $_POST['width'];
$firephp->group('Test Group');
$firephp->log('Width');
$firephp->log($width);
$firephp->groupEnd();
?>
if ($width > 767) {
?>
<!-- The class on the root UL tag was changed to match the Foundation nav style -->
<ul class="nav-bar<?php echo $params->get('class_sfx');?>"<?php
$tag = '';
if ($params->get('tag_id')!=NULL) {
$tag = $params->get('tag_id').'';
echo ' id="'.$tag.'"';
}
?>>
<?php
foreach ($list as $i => &$item) :
$id = '';
if($item->id == $active_id)
{
$id = ' id="current"';
}
$class = '';
if(in_array($item->id, $path))
{
$class .= 'current ';
}
if($item->deeper) {
$class .= 'parent ';
}
$class = ' class="'.$class.'item'.$item->id.'"';
echo '<li'.$id.$class.'>';
// Render the menu item.
switch ($item->type) :
case 'separator':
case 'url':
case 'component':
require JModuleHelper::getLayoutPath('mod_menu', 'default_'.$item->type);
break;
default:
require JModuleHelper::getLayoutPath('mod_menu', 'default_url');
break;
endswitch;
// The next item is deeper.
if ($item->deeper) {
echo '<ul>';
}
// The next item is shallower.
elseif ($item->shallower) {
echo '</li>';
echo str_repeat('</ul></li>', $item->level_diff);
}
// The next item is on the same level.
else {
echo '</li>';
}
endforeach;
?></ul>
<?php } ?>
然後我使用if條件來檢查屏幕的寬度和選擇導航的類型。一個導航使用UL結構,另一個必須使用DL DD結構。
我用FirePHP來查看頁面是如何加載的,我的導航沒有顯示出來,因爲PHP在Ajax準備好之前首先加載,所以我沒有看到我的導航。我需要我的PHP等待,直到Ajax準備好或頁面的一部分等待。我不確定該從哪裏出發。
我在看Joomla MooTools,不確定是否可以利用它來等待Ajax在加載頁面之前加載。
我知道,有更簡單的方法,比如在Joomla中製作一個全新的菜單項,或者在Joomla中隱藏東西來讓它工作,但我想要一個更乾淨優雅的方式。
如果任何人有任何代碼示例。請發佈。
我已經看到了這一點,我不打算使用CSS和@Media來解決我的導航問題,因爲Foundation已經在整個網站中爲我的導航和整體樣式使用了媒體樣式。 – Vyache 2012-08-14 18:27:03
我不知道我是否使用標題,是否會讓我的屏幕大小? – Vyache 2012-08-20 17:29:31