CMS Eleanor - Поиск
Полная версия этой страницы: Официальный форум Eleanor CMS » Вид формы добавления комментария
Официальный форум Eleanor CMS » Поддержка пользователей системы Eleanor CMS » Оформление системы
Root
Из этого:


Пытаюсь сделать это:


Проблема в том, что в DLE форма добавления комментария реализована до безобразия просто:
Цитата
<div class="white-block">
<div class="add_comments">Добавить комментарий</div>
{editor}
</div>

Все. Тег {editor} это сама форма точнее редактор, его оформление уже изменяешь в другом шаблоне как нужно. В Eleanor естественно все сделано логично..
$editor='';
		if($rights['post']!==false)
		{
			$Lst=Eleanor::LoadListTemplate('table-form');
			$editor.=
				($rights['post']==-1 ? Eleanor::$Template->Message(static::$lang['needch'],'info') : '')
				.$Lst->form(array('id'=>'newcomment'))->begin()
				.'<tr class="infolabel first"><td colspan="2" class="answerto">'.static::$lang['addc'].'</td></tr>'
				.($gname===false ? '' : $Lst->item(static::$lang['yn'],Eleanor::Input('name',$gname,array('tabindex'=>1))))
				.$Lst->item(static::$lang['yc'],$GLOBALS['Eleanor']->Editor->Area('text','',array('bb'=>array('tabindex'=>2))))
				.($captcha ? $Lst->item(array(static::$lang['captcha'],$captcha.'<br />'.Eleanor::Input('check','',array('tabindex'=>3,'autocomplete'=>'off')),'descr'=>static::$lang['captcha_'])) : '')
				.$Lst->button(Eleanor::Input('parent',$pagpq[3] ? $pagpq[3]['id'] : 0,array('type'=>'hidden')).Eleanor::Button(static::$lang['addc']))
				->end()->endform();
		}

Воот, сижу и уже третий час втыкаю в этот код. Понял что '.static::$lang['addc'].' выводит надпись "Добавить комментарий", и $lang['yc'] выводит слово "комментарий" слева, а дальше все. Может кто подробно разжевать за что тут каждая строчка отвечает и откуда берется оформление если тут его нет?
Alexander
Объясняю построчно.


($rights['post']==-1 ? Eleanor::$Template->Message(static::$lang['needch'],'info') : '')
Эта строка выводит сообщение о том, что сообщение будет поставлено на модерацию (группе пользователя включена перемодерация публикаций).


.$Lst->form(array('id'=>'newcomment'))->begin()
Это просто начало формы и начало таблицы.


.'<tr class="infolabel first"><td colspan="2" class="answerto">'.static::$lang['addc'].'</td></tr>';
Надпись "Добавить комментарий" в <tr> и <td>, поскольку надпись располагается в таблице.

Далее нужно оговориться, что метод ->item() принимает 2 параметра: название поля (слева) и самое поле (справа).


.($gname===false ? '' : $Lst->item(static::$lang['yn'],Eleanor::Input('name',$gname,array('tabindex'=>1))))
Вывод поля, в котором гость должен представится. Поле не выводится пользователям.


.$Lst->item(static::$lang['yc'],$GLOBALS['Eleanor']->Editor->Area('text','',array('bb'=>array('tabindex'=>2))))
[/quote]
Вывод самого редактора. В Eleanor CMS все редакторы выводятся при помощи $Eleanor->Editor->Area().


.($captcha ? $Lst->item(array(static::$lang['captcha'],$captcha.'<br />'.Eleanor::Input('check','',array('tabindex'=>3,'autocomplete'=>'off')),'descr'=>static::$lang['captcha_'])) : '')
Вывод капчи, если капча включена.


.$Lst->button(Eleanor::Input('parent',$pagpq[3] ? $pagpq[3]['id'] : 0,array('type'=>'hidden')).Eleanor::Button(static::$lang['addc']))
Здесь ->button() - это специальный метод, предназначенный для вставки управляющих кнопок, что мы собственно и видим. Но здесь, спереди кнопки вставлено еще и hidden поле со служебной информацией.


->end()->endform();
Конец таблицы и конец формы.

Вопросы? :)
Root
Цитата (Alexander @ 2021-06-14 22:09)
Вопросы?

