簡體   English   中英

在模板中顯示Joomla插件字段數據| 第一個K2擴展

[英]Display Joomla plugin fields data in template | first K2 extension

我遇到了問題,而且我是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);

這是category.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>

這是category.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; ?>

如果有其他正確的方法,請告訴我!

謝謝 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM