当前位置: 首页 > 知识库问答 >
问题:

如何使用自定义插件将值插入Joomla 2.5 DB

乜安志
2023-03-14

我正在尝试创建一个joomla插件,它将向joomla组件的数据库表中插入一个值。我已经通过Joomla扩展管理器成功构建并安装了该插件,但是当我启用该插件时,我没有看到数据库表中插入的值。下面是我要查看的插件中的php代码:

<?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;

}        

}
?>

编辑更新11/07/13:我正在从插件中添加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>my@email.com</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>

共有1个答案

闾丘选
2023-03-14

对,我用了不同的方法。我这样做是使用一个SQL文件,安装时执行。

以下是所有东西的外观:

结构:

file - outkastplugin.xml
file - outkastplugin.php
folder - sql 
  >> file - install.mysql.utf8.sql

outkastplugin.xml

<?xml version="1.0" encoding="utf-8"?>
<extension version="2.5" type="plugin" group="system" method="upgrade">
   <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>my@email.com</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>
      <folder>sql</folder>
   </files>

   <install>
      <sql>
        <file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file>
      </sql>
   </install>

</extension>

outkastplugin.php:

<?php

defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.plugin.plugin');
jimport( 'joomla.html.parameter');

class plgSystemOutkastplugin extends JPlugin
{

    function plgSystemOutkastplugin()
    {

    }        

}
?>

安装mysql。utf8。sql:

CREATE TABLE IF NOT EXISTS `#__mycomponent_outkastvideos` (
        `id` int(10) NOT NULL AUTO_INCREMENT,
        `title` varchar(255) NOT NULL,
        `link_youtube` varchar(255) NOT NULL,

  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

INSERT INTO `#__mycomponent_outkastvideos` (`title`, `link_youtube`) VALUES ('Outkast', 'http://www.youtube.com/embed/PWgvGjAhvIw?rel=0');

我已经通过电子邮件向您发送了完整的邮政包。

希望这有助于:)

 类似资料:
  • 问题内容: 我正在尝试创建字符串到字符串的映射。以下是我尝试过的方法,但两种方法均无效。它出什么问题了? 问题答案: 这里有两个问题。 首先,您不能像其他语言那样使用语法。方括号仅适用于Java中的数组,因此只能与整数索引一起使用。 是正确的,但这是一条语句,因此必须存在于方法块中。在类级别只能存在字段声明。这是一个示例,其中所有内容都在方法的本地范围内: 如果要将映射初始化为类的静态字段,则可以

  • 下面的这些代码可以帮助您通过CSS文件和SCSS文件,创建和编译 CSS 和 JS 文件的source-maps。 安装依赖 为了运行编译和压缩任务,你必须安装 node 和 npm。 命令行 // (Optional) Install Gulp module globally npm install gulp -g // Install fullpage's build dependen

  • 问题内容: 我正在用Gradle创建一个构建过程,我想提供一个使用Java代码的插件。Gradle 插件文档 说 这是可能的: 您可以使用任何喜欢的语言来实现自定义插件,前提是该实现最终会编译为字节码。对于此处的示例,我们将使用Groovy作为实现语言。如果需要,可以改用Java或Scala。 但是,经过数小时的谷歌搜索和阅读之后,我还没有找到有关如何使用Java创建Gradle自定义插件的任何说

  • 问题内容: 我正在使用此代码,而我感到无奈: 它们全部失败并抛出此错误: 致命错误 :无法在/ opt / …中通过引用传递参数2 问题答案: 我只是在学习PDO,但我认为您需要使用,而不是 接受要引用的变量,并且在调用时不提取值。我在对php文档的评论中发现了这一点: 编辑:PS您可能会想这样做,但是它并不适合所有人(感谢您将Shaver进行举报。)

  • 我已经构建了一个定制的gradle插件,我正试图将其发布到一个私有的maven repo。我使用插件来实现这一点。在经历了很多麻烦之后,我查看了google play services插件的实现(https://github.com/google/play-services-plugins/blob/master/google-services-plugin/publish.gradle)并试图复

  • 我为gradle创建了一个简单的基于groovy的插件。 在我的毕业典礼上。构建文件我有以下内容: 一切都很好,我得到了一个构建目录和一个. jar在lib文件夹中生成,我想这是独立的插件。 现在我想知道如何将这个新插件注册到我的gradle安装中,这样我就可以应用插件了:“myPlugin”我做了以下工作: 将插件放入安装中的插件文件夹 创建了myplugin.properties文件并将其包含