1

Тема: Новостная лента

На днях при добавления новой статьи на сайт понял, не хватает полноценного редактора в Новостной ленте.

2

Re: Новостная лента

+1 к редактору

еще новости не упорядочиваются по дате, выводятся только в той последовательности в которой создавались.

3

Re: Новостная лента

Как подключить визуальный редактор на страницу добавления новостей?

4

Re: Новостная лента

Как изменить время создания новости??

5 (2017-11-10 15:25:35 отредактировано gpc66)

Re: Новостная лента

На примере тестовой новости, которая по умолчанию.

Находишь файл header_news_test.dat (путь:modules/news2/data/header_news_test.dat)

Открываешь файл, там такая строка

Первая тестовая новость<||>Ключевые слова для тестовой новости<||>Описание для тестовой новости<||>0<||>31.12.1999 23:59

В конце строки меняешь дату и время на нужные, сохраняешь файл и загружаешь в корень modules/news2/data

Аналогично и другая новость

Только не понятна сама суть вопроса, только сейчас дошло, ведь есть специальное поле для ввода даты

Или у тебя версия 5.0?

6

Re: Новостная лента

Дата публикации:

7 (2017-11-10 16:54:38 отредактировано gpc66)

Re: Новостная лента

Если версия 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');

Это удаления файла с датой при удалении всей новости.

Теперь вроде бы все, если нигде не накосячел, то все должно работать

8

Re: Новостная лента

Спасибо за развернутый ответ с кодом. У меня 5.0. Ступил и не посмотрел саму страницу новости в редакторе. Там есть строка Дата публикации

9

Re: Новостная лента

Это в 5.0.1 есть, а в 5.0 нет, но можно сделать.

Ничего, зато потренировал мозг smile , иногда полезно

10

Re: Новостная лента

И тут я ошибся)) действительно 5.0.1 версия

11

Re: Новостная лента

Парни выручайте! Копаюсь с блоком новостей и нужно кое что сделать, а у меня знаний не хватает.
Отметил красным на фото
http://test.komandorauto.ru/2.png
http://test.komandorauto.ru/3.png
Код в шапке такой

<div class="link2"><a href="../">Главная</a> &nbsp;&rarr; &nbsp;<a href="../news/">Новости</a></div>

Но если его прописать на странице там где вставляется модуль Новостной ленты, то получается что на всех станицах новостей одно и тоже, т.е на главной Новостей, на странице привью и на самой новости

12 (2017-12-08 20:15:58 отредактировано Ivan)

Re: Новостная лента

а вам надо чтобы на странице самой новости этой вставки не было ? что то не понял вопрос

13

Re: Новостная лента

Наоборот. Нужно все что выделено на картинках

14

Re: Новостная лента

может вам надо что-то типа этого

<?php 
global $URI, $Page; // это писать если вставляете в саму страницу через редактор
?>
<div class="link2">
<a href="../">Главная</a> &nbsp;&rarr; &nbsp;<a href="../news/">Новости</a> <?php if(isset($URI[2])){echo'&nbsp;&rarr; &nbsp;'.$Page->get_name();}?>
</div>

15 (2017-12-08 21:01:15 отредактировано Ivan)

Re: Новостная лента

Или вот лучше вариант, но для вставки в шаблон

<?php
if($URI[1] == 'news'){
    echo'<a href="/">Главная</a> &nbsp;&rarr; &nbsp;<a href="/news">Новости</a>';
    if(isset($URI[2]) && $URI[1] != 'nav'){
        echo' &nbsp;&rarr; &nbsp;'.$Page->get_name();
    }
}
?>

Хлебные крошки будут выводится только на странице news

ps
Хлебные крошки - так называется то что вы делаете, т.е. "Главная > Новости > Название новости" это и есть хлебные крошки , сленг вобщем ))

16

Re: Новостная лента

Если я правильно понял, то это "хлебные крошки". Если это так, то можно сделать вот такой вариант.

Содержание страницы в любом шаблоне выводится примерно таким кодом

<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> &nbsp;&rarr; &nbsp;<a href="../news/">Новости</a> &nbsp;&rarr; &nbsp;<?php $page->get_name();?></div>
<?php }else{;?>
<div class="link2"><a href="../">Главная</a> &nbsp;&rarr; &nbsp;<?php $page->get_name();?></div>
<?php };?>
<h2><?php $page->get_name();?></h2>
<div class="page"><?php $page->get_content();?></div>
</div>

17

Re: Новостная лента

gpc66, прикольно получилось , одновременно почти одно и тоже написали :-)

18 (2017-12-08 23:34:21 отредактировано Ivan)

Re: Новостная лента

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> &nbsp;&rarr; &nbsp;<a href="/news">Новости</a> &nbsp;&rarr; &nbsp;<?php $page->get_name();?></div>
<?php }else{ ?>
<div class="link2"><a href="/">Главная</a> &nbsp;&rarr; &nbsp;<?php $page->get_name();?></div>
<?php }
}?>
<div class="title"><h1><?php $page->get_name()?></h1></div>
<?php $page->get_content()?>
</div>

