我将仅使用Joomla K2组件作为目录系统,因此只需在前端内容中显示Extra-Fields。
因此,在注册用户可以使用的K2项目提交表单中,我倾向于删除所有其他输入(包括内容选项卡及其用于撰写帖子,附件选项卡,标题输入,发布单选按钮等的巨大文本区域)和仅保留额外字段的输入。我尝试通过使用CSS或HTML隐藏这些输入来通过k2模板覆盖来实现这一点,但这不是一个好主意,因为用户仍然可以通过浏览器的开发人员工具将设置显示正常显示和查看隐藏的内容。
同样不可能通过将这些字段放在一个总是错误的PHP条件来实现这个目的,因为有些输入需要至少有一个值,似乎。
以下是用户部分中K2提交表单的默认布局,红色区域是我想要删除和停用的区域:
这是默认布局的来源:
com_k2/templates/default/itemform.php
通过隐藏用户的类别输入,我还需要设置一个预定义的类别,用户提交的所有内容都将应用于该类别,并且以提交形式向用户显示与该类别相关的额外字段。 有没有办法在模板覆盖文件中定义一个值并完全隐藏其相关字段? (最好是通过变量,但常量也可以工作)。我也需要它来自用户提交的项目的自动标题分配(但它不是必要的 其他事情)
所有这些更改都将在前端网站的K2添加项目表单中进行,而非管理部分。
这一切的解决方法是什么?
此致
答案 0 :(得分:0)
我知道这个问题很老但是这是我的想法,我做了类似的事情,并不完全一样。
因为如果删除类别或标题等必填字段,则无法提交表单,只要不是空值,就可以将隐藏的INPUT字段设置为随机值。在覆盖文件模板/ YOUR TEMPLATE / html / com_k2 / default / itemform.php中,而不是显示类别选择:
<tr>
<td class="adminK2LeftCol">
<label><?php echo JText::_('K2_CATEGORY'); ?></label>
</td>
<td class="adminK2RightCol">
<?php echo $this->lists['categories']; ?>
</td>
</tr>
你使用这样的东西
<input type="hidden" id="catid" name="catid" value="-1">
是的顽皮用户可以使用Firebug将其值放入INPUT中,但您仍然可以构建插件并收听onBeforeK2Save事件,然后在保存之前将类别的默认值设置为您自己的值(0,1,2,任何内容)数据库的内容。通过这种方式,您也可以为K2项目生成标题。
<?php
defined('_JEXEC') or die ;
JLoader::register('K2Plugin', JPATH_ADMINISTRATOR.'/components/com_k2/lib/k2plugin.php');
class plgK2MyExample extends K2Plugin
{
var $pluginName = 'myexample';
var $pluginNameHumanReadable = 'My Example K2 Plugin';
function onBeforeK2Save(&$item, $isNew)
{
$item->catid = 10000;
$item->title = 'my own title';
}
}
在此处查看示例插件:https://github.com/joomlaworks/example-k2-plugin(示例插件中缺少onBeforeK2Save)。
onBeforeK2Save在administrator / components / com_k2 / models / item.php中调用(&#34; save&#34; function)。