Вывод комментариев и формы комментирования

В этой статье посмотрим как выводятся комментарии и форма для комментирования.

Сначала посмотрим что пишется в функции вывода в контроллере

$idThis = $R[‘idAll’];
$D[‘commentAddUrl’] = site_url(“$this->ccnm/ajaxCommentAdd/$idThis”);
$onPage = safeInt($this->Sets->read(‘commentsOnPageUsr’));
$resultArray = $this->data->aGetComments($idThis, $onPage, $start);
if (!is_array($resultArray)) $D[‘comments’] = ‘no comments’;
else
{
$D[‘commentsCount’] = $resultArray[‘numRows’];
$D[‘begin’] = $resultArray[‘begin’];
$D[‘comments’] = $resultArray[‘comments’];
$this->load->library(‘pagination’);
$config[‘cur_page’] = $start;
$config[‘base_url’] = site_url(“$this->ccnm/”.__FUNCTION__.”/$category/$date/$huu”);
$config[‘total_rows’] = $resultArray[‘numRows’];
$config[‘per_page’] = $onPage;
$config[‘full_tag_open’] = ‘

‘;
$config[‘first_link’] = ‘ ‘;
$config[‘last_link’] = ‘ ‘;
$config[‘next_link’] = ‘ ‘;
$config[‘prev_link’] = ‘ ‘;
$config[‘cur_tag_open’] = ‘‘;
$config[‘cur_tag_close’] = ‘
‘;
$config[‘first_tag_open’] = ‘

‘;
$config[‘first_tag_close’] = ‘

‘;
$config[‘last_tag_open’] = ‘

‘;
$config[‘last_tag_close’] = ‘

‘;
$config[‘next_tag_open’] = ‘

‘;
$config[‘next_tag_close’] = ‘

‘;
$config[‘prev_tag_open’] = ‘

‘;
$config[‘prev_tag_close’] = ‘

‘;
$config[‘num_tag_open’] = ‘

‘;
$config[‘num_tag_close’] = ‘

‘;
$this->pagination->initialize($config);
$D[‘paging’] = $this->pagination->create_links();
}
if ($D[‘comment’]) $this->load->view(‘site/body-mater-form’,$D);

sa

Последняя строчка показывает, что нужно выводить форму комментирования только тогда, когда комментирование разрешено. Эту функциональность можно внести в файл вывода самого материала.


if (!is_string($comments))
{
$counter = 0;
for ($i=1; $i<15; $i++) $a14[] = $i; //vd($a14);
shuffle($a14);
echo “

Комментарии к материалу ($commentsCount)

“;
foreach ($comments as $row)
{
$pattDow = ‘l’;
$pattMonth = ‘M’;
$pattDay = ‘j’;
$pattYear = ‘Y’;
$phpdate = strtotime($row->date);
$day = date($pattDay, $phpdate);
$mon = getRusDate(date($pattMonth, $phpdate));
$year = date($pattYear, $phpdate);
$time = substr($row->time, 0, 5);
$tdate = “$day $mon $year в $time “;
$hash = md5(strtolower(trim($row->email)));
$counter++;
if ($counter >= 14)
{
$counter = 0;
shuffle($a14);
}
$boo = site_url(“_/avatars/$a14[$counter].jpg”);
$grava = ‘http://www.gravatar.com/avatar/’.$hash.’/?d=’.$boo;
$text = $row->text;
$begin++;
echo’

‘;
}
echo ‘

‘;
echo $paging;
}

?>

Теперь вывод формы, код HTML

Добавьте свой комментарий

$attributes = array(‘name’ => ‘formItself’, ‘id’ => ‘formItself’);
echo form_open(site_url(), $attributes);
?>

Имя (ник):

Текст комментария:

А вот сопровождающий форму код JavaScript

Для полной комплектации приведу еще и CSS код, сопровождающий форму комментирования.

p.h1 {
padding: 0 0 10px 0px;
font-size: 20px;
text-align: center;
}
#formHolder label {
color: #555555;
display: block;
font-family: Arial;
font-size: 11px;
font-style: italic;
}
#formHolder label.error {
color: #800000;
display: block;
font-family: Arial;
font-size: 12px;
}
#formHolder span {
color: #000000;
display: block;
font-family: Arial;
font-size: 15px;
padding-left: 1px;
}
.widthplus {
height: 70px;
width: 350px;
}
.widthtext {
height: 165px;
}
.F {
background-color: #e9e9ff;
border-color: #004276;
border-radius: 2px 2px 2px 2px;
border-style: solid;
border-width: 1px;
font-family: Arial;
font-size: 14px;
}
.FInput {
font-size: 14px;
height: 24px;
line-height: 20px;
margin-top: 4px;
padding-left: 10px;
width: 100%;
}
.FArea {
height: 100px;
line-height: 1.3em;
margin: 4px 0;
padding: 3px;
width: 485px;
}
.F:hover {
background-color: #c6dcff;
}
.fhover {
background-color: #c6dcff;
}
.formButton {
margin: 20px 25px 0 5px;
text-align: right;
}
a.buttonBig {
background: none repeat scroll 0 0 #003399;
border: 1px solid #004276;
border-radius: 3px 3px 3px 3px;
color: white;
font-size: 14px;
padding: 6px 12px;
text-decoration: none;
}
#servMes {
display: inline;
font-size: 13px;
margin: 20px 25px 0 5px;
}
/*pigination*/
.for-pg {
width: auto;
height: 30px;
}
.forumpaginator-links div {
background-color: wheat;
border: 1px solid #555555;
color: black;
display: block;
float: left;
height: 21px;
line-height: 15px;
margin: 0 1px;
text-align: center;
text-decoration: none;
}
.forumpaginator-links div:hover {
border: 1px solid #E87676;
color: #003399;
}
.forumpaginator-links div a {
display: block;
height: 100%;
width: 100%;
}
.forumpaginator-links span.current {
border: 1px solid #555555;
color: black;
display: block;
float: left;
height: 15px;
margin: 0 1px;
padding: 3px 2px;
width: 7px;
}
.forumpaginator-info {
background: none repeat scroll 0 0 transparent;
color: #000000;
float: left;
font-size: 10px;
line-height: 1em;
padding: 12px 4px 4px;
text-decoration: none;
text-indent: 4px;
}
.forumpaginator-links {

}
.forumpaginator-links div {
margin: 0 1px;
}
div.nextbutton {
background: url(“usrsrc/arrow_right.png”) no-repeat scroll center center #555555;
display: block;
}
div.prevbutton {
background: url(“usrsrc/arrow_left.png”) no-repeat scroll center center #555555;
display: block;
}
div.stepfwdtenbutton {
background: url(“usrsrc/arrow_stepfwdten.png”) no-repeat scroll center center #555555;
display: block;
}
div.stepbacktenbutton {
background: url(“usrsrc/arrow_stepbackten.png”) no-repeat scroll center center #555555;
display: block;
}
div.nextbutton, div.prevbutton {
width: 12px;
}
div.stepbacktenbutton, div.stepfwdtenbutton {
width: 16px;
}
div.numbered a {
color: black;
line-height: 21px;
text-align: center;
text-decoration: none;
width: 12px;
}