[英]Joomla get plugin id
我寫了一個Joomla插件,最終會加載一個庫。
庫的路徑是一個插件參數,因此當路徑不正確時,會在后端彈出一條消息,以及編輯插件參數的鏈接:
/administrator/index.php?option=com_plugins&view=plugin&client=site&task=edit&cid[]=36
看到最后的36? 這是我的插件在數據庫中的id(表jos_plugins)。
我的問題是這個id在安裝時會發生變化,也就是說,在不同的安裝上,這將是另一回事。 所以我需要以編程方式找到這個id。
問題是我無法從插件對象本身找到這個id(至於為什么不能,這將是joomla可以說是短視的設計決策)。
因此,除非你知道一些巧妙的技巧,(我已經檢查並仔細檢查了JPlugin和JPluginHelper類),否則我將使用數據庫。
編輯; 一些有用的鏈接:
猜猜我會用最后一個鏈接的智慧......
對於joomla 2.5.x和3.x,Christian的功能改進將是;
function getId($folder,$name){
$db= JFactory::getDBO();
$sql='SELECT extension_id FROM #__extensions WHERE folder ="'.$db->getEscaped($folder).'" AND element ="'.$db->getEscaped($name).'"';
$db->setQuery($sql);
if(!($plg=$db->loadObject())){
JError::raiseError(100,'Fatal: Plugin is not installed or your SQL server is NUTS.');
}else return (int)$plg->extension_id;
}
function getId($folder,$name){
$db=&JFactory::getDBO();
$sql='SELECT `id` FROM `#__plugins` WHERE `folder`="'.$db->getEscaped($folder).'" AND `element`="'.$db->getEscaped($name).'"';
$db->setQuery($sql);
if(!($plg=$db->loadObject())){
JError::raiseError(100,'Fatal: Plugin is not installed or your SQL server is NUTS.');
}else return (int)$plg->id;
}
這就是訣竅。
在Joomla 3.x這是方式!
function pluginId($name,$type,$element,$folder)
{
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query
->select($db->quoteName('a.extension_id'))
->from($db->quoteName('#__extensions', 'a'))
->where($db->quoteName('a.name').' = '.$db->quote($name))
->where($db->quoteName('a.type').' = '.$db->quote($type))
->where($db->quoteName('a.element').' = '.$db->quote($element))
->where($db->quoteName('a.folder').' = '.$db->quote($folder));
$db->setQuery($query);
$db->execute();
if($db->getNumRows()){
return $db->loadResult();
}
return false;
}
然后使用該功能:
$pluginId = pluginId('plg_system_getbibleactivitycron','plugin','getbibleactivitycron','system');
if($pluginId){
echo 'Plugin id is: '. $pluginId;
} else {
echo 'Plugin not installed';
}
也許這個代碼對你有用,你可以在模態中使用它
$urla= JRequest::getVar('id'); // id article
$urlb=JURI::current();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.