Для передачи данных используем функцию. Здесь дата в конце для того, чтобы быть универсальной функцией, как для материалов с датой в УРЛ так и без нее. Массивы мы объединяем, по-этому бывшие ключи становятся переменными в отображении.:
$R = $this->data->getMaterial($category, $huu, $date);
$D = array_merge($D,$R);
Для вывода материала используем код по образцу:
$image_properties = array(
‘src’ => $imgSrc,
‘alt’ => $imgAlt,
‘width’ => ‘140’,
‘height’ => ‘140’,
‘title’ => $imgTitle
);
$phpdate = strtotime($date);
$day = date(‘j’, $phpdate); // day
$mon = getRusDate(date(‘M’, $phpdate)); // month
$year = date(‘Y’, $phpdate); //year 2011
$tdate = “$day $mon, $year”;echo’
Раздел:
‘.$categoryTitle.’Опубликовано: ‘.$tdate .’Комментариев: ‘.$commentsCount.’‘.$body.’‘;
?>В низу можем выводить похожий материал, но так как он не реализован по настоящему пример не показан.
Подключение blohher UI
Сначала подключите скрипты и стили:
$D[‘js’][] = ‘jquery.blohher.drag’;
$D[‘js’][] = ‘jquery.blohher.ui’;
$D[‘css’][] = ‘boxui’;А теперь нужно будет добавить в конец страницы пока не видимый код окна:
А теперь еще нужно и инициализацию провести, а так же допишем функцию, имитирующую стандартный alert – назвем её box:
Отказ от JQuery UI
Если вы хотите использовать мой UI, скачайте Файлы blohher.ui.7z
Краткая документация:
Регистрируем окно UI, указывая необходимые callback-функции:
$(‘#ui-dialog’).blohherui({
cbUiClose : anyShow,
cbUiOk : function(){ any1(); any2(); },
cbUiShow : anyHide
});Собственная кнопка закрытия окна
$(‘#ui-close-link’).click(function(){
$(‘#ui-dialog’).blohherui(‘uiClose’);
});А вот так можно заменить текст сообщения и надпись на кнопке
$(‘#ui-dialog .ui-buttons button span’).html(‘1’);
$(‘#ui-dialog .ui-text p’).html(‘2’);Фунцкии:
- uiReg(options) – явно не указывается, просто передавайте объект опций
- uiShow() – показать окно
- uiClose() – закрыть окно
Ссылка на пример использования: удалена после переноса сайта на WordPress
Как очистить фокус, как снять выделение текста на странице
Вот вам функция:
function clearPageSelection()
{
if (window.getSelection) {
if (window.getSelection().empty) { // Chrome
window.getSelection().empty();
} else if (window.getSelection().removeAllRanges) { // Firefox
window.getSelection().removeAllRanges();
}
} else if (document.selection) { // IE?
document.selection.empty();
}
}В опере тоже работает
Вывод на главной странице последних материалов
Для передачи данных используем функцию:
$R = $this->data->getArrayOfRecentPublicMaterials(20);
$D[‘materialsObject’] = $R;Для вывода используем код по образцу:
if (is_array($materialsObject)) foreach ($materialsObject as $row)
{
$image_properties = array(
‘src’ => $row[‘imgSrc’],
‘alt’ => $row[‘imgAlt’],
‘width’ => ‘140’,
‘height’ => ‘140’,
‘title’ => $row[‘imgTitle’]
);echo’
‘;
}
?>В этом случае материалы идут все подряд и невозможно настроить вывод по категориям.
Настройка при установке сайта на новое место(на хостинг)
Сначала нужно зайти в конфиг, набирай http://sait.ru/config ввести там логин и пароль и прописать настройки баз данных и системные настройки. Посмотрим в картинках.
Если работаем в папке, то нужно дописать /имя_папки в .htaccess, в противном случае удалить это.
Это с таких 3-х файловых баз состоят настройки
Настройки системы. Здесь так же само прописывается, работаем мы в папке или нет. То же пишется в первую строку что и на первой картинке.
Все ясно. Главная база. Пользователь, пароль, имя базы.
То же самое для базы “менеджера рассылок”.
Как зарегистрировать и подключить бесплатный городской домен в Украине
Стоп! Эта информация устарела! Теперь Украина стала “торговать” этими доменами!
Первым делом тут зарегистрируем себя, что мы украинец http://hostmaster.net.ua/
Потом залогинимся сюда, в автоматическое добавление информации о домене https://auto.uanic.ua/cgi-bin/add.cgi
Порядок действий:
- Идем на хостинг, добавляем новый домен, запоминаем первый сервер имен NS, пример dns1.host-food.ru
- Идем на auto.uanic.ua и вписываем туда сервер имен, IP будет определен автоматически. Если на хостинге домен не добавлен или что-то неправильно возникает ошибка dominvest.poltava.ua не знайдено на dns1.host-food.ru
- Нажимаем Отправить заявку и получаем Заявка відправлена на обробку до системи UANIC.
Про подальший хід обробки заявки буде повідомлено адміністративному та технічному контактам домену- Ждем когда на елмеил вашего хэндла придет запрос о подтверждении, он выглядит так: ADD dominvest.poltava.ua processing approval request, У вхідну чергу адміністратора публічного домену poltava.ua надійшла Заявка на делегування доменного імені dominvest.poltava.ua.
Інформацію про заявку дивіться нижче.
Підтвердити заявку можна на сайті за адресою:
https://hostmaster.ua/confirm.php?code=BFE91ED3629F20B507C5A888ED0C1D67
Нужно перейти по ссылке и подтвердить, что делегирование домена.На елмеил придет письмо с успешными новостями, домен в сети обновится в среднем через полсутки.
!!! Домен org.ua требует хорошего дорогого хостинга, такие как показанный в примере хостинг у него в черных списках, тогда в ответ приходит не понятно что. Я это пробовал давно, потому не могу написать точный текст.
Все, создавайте сайт.
Дизайн комментариев в популярных free CMS
Друпал, сначала
Друпал, внутри
Джумла, в базовой комплектации комментариев нет, это всего лишь модуль
Вордпресс
Pocemes v.3 – моя разработка
x-debug NetBeans чтобы не останавливался на 1 строчке скрипта (index.php)
Вывод комментариев и формы комментирования
В этой статье посмотрим как выводятся комментарии и форма для комментирования.
Сначала посмотрим что пишется в функции вывода в контроллере
$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[‘full_tag_close’] = ‘‘;
$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[‘last_tag_open’] = ‘‘;
$config[‘next_tag_open’] = ‘‘;
$config[‘prev_tag_open’] = ‘‘;
$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’
‘.$row->name.’ комментирует материал ‘.$tdate.’‘.$text.’
‘;
}
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;
}