【问题标题】:Remove further inputs in Joomla k2 submission form and just keep Extra-Fields inputs删除 Joomla k2 提交表单中的进一步输入,只保留 Extra-Fields 输入
【发布时间】:2014-01-10 21:11:00
【问题描述】:

我打算将 Joomla K2 组件仅用作目录系统,所以只需在前端内容中显示 Extra-Fields。

因此,在注册用户可用的 K2 项目提交表单中,我倾向于删除所有进一步的输入(包括内容选项卡及其用于撰写帖子、附件选项卡、标题输入、发布单选按钮等的巨大文本区域)和仅保留额外字段的输入。我尝试通过使用 CSS 或 HTML 隐藏这些输入来通过 k2 模板覆盖来做到这一点,但这不是一个好主意,因为用户仍然可以通过浏览器的开发人员工具将显示设置为正常来显示和查看隐藏的内容。

此外,通过将这些字段置于始终为假的 PHP 条件中是不可能实现此目的的,因为似乎某些输入需要具有至少一个值。

下面是K2提交表单在用户部分的默认布局,红色区域是我想将它们移除并处于非活动状态的区域:

这是默认布局的来源:

com_k2/templates/default/itemform.php

通过向用户隐藏类别输入,我还需要设置一个预定义的类别,用户提交的所有内容都将应用于该类别,并且与该类别相关的额外字段在提交表单中显示给用户。 有没有办法在模板覆盖文件中定义一个值并完全隐藏其相关字段? (最好是变量,但常量也可以)。我也需要它来为用户提交的项目自动分配标题(但它不像 其他)

所有这些更改都将在 K2 中在前端站点中添加项目表单,而不是在管理部分。

解决方法是什么?

问候

【问题讨论】:

  • 我不认为 K2 是满足您需求的最佳扩展,您是否查看过 joomla 的其他“CCK 组件”,例如 fabrik seblod 等?
  • @chadocat 实际上我在考虑这个,但我需要一个与JA K2 Filter 完全一样的高级搜索模块,当我找到它时,我对 K2 的唯一问题是它的提交表单。即使我看到了 Joomla 的 ContentBuilder CCK its application form 看起来不错,但我没有找到有用的搜索模块,这些高级功能在 JA K2 Filter 中可用
  • 好吧我不知道seblod是否能满足你的需求,他们有一个搜索插件可以看到seblod.com/products/918

标签: javascript php html joomla joomla-k2


【解决方案1】:

我知道这个问题很老,但这是我的想法,我做了类似的事情,不完全一样。

由于删除了Category或Title等必填字段后无法提交表单,因此您可以放置​​一个随机值的隐藏INPUT字段,只要它不是空值即可。在您的覆盖文件 templates/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 中调用(“保存”函数)。

【讨论】:

  • 虽然这个问题很老,但我还没有得到答案。所以感谢您关心解决方案。
猜你喜欢
  • 2014-10-17
  • 2011-11-17
  • 2012-11-22
  • 2019-08-24
  • 2012-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多