Добавление новых (кастомных) полей для модуля Комментарии — различия между версиями
VITL' (обсуждение | вклад) (Новая страница: «В файле classes/modules/comments/class.php копируем метод post в ~classes/modules/comments/__custom.php, переименовываем мето…») |
Mad grant (обсуждение | вклад) |
||
(не показано 5 промежуточных версий 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 должно быть таким: |
− | + | <source lang="php"> | |
+ | <?php | ||
+ | $permissions = Array('insert' => Array('postnew')); | ||
+ | ?> | ||
+ | </source> | ||
− | + | В модуле "Шаблоны данных", для типа "Комментарий" создаем новые поля. Пусть это будет строковое поле с идентификатором newfield и чекбокс: chek. В шаблоне для макроса comments insert() в блоках comments_block_add_user и comments_block_add_guest добавляем новые поля, допустим с табличной версткой: | |
<source lang="php"> | <source lang="php"> | ||
<tr> | <tr> | ||
Строка 22: | Строка 26: | ||
В каждом блоке из двух! | В каждом блоке из двух! | ||
− | В файле ~classes/modules/ | + | В файле ~classes/modules/comments/__custom.php в начале метода postnew прописываем такие строки: |
<source lang="php"> | <source lang="php"> | ||
$regedit = regedit::getInstance(); | $regedit = regedit::getInstance(); | ||
Строка 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);
Вот собственно и все.