我有一个问题,我是Joomla和K2的新手,所以任何帮助都将受到高度赞赏。
我正在开发一个基于Example K2插件(http://getk2.org/extend/extensions/90-example-k2-plugin-for-developers)的简单joomla插件。
我想要创建的是类别的K2扩展,因此我将能够为类别添加额外的内容。我已经进行了搜索,并且没有插件或扩展来满足我对Joomal 3.x这个项目的需求。
对于每个类别,我将后端中的信息设置为货币,语言,国家等。我通过xml文件将此字段添加到后端。
我尝试了几种方法,但是我无法在我的k2模板上访问此信息。当我转储参数时,我从xml获得默认值,但不是已经为该类别保存的值。
所以我能够使用插件模板轻松显示内容但是由于缺陷,可用于类别的唯一功能将是onK2ategoryDisplay,但我在这里尝试实现的是从K2模板调用字段值,例如标题旁边或图库下方。
我找到了这些行,但它只显示保存在xml文件中的默认文本,而不是新内容。如果我不清楚,请告诉我,我会更新这篇文章。提前致谢。
$plugin = JPluginHelper::getPlugin('k2', 'categories');
$pluginParams = new JRegistry();
$pluginParams->loadString($plugin->params);
$param = $pluginParams->get('localCountry_cat');
var_dump($param);
这是categories.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>
这是categories.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
答案 0 :(得分:0)
我已经解决了。这比我想象的要容易,但是花了一段时间才发现它。 K2及其开发人员缺乏文档是一个巨大的痛苦。
使用$ this-&gt; params-&gt; get('itemK2Plugins')从数据库中检索信息,还使用:$ this-&gt; category-&gt; 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; ?>
如果有不同的正确方法,请告诉我!
谢谢:)