На главной странице "хлебных крошек" не будет.

19

Re: Новостная лента

Ваши коды не подошли))
Со статьей новости разобрался! В шаблон вставил код

<div class="link2"> 
<a href="../">Главная</a> &nbsp;&rarr; &nbsp;<a href="../news/">Новости</a>  &nbsp;&rarr; &nbsp;Обновление дизайна сайта
</div>
<br>
<br>
<h1 style="text-align: center;"><strong>Обновление дизайна сайта</strong></h1>

Мне подходит! А вот когда вставляю код в страницу новостей там где модуль добавляется то код дублируется на странице со статьей новости http://test.komandorauto.ru/4.png
Надо что то где то удалить из dat файла и какого

20

Re: Новостная лента

gpc66, +
bimer, почему наши коды не подошли , ведь они делают именно то о чем вы говорите. Вставляйте эти коды в шаблон где хотите  видеть "хлебные крошки" и больше нигде их вставлять будет не надо, ни в страницы , ни где .

21

Re: Новостная лента

Я снова понял что совсем не разбираюсь в коде
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> &nbsp;&rarr; &nbsp;<a href="/news">Новости</a> &nbsp;&rarr; &nbsp;<?php $page->get_name();?></div>
<?php }else{ ?>
<div class="link2"><a href="/">Главная</a> &nbsp;&rarr; &nbsp;<?php $page->get_name();?></div>
<?php }
}?>
<div class="title"><h1><?php $page->get_name()?></h1></div>
<?php $page->get_content()?>
</div>

22

Re: Новостная лента

bimer пишет:

Я снова понял что совсем не разбираюсь в коде...

Ничего, это дело наживное, научитесь разбираться через пару лет, если будете пытаться это сделать сами, а не задавать сразу вопросы. А вопросы тоже нужно правильно задавать, а то гадай что вам нужно. Вы хотя бы поинтересовались в интернете как называется то, что вы хотите сделать.

Мой код рабочий, я его проверял на стандартном шаблоне. Вставлять его нужно в файл template.dat, куда вставлять я указал. А какой у вас шаблон я не знаю. Точно знаю, что php код вывода содержания страницы одинаков во всех шаблонах, а html код оформления этого содержания может быть любой.

Покажите код вашего файла template.dat, тогда можно точно сказать куда вставлять.

23 (2017-12-09 07:21:32 отредактировано gpc66)

Re: Новостная лента

Для bimer. Чтобы было понятней то, что вы неправильно делали. На будущее.

В этом движке вообще нет страниц, есть всего один файл ( template.dat вашего шаблона) в который подгружается разный контент в зависимости от запроса. Запросом является ссылка. Поэтому, когда нажимаешь в меню Новости, то в этот файл подгружается содержание страницы Новости (оно пустое) и превью новостей из модуля. Если нажать на ссылку какой-либо новости в превью, то содержание страницы остается тем же, а превью заменяется на содержание выбранной новости. Теперь, если в содержание самой страницы Новости что-то вставить, а именно это вы и делали, то это содержание будет выводиться на всех страницах относящихся к новостям.

Еще вопрос. Вы обновляли свой сайт до версии 5.1?

Если нет, то код Ivana и мой код, который Ivan отредактировал под версию движка 5.1, работать не будут. Для версии 5.0.1 везде должно быть URL, а не URI. Если обновляли, то правки Ivana в моем коде правильные и все должно работать.

24

Re: Новостная лента

Теперь понял куда вставлять код и разобрался в какое место.
Версия 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> &nbsp;&rarr; &nbsp;<a href="/news">Новости</a> &nbsp;&rarr; &nbsp;<?php $page->get_name();?></div>
<?php }else{ ?>
<div class="link2"><a href="/">Главная</a> &nbsp;&rarr; &nbsp;<?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> &nbsp;&rarr; &nbsp;<a href="../news/">Новости</a> &nbsp;&rarr; &nbsp;<?php $page->get_name();?></div>
<?php }else{;?>
<div class="link2"><a href="../">Главная</a> &nbsp;&rarr; &nbsp;Новости</div>
<?php };?>
<h2><?php $page->get_name();?></h2>

Этот код тоже мне подходит. Выводится только в новостях, но не выводит название новости и не могу вставить в заголовок  название новости

<?php
if($URI[1] == 'news'){
    echo'<a href="/">Главная</a> &nbsp;&rarr; &nbsp;<a href="/news">Новости</a>';
    if(isset($URI[2]) && $URI[1] != 'nav'){
        echo' &nbsp;&rarr; &nbsp;'.$Page->get_name();
    }
}
?>

25

Re: Новостная лента

Если нужно выводить только в новостях, то оставьте вот эту часть кода

<?php 
if($URI[1] == 'news' && trim($URI[2]) && $URI[2] !== 'nav'){ ?>
<div class="link2"><a href="../">Главная</a> &nbsp;&rarr; &nbsp;<a href="../news/">Новости</a> &nbsp;&rarr; &nbsp;<?php $page->get_name();?></div>
<?php };?>
<h2><?php $page->get_name();?></h2>