Я думаю, что вы не должны ничего выводить из своего кода, и у вас есть строка, где вы выводите (или можете выводить) данные.
Другое дело, что вы не проверяете контекст, хотите ли вы, чтобы код выполнялся для статей, категорий и т. Д. Или только для статей?
Если это только для статей, вы должны проверить, равен ли контекст "com_content.article":
if ( $context != "com_content.article" ) { return; }
И последнее. Добавляете ли вы поля в форму статьи / категории с помощью события onContentPrepareForm?
Если это так, вы должны получить свои данные так:
function onContentBeforeSave( $context, &$row, $isNew ) {
if ( $context != "com_content.article" ) {
return;
}
jimport( 'joomla.html.parameter' );
$params = new JParameter( $row->attribs );
$create_xml = $params->get( 'create_xml', false );
if ( $create_xml ) {
$field = $params->get( 'field', '');
// The rest of your code here...
//If you don't want these fields to be stored with the params of the article:
$params->set( 'field', '' );
$params->set( 'create_xml', '' );
}
$row->attribs = (string)$params;
return;
}
Кроме того, если вы не используете onContentPrepareForm, вы можете реализовать его следующим образом:
function onContentPrepareForm($form, $data)
{
$return = true;
if (!($form instanceof JForm))
{
$this->_subject->setError('JERROR_NOT_A_FORM');
$return = false;
} elseif ( $form->getName() != 'com_content.article' ) {
$return = true;
} else {
// Add the registration fields to the form.
JForm::addFormPath( __DIR__ . DIRECTORY_SEPARATOR . 'form' );
$form->loadFile('your_file', false);
$return = true;
}
return $return;
}
В вашей папке плагина должен быть файл: plugin_folder / form / your_file.xml, с этой формой:
<?xml version="1.0" encoding="utf-8"?>
<form>
<fields name="attribs">
<fieldset name="create_xml" label="Create XML">
<field name="create_xml" [...]>
<field name="field" [...]>
</fieldset>
</fields>
</form>
Надеюсь, это помогло!