Добавление новых (кастомных) полей для модуля Комментарии — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
 
(не показаны 4 промежуточные версии 1 участника)
Строка 1: Строка 1:
В файле classes/modules/comments/class.php копируем метод post в ~classes/modules/comments/__custom.php, переименовываем метод, допустим в postnew.
+
В файле classes/modules/comments/class.php копируем метод post в ~classes/modules/comments/__custom.php, переименовываем метод, допустим в postnew. В той же папке копируем файл permissions.php и переименовываем в permissions.custom.php, содержимое файла permissions.custom.php должно быть таким:
Теперь понадобится php файл regedit.php для правки реестра системы, если у вас его нет, то можно запросить его у Службы Заботы, написав письмо на help@umi-cms.ru. Создаем в корне сайта папку /dev/ , копируем туда файл regedit.php, запускаем, заходим в ветку modules/ comments /func_perms/, добавляем в пустые два поля снизу два значения: postnew и Комментарии, нажимаем Enter. В админке, заходим в настройки прав пользователя Гость, в блоке  Комментарии ставим галку возле perms-comments-postnew, сохраняем.
+
<source lang="php">
 +
<?php
 +
  $permissions = Array('insert' => Array('postnew'));
 +
?>
 +
</source>
  
Создаем в модуле Шаблоны данных новые поля типа страницы Комментарий. Пусть это будет строковое поле с идентификатором newfield  и чекбокс: chek. В шаблоне для макроса comments insert() в блоках comments_block_add_user и comments_block_add_guest добавляем новые поля, допустим с табличной версткой:
+
В модуле "Шаблоны данных", для типа "Комментарий" создаем новые поля. Пусть это будет строковое поле с идентификатором newfield  и чекбокс: chek. В шаблоне для макроса comments insert() в блоках comments_block_add_user и comments_block_add_guest добавляем новые поля, допустим с табличной версткой:
 
<source lang="php">
 
<source lang="php">
 
<tr>
 
<tr>
Строка 40: Строка 44:
 
$nick = htmlspecialchars(getRequest('author_nick'));
 
$nick = htmlspecialchars(getRequest('author_nick'));
 
$email = htmlspecialchars(getRequest('author_email'));
 
$email = htmlspecialchars(getRequest('author_email'));
 +
</source>
 
Добавляем новые поля:
 
Добавляем новые поля:
 +
<source lang="php">
 
$newf = htmlspecialchars(getRequest('newfield'));  
 
$newf = htmlspecialchars(getRequest('newfield'));  
 
$chek = htmlspecialchars(getRequest('chek'));
 
$chek = htmlspecialchars(getRequest('chek'));
Строка 49: Строка 55:
 
$element->setValue("h1", $title);
 
$element->setValue("h1", $title);
 
$element->setValue("author_id", $author_id);
 
$element->setValue("author_id", $author_id);
 +
</source>
 
Ставим:
 
Ставим:
 +
<source lang="php">
 
$element->setValue("newfield", $newf);  
 
$element->setValue("newfield", $newf);  
 
$element->setValue("chek", $chek);
 
$element->setValue("chek", $chek);
Строка 55: Строка 63:
  
 
Вот собственно и все.
 
Вот собственно и все.
 +
[[Категория:Написание кастомных макросов]][[Категория:Модуль Комментарии]]

Текущая версия на 12:32, 5 июня 2013

В файле classes/modules/comments/class.php копируем метод post в ~classes/modules/comments/__custom.php, переименовываем метод, допустим в postnew. В той же папке копируем файл permissions.php и переименовываем в permissions.custom.php, содержимое файла permissions.custom.php должно быть таким:

<?php
  $permissions = Array('insert' => Array('postnew'));
?>

В модуле "Шаблоны данных", для типа "Комментарий" создаем новые поля. Пусть это будет строковое поле с идентификатором newfield и чекбокс: chek. В шаблоне для макроса comments insert() в блоках comments_block_add_user и comments_block_add_guest добавляем новые поля, допустим с табличной версткой:

<tr>
<td>
Новое поле:<br />
<input type="text" name="newfield" size="50" style="width: 350px;" class="textinputs" />
</td>
</tr
<tr>
<td>
Чекбокс: <input type="checkbox" name="chek" class="textinputs" />
</td>
</tr>

Также меняем: <form method="post" action="% action %> На: <form method="post" action="%pre_lang%/comments/postnew/%pid%">

В каждом блоке из двух!

В файле ~classes/modules/comments/__custom.php в начале метода postnew прописываем такие строки:

$regedit = regedit::getInstance();
$per_page = (int) $regedit->getVal("//modules/comments/per_page");
$moderated = (int) $regedit->getVal("//modules/comments/moderated");

Во всех случаях кроме "$this->moderated",

 
меняем: $this-> на: def_module::
this->moderated меняем на $moderated

После блока:

$title = htmlspecialchars(trim(getRequest('title')));
$content = htmlspecialchars(trim(getRequest('comment')));
$nick = htmlspecialchars(getRequest('author_nick'));
$email = htmlspecialchars(getRequest('author_email'));

Добавляем новые поля:

$newf = htmlspecialchars(getRequest('newfield')); 
$chek = htmlspecialchars(getRequest('chek'));

После подобных строк:

$element->setValue("h1", $title);
$element->setValue("author_id", $author_id);

Ставим:

$element->setValue("newfield", $newf); 
$element->setValue("chek", $chek);

Вот собственно и все.