it-swarm.com.de

Plugin-ID wird abgerufen

Ich muss eine System-Plugin-ID abrufen und verwende den folgenden Code mit Erfolg.

function getId($folder, $name)
    {
        // Get a database object
        $db = JFactory::getDbo();

        // Create a new query object
        $query = $db->getQuery(true);

        // Select field to get
        $fields = array(
            $db->quoteName('extension_id')
        );

        // Conditions for which record should be get
        $conditions = array(
            $db->quoteName('element') . ' = ' . $db->quote($name), 
            $db->quoteName('folder') . ' = ' . $db->quote($folder)
        );

        // Set the query and load the result
        $query->select($fields)->from($db->quoteName('#__extensions'))->where($conditions);
        $db->setQuery($query);   
        $id = $db->loadResult();

        return $id;
    }

// Set query values
$folder = 'system';
$name   = 'pugin_name';

// Get plugin id
$id = getId($folder, $name);

Ich würde gerne wissen, ob es eine bessere oder korrektere und angemessenere Art gibt, dies zu tun.

3
n.h.

Dies kann mit dem Plugin-Helfer durchgeführt werden

JPluginHelper::getPlugin('user','myplugin')->id;

Allerdings möchten Sie wahrscheinlich überprüfen, ob getPlugin etwas zurückgegeben hat, bevor Sie versuchen, auf die Eigenschaft id zuzugreifen.

Dies funktioniert in 3.8.7, aber ich weiß nicht, wann es eingeführt wurde.

2
Dom

So bekomme ich Informationen zu Erweiterungen

public function getItemByElement($element, $type, $folder = null)
{
    $dbo = JFactory::getDbo();
    $query = $dbo->getQuery(true);
    $query->select('extension_id, manifest_cache');
    $query->from('#__extensions');

    $query->where('element = '.$dbo->quote($element));
    $query->where('type = '.$dbo->quote($type));

    if($type == 'plugin' && !empty($folder))
    {
        $query->where('folder = '.$dbo->quote($folder));
    }

    $dbo->setQuery($query);
    $extensionRecord = $dbo->loadAssoc();

    if(!is_null($extensionRecord))
    {
            $manifestData = json_decode($extensionRecord['manifest_cache']);
            $extensionRecord['manifest'] = $manifestData;
    }

    return $extensionRecord;
}

Auf diese Weise können Sie alles in der Erweiterungstabelle abrufen

//return a component 
$componentData = getItemByElement('com_content', 'component');

//return a plugin
$pluginData = getItemByElement('codemirror','plugin','editors');

//return a module
$moduleData = getItemByElement('mod_article_archives', 'module');

//return library
$libData = getItemByElement('joomla','library');

Ich habe es nicht auf Sprachen getestet (hatte nicht die Notwendigkeit), aber ich bin sicher, dass es auch dafür funktionieren wird.

Fröhliches Joomla! Ng = ^ D

1
Mathew Lenning