web-dev-qa-db-ja.com

どのイベントによっても起動されないk2プラグイン

ここにあなたは私のxmlです

<?xml version="1.0" encoding="utf-8"?>
<extension version="3.0" type="plugin" group="k2" method="upgrade">
<name>com_related_news_programme</name>
<author>IES</author>
<creationDate>March 4th, 2015</creationDate>
<copyright>IES</copyright>
<authorEmail></authorEmail>
<authorUrl></authorUrl>
<version>0.1</version>
<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
<description>For Related News Programme</description>
<files>
    <filename plugin="plgiesrelatednewsprogramme">plgiesrelatednewsprogramme.php</filename>
    <filename plugin="plgiesrelatednewsprogramme">plgiesrelatednewsprogramme.xml</filename>
    <filename>plgiesrelatednewsprogramme.sql</filename>
</files>

<install>
    <sql>
          <file driver="mysql" charset="utf8">plgiesrelatednewsprogramme.sql</file>
    </sql>
</install>
<!-- Standard Joomla! plugin parameters to setup the K2 plugin once -->

<!-- K2 plugin parameters which extend K2 backend forms are defined here -->

</extension>

ここはあなたが私のクラスです

// no direct access
defined('_JEXEC') or die ;

/**
 * Example K2 Plugin to render YouTube URLs entered in backend K2 forms to video players in the frontend.
 */

// Load the K2 Plugin API
JLoader::register('K2Plugin', JPATH_ADMINISTRATOR.'/components/com_k2/lib/k2plugin.php');

// Initiate class to hold plugin events
class plgK2iesrelatednewsprogramme extends K2Plugin
{

// Some params
var $pluginName = 'iesrelatednewsprogramme';
var $pluginNameHumanReadable = 'Related News Programme';

function plgK2iesrelatednewsprogramme(&$subject, $params)
{
    parent::__construct($subject, $params);
    echo "fk cc";
}

/**
 * Below we list all available FRONTEND events, to trigger K2 plugins.
 * Watch the different prefix "onK2" instead of just "on" as used in Joomla! already.
 * Most functions are empty to showcase what is available to trigger and output. A few are used to actually output some code for example reasons.
 */

/**
 * Brings the GUI of plugin in the content tab of the k2 item. 
 * 
 * @param   object      The k2 item.
 * @param   string      The view.
 * @param   string      The tab for assign the plugin.
 * @return  object
 */
function onRenderAdminForm(&$item, $type, $tab=''){
    $plugin = new JObject;

    $db = &JFactory::getDBO();
    $query = 'SELECT m.* FROM #__k2_categories AS m WHERE m.`trash` = 0 ORDER BY `parent`, `ordering`';
    $db->setQuery( $query );
    $mitems = $db->loadObjectList();

    $html = "<select>";
    foreach($mitems as $c) {
        $cName = $c->name;
        $cID = $c->id;
        $html.="<option value='$cID'>$cName</option>";
    }
    $html.="</select>";
    echo "<pre>".htmlentities(print_r($mitems , true))."</pre>";
    $plugin->set('fields', $html);
    return $plugin;
}

function onAfterK2Save(&$row, $isNew) 
{

}

function onK2PrepareContent(&$item, &$params, $limitstart)
{
    $mainframe = JFactory::getApplication();
    //$item->text = 'It works! '.$item->text;
}

function onK2AfterDisplay(&$item, &$params, $limitstart)
{
    $mainframe = JFactory::getApplication();
    return '';
}

function onK2BeforeDisplay(&$item, &$params, $limitstart)
{
    $mainframe = JFactory::getApplication();
    return '';
}

function onK2AfterDisplayTitle(&$item, &$params, $limitstart)
{
    $mainframe = JFactory::getApplication();
    return '';
}

function onK2BeforeDisplayContent(&$item, &$params, $limitstart)
{
    $mainframe = JFactory::getApplication();
    return '';
}

// Event to display (in the frontend) the YouTube URL as entered in the item form
function onK2AfterDisplayContent(&$item, &$params, $limitstart)
{
    $mainframe = JFactory::getApplication();

    // Get the output of the K2 plugin fields (the data entered by your site maintainers)
    $plugins = new K2Parameter($item->plugins, '', $this->pluginName);

    $videoURL = $plugins->get('videoURL_item');

    // Check if we have a value entered
    if (empty($videoURL))
        return;

    // Output
    preg_match('/youtube\.com\/watch\?v=([a-z0-9-_]+)/i', $videoURL, $matches);
    $video_id = $matches[1];

    $output = '';

    return $output;
}

// Event to display (in the frontend) the YouTube URL as entered in the category form
function onK2CategoryDisplay(&$category, &$params, $limitstart)
{
    $mainframe = JFactory::getApplication();

    // Get the output of the K2 plugin fields (the data entered by your site maintainers)
    $plugins = new K2Parameter($category->plugins, '', $this->pluginName);

    $output = $plugins->get('videoURL_cat');

    return $output;
}

// Event to display (in the frontend) the YouTube URL as entered in the user form
function onK2UserDisplay(&$user, &$params, $limitstart)
{
    $mainframe = JFactory::getApplication();

    // Get the output of the K2 plugin fields (the data entered by your site maintainers)
    $plugins = new K2Parameter($user->plugins, '', $this->pluginName);

    $output = $plugins->get('videoURL_user');

    return $output;
}

} // END CLASS

プラグインは正しくインストールされ、クラスがインポートされたことを確認するために、phpファイルの最後に何かをエコーし​​ようとしました

しかし、私はplgK2iesrelatednewsprogramme()またはonRenderAdminForm()のいずれかにexit()を入れました

それらのどれも動作しません

1
littleshell

命名の問題があります。クラスがJoomlaが探しているものと正確に一致しない場合、イベントは発生しません。

プラグインがplgiesrelatednewsprogrammeの場合、クラス名はPlgK2Plgiesrelatednewsprogrammeでなければなりません。

2
Anibal