[英]Joomla Ajax jQuery
你好!
我對joomla中的組件的“自定義”分頁有問題。
我想做一些用戶文章的列表,這些文章將顯示每頁3個帖子的示例。 我的目標是在不刷新網頁的情況下進行分頁。 Ajax是最好的選擇。 我現在正在與它斗爭並且到目前為止遇到了最困難的問題(我試圖在幾個小時內搜索我的問題的答案)。
user.php的
<div class="userRightContainer">
<div class="blogArticlesBlock">
<div class="userItemTagsBlock"><b>Debaty na forum użytkownika(<?php echo $joomla_rows; ?>)</b></div>
<?//artykuly joomla
?>
<div id="Joomla_block" class="Joomla_block">
<? require_once("Db_joomla.php") ?>
</div>
...
...
...
<script type="text/javascript">
function jm_previous(arg) {
if(arg < 0)
changePagination(0);
else
changePagination(arg);
}
function jm_next(argument) {
changePagination(argument);
}
function changePagination(pageId){
// $("#Joomla_block").html('');
jQuery.ajax({
type: "GET",
// url: "Db_joomla.php",
url: window.location.href,
data: { jm_start: pageId},
success: function(result){
alert(result);
$("#Joomla_block").html(result);
}
});
}
</script>
Db_joomla.php
defined('_JEXEC') or die;
//
$offset_jm=$_GET["jm_start"];
if(empty($offset_jm)) $offset_jm=0;
//
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('id', 'title', 'introtext', 'created_by', 'state')));
$query->from($db->quoteName('#__content'));
$query->where($db->quoteName('created_by') . ' LIKE ' . $db->quote(JRequest::getInt('id')));
$query->where('state', '1');
$query->setLimit($joomla_page,$offset_jm);
$db->setQuery($query);
$joomla=$db->loadObjectList();
$joomla_rows = $db->loadResult();
if($joomla_rows > 0){
foreach($joomla as $row) {
if ($row->created_by != JRequest::getInt('id')) continue;
?>
<div class="articlesBlock" style="margin: 5px;">
<!-- Avatar -->
<img src="<?php echo $this->user->avatar; ?>" alt="<?php echo htmlspecialchars($this->user->name, ENT_QUOTES, 'UTF-8'); ?>" style="width:50px; height:auto;border: 1px solid #ccc; float:left;margin: 5px;" />
<div class="blogArticlestTitle" style="padding-left:60px;font-weight:bold;word-wrap:break-word;"><a href="index.php?option=com_content&view=article&id=<?php echo $row->id;?>"><?php echo $row->title ?></a></div>
<div class="blogArticlesDescription" style="padding: 5px;padding-top:10px;"><?php if (str_word_count($row->introtext) > 100) echo /* Wstawia komentarz i ogranicza tekst do stu znaków, po czym dodaje kropki.*/ substr(strip_tags($row->introtext), 0, 100) . "..."; else echo strip_tags($row->introtext);?>
</div>
<div class="CommentViewMore">
<a href="index.php?option=com_content&view=article&id=<?php echo $row->id;?>">Przejdź do artykułu ›</a>
</div>
</div>
<?php
/*
$item_counting++;
if($item_counting == 5) break;*/
}
//echo $pageNav->getListFooter( ); //Displays a nice footer
?>
<ul class="pager">
<li><a href="javascript:void(0)" id="jm_previous" onclick="jm_previous(<? echo $offset_jm-$joomla_page; ?>)" style="background-color: #000;float:left;"><<</a></li>
<li><a href="javascript:void(0)" id="jm_next" onclick="jm_next(<? echo $offset_jm+$joomla_page; ?>)" style="background-color: #000;float:right;">>></a></li>
</ul>
<a class ="view_more_link"href="http://konfederaci.pl/index.php/component/komento/profile/id/<?php echo JRequest::getInt('id');?>" title="Artykuły użytkownika">Zobacz wszystkie artykuły</a>
<?php
}
else
{
echo "Ten użytkownik nie posiada żadnych postów na forum.";
}
現在一些圖片:
Ps:如果我選擇“url:”Db_joomla.php“在這個腳本中它將不會做任何事情。仍然不起作用(和相同的例外)。
依靠Joomla的Ajax接口而不是實現你的接口總是一個更好的主意。 它非常簡單,非常高效,而且很有效。 我們已經寫了如何在這里使用它。
基本上,您將創建/修改一個簡單的模塊,該模塊將包含一個用於處理調用的函數(在其名稱末尾包含單詞Ajax
)。
然后,您將需要添加一個簡單的jquery代碼,該代碼將通過com_ajax
接口調用該模塊。 請注意,您需要確保將模塊分配給菜單項,因為您需要該菜單項的ID用於ajax調用。
簡單的實踐:你的ajax后端部分應該只包含PHP代碼。 (獲取數據庫查詢)。 接下來,這個PHP應該返回帶有結果的JSON數組。 您為ajax請求獲取此JSON並為您的視圖推送此數據。 簡單地說,我使用我的插件“plg_ajax” (安裝后見方法onAjaxAjax())。 使用com_ajax的此插件的示例腳本發布:
type: "POST", async: true, url: "index.php?option=com_ajax&plugin=ajax&format=json", dataType: "json",
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.