Удалите дальнейшие входные данные в форме представления Joomla k2 и просто сохраните дополнительные поля ввода

Я собираюсь использовать компонент Joomla K2 только в качестве системы каталогов, поэтому просто покажите дополнительные поля во внешнем содержимом.

Поэтому в форме отправки элемента K2, которая доступна зарегистрированным пользователям, я стараюсь удалить все дальнейшие входные данные (включая вкладку содержимого и ее огромную текстовую область для записи сообщения, вкладку вложений, ввод заголовка, кнопки публикации и т. Д.) И сохранить дополнительные данные. только поля ввода. Я попытался сделать это с помощью переопределения шаблона k2, скрыв эти входные данные с помощью CSS или HTML, однако это не очень хорошая идея, потому что пользователи по-прежнему могут показывать и видеть скрытые элементы, устанавливая отображение в нормальное состояние с помощью инструментов разработчика браузеров.

Также невозможно достичь этой цели, поместив эти поля в всегда ложное условие PHP, так как некоторые входные данные должны иметь хотя бы одно значение, кажется.

Ниже приведен макет формы отправки по умолчанию в разделе пользователя K2. Красные области - это те, которые я хочу сделать их удаленными и неактивными:

А вот источник макета по умолчанию:

com_k2 / шаблоны / по умолчанию /itemform.php

Скрывая ввод категорий от пользователей, мне также нужно установить предопределенную категорию, к которой будет применяться все содержимое, которое пользователи отправляют, и дополнительные поля, относящиеся к этой категории, показываются пользователям в форме отправки. Есть ли способ определить значение в файлах переопределения шаблонов и полностью скрыть связанные поля? (Лучше быть по переменной, но константа тоже сработает). Мне нужно было бы это для автоматического присвоения заголовка для элемента, представленного пользователями тоже (однако это не так необходимо, как другие вещи)

Все эти изменения будут в форме добавления элемента K2 на сайте переднего плана, а не в разделе администратора.

Какой обходной путь для всего этого?

С уважением

1 ответ

Решение

Я знаю, что этот вопрос старый, но это моя идея, я сделал нечто подобное, не совсем то же самое.

Поскольку вы не можете отправить форму, если удаляете обязательные поля, такие как Категория или Заголовок, вы можете поместить скрытое поле ВХОД со случайным значением, если оно не является пустым значением. В ваших шаблонах файлов переопределения /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 (функция "сохранить").

Другие вопросы по тегам