Почему не сделать проще? Неужели верстальщик сам во всем этом разберется и поймет?
Я вот с внешним видом комментариев не сразу разобрался, это который этот:

return'<div class="comment" id="comment'.$id.'">
<div class="binner">
	<div class="avatarcol">
		<div class="lcolomn">
			<div class="avatarbox"><img style="max-width:'.$maw.';max-height:'.$mah.';" src="'.$avatar.'" title="'.$c['author'].'" />'.($author && $author['_online'] ? '<br /><span style="color:green">Online</span>' : '').'</div>
		</div>
		<div class="rcolomn">
			<div class="heading">
				<span class="argr">'
				.($c['_n'] ? '<a href="'.$c['_afind'].'" class="cb-findcomment">#'.($c['status'] ? $c['_n'] : '?').'</a>' : '')
				.($mass && in_array($c['status'],array(-1,0,1)) ? ' '.Eleanor::Check('mass[]',false,array('value'=>$id)) : '')
				.'</span><h2>'
				.Eleanor::$Language->Date($c['date'],'fdt').', '.($group ? '<a href="'.Eleanor::$Login->UserLink($author['name'],$c['author_id']).'" title="'.$group['title'].'" class="cb-insertnick">'.$group['html_pref'].$c['author'].$group['html_end'].'</a>' : '<span class="cb-insertnick">'.$c['author'].'</span>').' </h2>'
				.($status || $ip ? '<div class="moreinfo">'.$ip.$status.'<div class="clr"></div></div>' : '')
				.'</div>
			<div class="maincont"><div class="text">'.$pq.$c['text'].'</div>'
			.($author && $author['signature'] ? '<div class="clr"></div><p class="signature">-----<br />'.$author['signature'].'</p>' : '')
			.'</div>
		</div>
		<div class="clr"></div>
	</div>
	<div class="commentinfo buttons">'
		.($c['_achilden'] ? '<a href="'.$c['_achilden'].'#comments" class="answers">'.$la($c['answers']).'</a>' : '')
		.($c['status']==1 && $rights['post']
			? '<span class="argr"><a href="#" class="cb-qquote" data-id="'.$id.'" data-date="'.$c['date'].'" data-name="'.$c['author'].'">'.static::$lang['qquote'].'</a></span>'
				.(isset($c['_n']) ? '<span class="argr"><a href="#" class="cb-answer" data-id="'.$id.'">'.static::$lang['answer'].'</a></span>' : '')
			: '')
		.($c['_edit'] ? '<span class="argr"><a href="#" class="cb-edit" data-id="'.$id.'">'.$ltpl['edit'].'</a></span>' : '')
		.($c['_delete'] ? '<span class="argr"><a href="#" class="cb-delete" data-id="'.$id.'"'.(isset($c['_n']) ? '' : ' data-recount="1"').'>'.$ltpl['delete'].'</a></span>' : '')
		.'<div class="clr"></div>
	</div>
</div></div>';

Долго разбирал этот код и понял что можно просто заменить этот код на свой и в нужные места подставлять переменные из этого кода. Например аватар выводил так '.$avatar.' и с остальными так же. Но вот с этой формой все еще хуже. Если что то тронешь и уже ошибка, т.к без знаний php тут не разобраться.
Alexander
Root, можно и проще, а именно заменить все абстракции на <form><table> и т.п. Это каждый может сделать самостоятельно.
Root
Цитата (Alexander @ 2021-06-14 22:09)
заменить все абстракции на <form><table> и т.п. Это каждый может сделать самостоятельно.
А можно не самостоятельно? Я не знаю как это сделать с тем участком кода что я кидал выше. Проблема в том, что с какой бы стороны я к нему не подходил, все заканчивается ошибкой на сайте.
Вот смотрю эту форму стандартную через инспектор и вижу какие то классы которых нет в том участке кода, откуда они берутся?


На счет упрощения кода, можете кинуть рабочий вариант только с самым важным, редактором и кнопкой отправить?
Alexander
Для начала, можно заменить:
$Lst->form(array('id'=>'newcomment'))->begin()

На
'<form id="id"=>"newcomment"><table><tr>'

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.