我想创建一个joomla插件,它将一个值插入到Joomla组件的数据库表中。我已经通过Joomla Extension Manager成功构建并安装了该插件,但是当启用该插件时,我看不到在数据库表中插入的值。这是我从插件php
代码审查:如何向自定义插件插入值到Joomla 2.5数据库
<?php
######################################################################
# Outkast Plugin #
######################################################################
// no direct access
defined('_JEXEC') or die('Restricted access');
jimport('joomla.plugin.plugin');
jimport('joomla.html.parameter');
class plgSystemOutkastplugin extends JPlugin
{
function plgSystemOutkastplugin()
{
$db = JFactory::getDbo();
$name = "http://www.youtube.com/embed/PWgvGjAhvIw?rel=0";
$columns = array('title', 'link_youtube');
$name = "http://www.youtube.com/embed/PWgvGjAhvIw?rel=0";
$values = array($db->quote('Outkast'), $db->quote($name));
$query->insert($db->quoteName('#__mycomponent_outkastvideos'))
->columns($db->quoteName($columns))
->values(implode(',', $values));
$db->setQuery($query);
$db->query();
return true;
}
}
?>
编辑更新13年11月7日: 我加入从插件xml
文件来帮助提供一些更多的上下文的问题。最终我有上面的php文件和下面的xml的组合来创建整个插件包。当我在Joomla 2.5站点上安装组件时,它安装时没有错误。然后,当我启用该插件时,我将两个视频实例插入到数据库中。当我禁用插件时,我会得到一个插入到数据库中的视频实例。这不是我所追求的。
理想情况下,当用户安装插件时,我希望它自动启用该插件。如果插件已启用,则视频将显示在数据库中。如果插件被禁用,那么视频将不会显示在数据库中。这里是目前的xml
代码:
<?xml version="1.0" encoding="utf-8"?>
<install version="1.7" type="plugin" group="system">
<name>Add Outkast</name>
<author>My Name</author>
<creationDate>November 2013</creationDate>
<copyright>Copyright (C) 2013 All rights reserved.</copyright>
<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
<authorEmail>[email protected]</authorEmail>
<authorUrl>myURL.com</authorUrl>
<version>1.7</version>
<description>This Plugin adds Outkast's Video Hey Ya.</description>
<files>
<filename plugin="outkastplugin">outkastplugin.php</filename>
</files>
</install>
嘿!这很好用!我看到的唯一小问题是,每次在扩展管理器中启用或禁用插件时,都会使插入次数翻倍。所以在初次安装时有一个outkast,然后在启用后有两个outkast行。禁用再次插入2个,共4个?任何想法为什么? – Presto
啊好吧。当插件安装后或者之后,您想要将值插入数据库吗?安装时最好使用 – Lodder
(因为它目前正在运行)。有没有办法使它启用或禁用时不会翻倍? – Presto