Тема: Новостная лента
На днях при добавления новой статьи на сайт понял, не хватает полноценного редактора в Новостной ленте.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
My-Engine CMS → Вопросы новичков → Новостная лента
На днях при добавления новой статьи на сайт понял, не хватает полноценного редактора в Новостной ленте.
+1 к редактору
еще новости не упорядочиваются по дате, выводятся только в той последовательности в которой создавались.
Как подключить визуальный редактор на страницу добавления новостей?
На примере тестовой новости, которая по умолчанию.
Находишь файл header_news_test.dat (путь:modules/news2/data/header_news_test.dat)
Открываешь файл, там такая строка
Первая тестовая новость<||>Ключевые слова для тестовой новости<||>Описание для тестовой новости<||>0<||>31.12.1999 23:59
В конце строки меняешь дату и время на нужные, сохраняешь файл и загружаешь в корень modules/news2/data
Аналогично и другая новость
Только не понятна сама суть вопроса, только сейчас дошло, ведь есть специальное поле для ввода даты
Или у тебя версия 5.0?
Если версия 5.0, то в принципе можно поменять, если повозиться.
Нужно создать файл с датой, например, в стандартной версии 5.0 в папке data модуля новостей есть файл header_news_1371695105.dat
Нужно создать файл с таким же id, т.е. date_news_1371695105.dat, в нем записать строку, например 10.11.2017 19:37, сохранить этот файл и закачать в папку data
Затем, в папке news находим файл integration_page.dat, открываем его и примерно в строке 40 будет вот такой код
$out_prev = str_replace('#date#',date($format_date_news, $nom_file),$out_prev);
Меняем этот код на следующий
$out_prev = str_replace('#date#',file_get_contents('./modules/news/data/date_news_'.$nom_file.'.dat'),$out_prev);
Затем, примерно в строке 81 находим код
$out_content = str_replace('#date#',date($format_date_news, $value_url[3]),$out_content);
и меняем его на код
$out_content = str_replace('#date#',file_get_contents('./modules/news/data/date_news_'.$value_url[3].'.dat'),$out_content);
Сохраняем файл и загружаем его в корень в папку news.
Реально проверить не могу, то теоретически должно сработать
Забыл, еще в файле integration_page.dat, в самом верху нужно код
if(!function_exists('news_exists')){
function news_exists($news){
if(file_exists('./modules/news/data/header_news_'.$news.'.dat') &&
file_exists('./modules/news/data/prev_news_'.$news.'.dat') &&
file_exists('./modules/news/data/content_news_'.$news.'.dat') &&
is_writeable('./modules/news/data/header_news_'.$news.'.dat') &&
is_writeable('./modules/news/data/prev_news_'.$news.'.dat') &&
is_writeable('./modules/news/data/content_news_'.$news.'.dat')){$rezult = true;}else{$rezult = false;}
return $rezult;
}
}
заменить на
if(!function_exists('news_exists')){
function news_exists($news){
if(file_exists('./modules/news/data/header_news_'.$news.'.dat') &&
file_exists('./modules/news/data/date_news_'.$news.'.dat') &&
file_exists('./modules/news/data/prev_news_'.$news.'.dat') &&
file_exists('./modules/news/data/content_news_'.$news.'.dat') &&
is_writeable('./modules/news/data/header_news_'.$news.'.dat') &&
is_writeable('./modules/news/data/date_news_'.$news.'.dat') &&
is_writeable('./modules/news/data/prev_news_'.$news.'.dat') &&
is_writeable('./modules/news/data/content_news_'.$news.'.dat')){$rezult = true;}else{$rezult = false;}
return $rezult;
}
}
Подумал, должно работать, вот только при создании новой новости дата выводиться не будет.
Тогда, нужно в файле admin.php после кода
//Добавляем запись
$new_id = time();
Это где-то 84-85 строка, нужно вставить
$date_news = date($format_date_news, $new_id);
filefputs('data/date_news_'.$new_id.'.dat', $date_news, 'w+');
Это мы создали файл с датой и записали в него текущую дату. Теперь, по логике нужно это же сделать и при редактировании новости
Где-то в строке 269 есть код
'.date("d.m.y H:i", $nom_file).'
Заменяем его на другой
'.file_get_contents('data/date_news_'.$nom_file.'.dat').'
Это вывод даты в разделе редактирования в списке новостей
Теперь, переходим к самому редактированию новости, примерно в строке 356 или чуть больше, т.к. мы уже добавили несколько строк в файл, после
<tr>
<td>Заголовок (Также будет подставляться в title):</td>
<td><input type="text" name="header_news" value="'.file_get_contents('data/header_news_'.$news.'.dat').'"></td>
</tr>
вставляем
<tr>
<td>Дата публикации:</td>
<td><input type="text" name="date_news" value="'.file_get_contents('data/date_news_'.$news.'.dat').'"></td>
</tr>
Это мы создали поле для редактирования даты. Теперь, ниже находим
$header_news = $_POST['header_news'];
после него вставляем
$date_news = $_POST['date_news'];
Далее, находим
filefputs('data/header_news_'.$news.'.dat', $header_news, 'w+');
после него вставляем
filefputs('data/date_news_'.$news.'.dat', $date_news, 'w+');
Это, мы передали переменную из поля даты и записали ее в файл. Теперь, таким образом можно будет редактировать дату публикации.
Ну и чтобы довести все до логического конца, находим
unlink('data/header_news_'.$news.'.dat');
после него вставляем
unlink('data/date_news_'.$news.'.dat');
Это удаления файла с датой при удалении всей новости.
Теперь вроде бы все, если нигде не накосячел, то все должно работать
Спасибо за развернутый ответ с кодом. У меня 5.0. Ступил и не посмотрел саму страницу новости в редакторе. Там есть строка Дата публикации
Это в 5.0.1 есть, а в 5.0 нет, но можно сделать.
Ничего, зато потренировал мозг , иногда полезно
Парни выручайте! Копаюсь с блоком новостей и нужно кое что сделать, а у меня знаний не хватает.
Отметил красным на фото
http://test.komandorauto.ru/2.png
http://test.komandorauto.ru/3.png
Код в шапке такой
<div class="link2"><a href="../">Главная</a> → <a href="../news/">Новости</a></div>
Но если его прописать на странице там где вставляется модуль Новостной ленты, то получается что на всех станицах новостей одно и тоже, т.е на главной Новостей, на странице привью и на самой новости
а вам надо чтобы на странице самой новости этой вставки не было ? что то не понял вопрос
может вам надо что-то типа этого
<?php
global $URI, $Page; // это писать если вставляете в саму страницу через редактор
?>
<div class="link2">
<a href="../">Главная</a> → <a href="../news/">Новости</a> <?php if(isset($URI[2])){echo' → '.$Page->get_name();}?>
</div>
Или вот лучше вариант, но для вставки в шаблон
<?php
if($URI[1] == 'news'){
echo'<a href="/">Главная</a> → <a href="/news">Новости</a>';
if(isset($URI[2]) && $URI[1] != 'nav'){
echo' → '.$Page->get_name();
}
}
?>
Хлебные крошки будут выводится только на странице news
ps
Хлебные крошки - так называется то что вы делаете, т.е. "Главная > Новости > Название новости" это и есть хлебные крошки , сленг вобщем ))
Если я правильно понял, то это "хлебные крошки". Если это так, то можно сделать вот такой вариант.
Содержание страницы в любом шаблоне выводится примерно таким кодом
<div class="column_content">
<h2><?php $page->get_name();?></h2>
<div class="page"><?php $page->get_content();?></div>
</div>
Вместо этого кода попробуйте вставить вот такой
<div class="column_content">
<?php
if($URL[1] == 'news' && trim($URL[2])){;?>
<div class="link2"><a href="../">Главная</a> → <a href="../news/">Новости</a> → <?php $page->get_name();?></div>
<?php }else{;?>
<div class="link2"><a href="../">Главная</a> → <?php $page->get_name();?></div>
<?php };?>
<h2><?php $page->get_name();?></h2>
<div class="page"><?php $page->get_content();?></div>
</div>
gpc66, прикольно получилось , одновременно почти одно и тоже написали :-)
Ivan, прикольно то прикольно, вот только я подумал, что если сделать листинг страниц новостей, то этот код будет работать не корректно. Правильней так
<div id="content">
<?php
if($URI[1] !== 'index'){
if($URI[1] == 'news' && trim($URI[2]) && $URI[2] !== 'nav'){ ?>
<div class="link2"><a href="/">Главная</a> → <a href="/news">Новости</a> → <?php $page->get_name();?></div>
<?php }else{ ?>
<div class="link2"><a href="/">Главная</a> → <?php $page->get_name();?></div>
<?php }
}?>
<div class="title"><h1><?php $page->get_name()?></h1></div>
<?php $page->get_content()?>
</div>
На главной странице "хлебных крошек" не будет.
Ваши коды не подошли))
Со статьей новости разобрался! В шаблон вставил код
<div class="link2">
<a href="../">Главная</a> → <a href="../news/">Новости</a> → Обновление дизайна сайта
</div>
<br>
<br>
<h1 style="text-align: center;"><strong>Обновление дизайна сайта</strong></h1>
Мне подходит! А вот когда вставляю код в страницу новостей там где модуль добавляется то код дублируется на странице со статьей новости http://test.komandorauto.ru/4.png
Надо что то где то удалить из dat файла и какого
gpc66, +
bimer, почему наши коды не подошли , ведь они делают именно то о чем вы говорите. Вставляйте эти коды в шаблон где хотите видеть "хлебные крошки" и больше нигде их вставлять будет не надо, ни в страницы , ни где .
Я снова понял что совсем не разбираюсь в коде
gpc66, подскажите в какой файл и между какими строчками вставить этот код?
<div id="content">
<?php
if($URI[1] !== 'index'){
if($URI[1] == 'news' && trim($URI[2]) && $URI[2] !== 'nav'){ ?>
<div class="link2"><a href="/">Главная</a> → <a href="/news">Новости</a> → <?php $page->get_name();?></div>
<?php }else{ ?>
<div class="link2"><a href="/">Главная</a> → <?php $page->get_name();?></div>
<?php }
}?>
<div class="title"><h1><?php $page->get_name()?></h1></div>
<?php $page->get_content()?>
</div>
Я снова понял что совсем не разбираюсь в коде...
Ничего, это дело наживное, научитесь разбираться через пару лет, если будете пытаться это сделать сами, а не задавать сразу вопросы. А вопросы тоже нужно правильно задавать, а то гадай что вам нужно. Вы хотя бы поинтересовались в интернете как называется то, что вы хотите сделать.
Мой код рабочий, я его проверял на стандартном шаблоне. Вставлять его нужно в файл template.dat, куда вставлять я указал. А какой у вас шаблон я не знаю. Точно знаю, что php код вывода содержания страницы одинаков во всех шаблонах, а html код оформления этого содержания может быть любой.
Покажите код вашего файла template.dat, тогда можно точно сказать куда вставлять.
Для bimer. Чтобы было понятней то, что вы неправильно делали. На будущее.
В этом движке вообще нет страниц, есть всего один файл ( template.dat вашего шаблона) в который подгружается разный контент в зависимости от запроса. Запросом является ссылка. Поэтому, когда нажимаешь в меню Новости, то в этот файл подгружается содержание страницы Новости (оно пустое) и превью новостей из модуля. Если нажать на ссылку какой-либо новости в превью, то содержание страницы остается тем же, а превью заменяется на содержание выбранной новости. Теперь, если в содержание самой страницы Новости что-то вставить, а именно это вы и делали, то это содержание будет выводиться на всех страницах относящихся к новостям.
Еще вопрос. Вы обновляли свой сайт до версии 5.1?
Если нет, то код Ivana и мой код, который Ivan отредактировал под версию движка 5.1, работать не будут. Для версии 5.0.1 везде должно быть URL, а не URI. Если обновляли, то правки Ivana в моем коде правильные и все должно работать.
Теперь понял куда вставлять код и разобрался в какое место.
Версия my-engine: 5.0.1 где то работает URI, а где то URL (второй код)
Теперь по коду:
Код ниже мне подходит, но он выводится на всех страницах включая главную
<?php
if($URI[1] !== 'index'){
if($URI[1] == 'news' && trim($URI[2]) && $URI[2] !== 'nav'){ ?>
<div class="link2"><a href="/">Главная</a> → <a href="/news">Новости</a> → <?php $page->get_name();?></div>
<?php }else{ ?>
<div class="link2"><a href="/">Главная</a> → <?php $page->get_name();?></div>
<?php }
}?>
<div class="title"><h1><?php $page->get_name()?></h1></div>
<?php $page->get_content()?>
</div>
Этот код тоже подходит, но он так же работает как предыдущий
<?php
if($URL[1] == 'news' && trim($URL[2])){;?>
<div class="link2"><a href="../">Главная</a> → <a href="../news/">Новости</a> → <?php $page->get_name();?></div>
<?php }else{;?>
<div class="link2"><a href="../">Главная</a> → Новости</div>
<?php };?>
<h2><?php $page->get_name();?></h2>
Этот код тоже мне подходит. Выводится только в новостях, но не выводит название новости и не могу вставить в заголовок название новости
<?php
if($URI[1] == 'news'){
echo'<a href="/">Главная</a> → <a href="/news">Новости</a>';
if(isset($URI[2]) && $URI[1] != 'nav'){
echo' → '.$Page->get_name();
}
}
?>
Если нужно выводить только в новостях, то оставьте вот эту часть кода
<?php
if($URI[1] == 'news' && trim($URI[2]) && $URI[2] !== 'nav'){ ?>
<div class="link2"><a href="../">Главная</a> → <a href="../news/">Новости</a> → <?php $page->get_name();?></div>
<?php };?>
<h2><?php $page->get_name();?></h2>
My-Engine CMS → Вопросы новичков → Новостная лента
Форум работает на PunBB, при поддержке Informer Technologies, Inc