在模板中显示 Joomla 插件字段数据 |第一个 K2 扩展



我有一个问题,我是Joomla和K2的新手,所以任何帮助将不胜感激。

我正在开发一个基于示例 K2 插件 (http://getk2.org/extend/extensions/90-example-k2-plugin-for-developers) 的简单 joomla 插件。

我正在尝试创建的是类别的 K2 扩展,因此我将能够向类别添加额外的内容。我已经进行了搜索,并且没有插件或扩展可以满足我对Joomal 3.x项目的需求。

对于每个类别,我在后端将信息设置为货币、语言、国家等。我通过 xml 文件将此字段添加到后端。

我已经尝试了几种方法,但我无法在我的 k2 模板上访问此信息。当我转储参数时,我从 xml 中获取默认值,但不是已经为类别保存的值。

所以我能够使用插件模板轻松显示内容,但由于缺陷,唯一可用于类别的功能将是 onK2CategoryDisplay,但我在这里要实现的是调用 K2 模板中的字段值,例如标题旁边或图库下方。

我找到了这一行,但它只显示保存在 xml 文件上的默认文本,而不是新内容。如果我不清楚,请告诉我,我会更新这篇文章。提前谢谢。

    $plugin = JPluginHelper::getPlugin('k2', 'categories');
    $pluginParams = new JRegistry();
    $pluginParams->loadString($plugin->params);
    $param = $pluginParams->get('localCountry_cat'); 
    var_dump($param);

以下是类别.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <extension version="3.1" type="plugin" group="k2" method="upgrade">
        <name>Categories K2 Plugin</name>
        <files>
            <filename plugin="categories">categories.php</filename>
            <folder>categories</folder>
        </files>
<config>
    <fields name="params">
        <fieldset name="basic">
            <field name="localCountry_cat" type="text" size="80" default="test" label="Country local name" description="" />
            <field name="capital_cat" type="text" size="80" default="test" label="Capital" description="" />
            <field name="languages_cat" type="text" size="80" default="test" label="Official Languages" description="" />
        </fieldset>
    </fields>
</config>
<!-- K2 backend field parameters -->
<fields group="category">
            <field name="localCountry_cat" type="text" size="80" default="" label="Country local name" description="" />
            <field name="capital_cat" type="text" size="80" default="" label="Capital" description="" />
            <field name="languages_cat" type="text" size="80" default="" label="Official Languages" description="" />
        </fields>

以下是类别.php

    // no direct access
    defined('_JEXEC') or die('Restricted access');
    // Load the K2 plugin API
    JLoader::register('K2Plugin', JPATH_ADMINISTRATOR.DS.'components'.DS.'com_k2'.DS.'lib'.DS.'k2plugin.php');
    class plgK2categories extends K2Plugin {
// Required global reference parameters
var $pluginName = 'categories';
var $pluginNameHumanReadable = 'Categories K2 Plugin';
var $plgCopyrightsStart = " "
var $plgCopyrightsEnd = " ";
function plgK2categories( & $subject, $params) {        
    parent::__construct($subject, $params);              
}
function onK2CategoryDisplay( & $category, & $params, $limitstart) {
    // API
    $mainframe = JFactory::getApplication();
    $document  = JFactory::getDocument();   
    // ---------- Get plugin parameters ---------------
    // Global plugin params
    $plugin = JPluginHelper::getPlugin('k2', $this->pluginName);
    $pluginGlobalParams = new JRegistry( $plugin->params ); 
    // K2 Category plugin specific params
    $pluginParams = new K2Parameter($category->plugins, '', $this->pluginName);
        $local = $pluginParams->get('localCountry_cat');
        $capital = $pluginParams->get('capital_cat');
        $languages = $pluginParams->get('languages_cat');
        $currency = $pluginParams->get('currency_cat');
    // --------- Requirements -------
    require_once(dirname(__FILE__).DS.$this->pluginName.DS.'includes'.DS.'helper.php');
    // ---------- Fetch the template -------
    ob_start();
    $getTemplatePath = categoriesHelper::getTemplatePath($this->pluginName,'default.php');
    $getTemplatePath = $getTemplatePath->file;
    include($getTemplatePath);
    $getTemplate = $this->plgCopyrightsStart.ob_get_contents().$this->plgCopyrightsEnd;
    ob_end_clean();

    // ----- Output -----
    return $getTemplate;
    }
    } // END CLASS       

我已经解决了。这比我想象的要容易,但我花了一段时间才发现它。缺乏K2及其开发人员的文档是一个巨大的痛苦。

从数据库中检索了$this->params->get('itemK2Plugins')的信息,但也检索了:$this->category->plugins

    <?php if($this->params->get('itemK2Plugins')): ?>
    <?php 
$array = json_decode($this->category->plugins, true);
foreach($array as $key => $value) { 
    $keys[$key] = $value;   
}
$countryL = $keys['categorieslocalCountry_cat'];    
$MottoL = $keys['categorieslocalMotto_cat'];
    ?>
    <?php endif; ?>

如果有不同且正确的方法,请告诉我!

谢谢:)

相关内容

最新更新