2013-10-21 39 views
0

我有一個Joomla項目,並且我在更改下拉菜單列表中的鏈接時遇到了輕微的問題。從定位標記獲取元素ID並替換href

我有這個菜單及其子菜單。


- firstcat
- secondcat
- thirdcat

HTML:

<ul class="level2"> 
    <li> 
     <a id="firstcat" href="/my_website/index.php/shop/firstcat">First Cat</a> 
    </li> 
    <li> 
     <a id="secondcat" href="/my_website/index.php/shop/secondcat">Second Cat</a> 
    </li> 
    <li> 
     <a id="thirdcat" href="/my_website/index.php/shop/thirdcat">Third Cat</a> 
    </li> 
</ul>` 

默認的Joomla中的菜單項與他們category_alias。但我想將菜單鏈接到他們的category_id。現在,我想要獲取其不同的ID並在數據庫中找到相應的category_ids,並將href替換爲其category_id。

像這樣:

<a id="firstcat" href="/my_website/index.php/shop?16">FirstCat</a> 
<a id="secondcat" href="/my_website/index.php/shop?17">SecondCat</a> 
<a id="thirdcat" href="/my_website/index.php/shop?18">ThirdCat</a> 

我只是想做到這一點通過JavaScript或jQuery的,因爲它需要時間的Joomla挖掘文件,並替換成別名ID。

現在,我只做手動。
$('ul.level2 li a#firstcat').attr('href','/my_website/index.php/shop?catid=16');
$('ul.level2 li a#secondcat').attr('href','/my_website/index.php/shop?catid=17'); $('ul.level2 li a#thirdcat').attr('href','/my_website/index.php/shop?catid=18');

在PHP的一部分,我必須讓他們CATEGORY_ID是這樣的。
<?php
echo $menuItem->alias . '<br/>';
$db = & JFactory::getDBO();
$db->setQuery('SELECT id FROM #__k2_categories WHERE alias="' . $menuItem->alias . '"');
$result = $db->loadResult();
echo $result;
foreach ($result as $res) {
echo $res->id;
}
?>

$menuItem->alias - >獲取當前正在查看的項目的別名。

+0

喜@ f00bar,我已經編輯我的職務。請檢查。 – user2767055

+0

好吧,那麼你必須編寫一些Ajax調用目標這個PHP腳本...然後這個服務器端腳本應該返回一個JSON對象包含所有鏈接的數組與他們的別名,所以你可以取代菜單中的原始鏈接。 )' – Stphane

+0

是的..我做了一些阿賈克斯電話..謝謝.. – user2767055

回答

0

添加這個jQuery腳本....

$("#firstcat").attr("href","/my_website/index.php/shop?16"); 
$("#secondcat").attr("href","/my_website/index.php/shop?17"); 
$("#thirdcat").attr("href","/my_website/index.php/shop?18"); 
+0

嗨,我已經完成了這個..但我只是想,如果我的客戶添加另一個子菜單,他不知道如何編碼。所以我想動態地做。 – user2767055

0

假設你已經在你的JS的array{category_id:"someValue", category_alias:"someValue"}myArr(也許你可以使用Ajax調用得到這個,但是你這樣做)

做類似

var length = myArr.length; 
for(var i = 0 ; i < length ; i++) { 
    $("#" + myArr[i].category_alias).attr("href","/my_website/index.php/shop?" + myArr[i].category_id); 
} 

我沒有時間來測試這一點,所以請隨時糾正我,如果我錯了。

+0

嗨,我有我的數組在php中,我怎麼能通過這個js? – user2767055

+0

難道你不能直接將這些值回顯到頁面中嗎? – Incognito

0

我們!對於這些騷擾傢伙抱歉。但是我必須做一個Ajax調用來使它工作。

我這樣做。

我的PHP:
$q = $_GET['q'];
$db = & JFactory::getDBO();
$db->setQuery('SELECT id FROM #__k2_categories WHERE alias="' . $q . '"');
$result = $db->loadResult();
if (!empty($result)) {
echo $result;
exit();
}

我的腳本:
<script type="text/javascript">
(function($){
$(document).ready(function() {
$('.level2').click(function(e) {
CurrElId = jQuery(this).attr("id");
$.ajax({
type: 'GET',
url: location.href,
data: 'q='+CurrElId,
success: function(data) {
var basepath = "/mywebsite/index.php/shop";
location.href = basepath+'?'+data;
}
});
e.preventDefault();
});
});
})(jQuery);
</script>

+0

這可能工作,但這是很多工作。想象一下,製作一個Ajax調用每次點擊鏈接。您可能需要重新編碼以立即查詢所有內容,然後將其渲染爲href。 – Incognito

+0

重新編碼?我覺得很難,因爲這是joomla CMS。挖joomla核心需要時間。 – user2767055