Автор Тема: Модификация модуля "Новости"  (Прочитано 182 раз)

0 Пользователей и 1 Гость просматривают эту тему.

whoohawАвтор темы

  • *
  • Оффлайн
  • Награды Более 10 созданных тем Более 50 сообщений
  • Дата регистрации: Апр 2018
  • Расположение: Тверь
  • Возраст: 29
  • Сообщений: 77
  • Страна: ru
  • Поблагодарили: 9 раз(а)
  • Репутация +3/-1
  • Пол: Мужской
  • Дата рождения:1988-09-21
    • Награды
  • Социальные сети:
    ВКонтакте
Модификация модуля "Новости"
« : 19 Май 2018, 16:52:42 »
Нет оценки
Модификация модуля "Новости". Кликабельные новости. Каждая запись на отдельной странице + соц. кнопки от Яндекс.

http://svalka58.ru/my_img/img/2018/05/19/eb9ee.jpg
Модификация модуля "Новости"

С чем будем работать? Файлы /pages/_news.php и корневой .htaccess.
Цели модификации? Рассмотрим работу GET-параметра, немного пофильтруем и присобачим социальный блок от Яндекса с кнопками "поделиться".
Так же мы выстроим некоторую алгоритмизацию работы. Это необходимо для создания прямой логической цепи. Может показаться немного неудобным прыгать от одного файла к другому, но вы поймете так лучше.

Что же, давайте для начала откроем файл _news.php.

1. Ищем строку:

<td align="left"><h3><?=$news["title"]; ?></h3></td>


Это строка отображения заголовка новости из выбранного массива.
Заменяем ее на:

<td align="left"><h3><a href="/news/show/<?=$news["id"];?>"><?=$news["title"]; ?></a></h3></td>


Теперь, все заголовки новостей стали кликабельны. Можно посмотреть. Данный код будет генерировать ссылки вида: site.ru/news/show/id, где id - это реальный номер новости, например site.ru/news/show/20. Перейдя по ссылке - ничего не произойдет, только сервер начнет Вас ругать. Перейдем к следующему пункту, чтобы исправить это недоразумение.

2. Откроем корневой .htaccess. Найдем строку:

RewriteRule ^news(/?)+$ index.php?menu=news [L]


Добавим ниже сразу следующую строку

RewriteRule ^news/show/([0-9]+)(/?)+$ index.php?menu=news&show=$1 [L]


Для того, чтобы разобрать структуру настройки правил, следует заводить отдельный, долгий и нудный пост. Сравните, что добавилось. Мы расширили правило и сообщили серверу о том, что после news/ мы можем так же добавлять каталог show и цифровые значения для него от 0 до 9, без ограничения. Если настанет то время, когда у Вас будет миллион новостей, то вы так же с легкостью откроете ссылку вида site.ru/news/show/1000000 :)

Сохраните файл и откройте снова новости на сайте, перейдите по ссылке, кликнув по заголовку новостей. Открывая любую новость, Вы не увидите изменений. Будет открываться весь список новостей. Только будет меняться ссылка в адресной строке браузера. Настало время для использования GET-параметра. Будем ловить ссылку и по ней определять, какую новость будем показывать пользователю.

3. Открываем снова файл _news.php.
В нужном месте, в блоке PHP, например перед строчкой

$db->Query("SELECT * FROM db_news ORDER BY id DESC");


Напишем:

if(isset($_GET['show'])) {

}else {


Сразу же добавим в конце закрывающую скобку } сразу ниже строки:

}else echo "<center>Новостей нет :(</center>";


Ниже GET и будем кодить! :)
Для начала поясню, что мы сделали: Мы запустили условие проверки на установку (или использование) параметра GET с аргументом show (так как в ссылке именно после show мы должны прописывать цифровой id новости и получать необходимый текст).
Если у нас ссылка имеет вид site.ru/news/show/6, то в таком случае GET аргумент show должен принять значение

6. Давайте проверим? В фигурных скобках пишем:

$id=intval($_GET['news']);
echo "<br>".$id. "- выбранный id новостей";


Все получится так:

if(isset($_GET['show'])) {
   $id=intval($_GET['show']);
   echo "<br>".$id. "- выбранный id новостей";
}else {


При помощи intval() мы говорим скрипту о том, что готовы хранить в переменной только целочисленные значения. Например 1, 2, 5, 10 или 100. Символы, буквы и тд не пройдут. Вот так работает фильтрация! Без нее возможен взлом!

Ну что, проверяем? Откроем любую новость и посмотрим на результат.
Страница нам будет повторять цифру в конце ссылки и показывать сообщение на странице. Можно убрать теперь из кода строку:

echo "<br>".$id. "- выбранный id новостей";


Теперь мы храним в переменной $id номер новости. Осталось сделать выборку. Я думаю, что это будет легко :)

$db->Query("SELECT * from db_news WHERE id='$id'");
$news2=$db->FetchArray();


Таким образом мы получили массив нужной новости и храним все в массиве $news2.
Выводим результат:

echo $news2["title"]."(от ".date("d.m.Y",$news2["date_add"]).")<br><br>";
echo $news2["news"];


В итоге получаем:

if(isset($_GET['show'])) {
   $id=intval($_GET['show']);
   $db->Query("SELECT * from db_news WHERE id='$id'");
   $news2=$db->FetchArray();
   echo $news2["title"]."(от ".date("d.m.Y",$news2["date_add"]).")<br><br>";
   echo $news2["news"];
}else {


Я думаю, что осталось немного места и для бонуса от яндекса! Ну это уже по желанию! )))
Заходим по ссылке - https://tech.yandex.ru/share/ и настраиваем внешний вид, желаемые кнопки и тд. Предположим, что мы получили код такого вида:

<script src="//yastatic.net/es5-shims/0.0.2/es5-shims.min.js"></script>
<script src="//yastatic.net/share2/share.js"></script>
<div class="ya-share2" data-services="vkontakte,facebook,odnoklassniki,moimir"></div>


Теперь добавим этот код в страницу с новостью. Весь код будет выглядеть так:

if(isset($_GET['show'])) {
   $id=intval($_GET['show']);
   $db->Query("SELECT * from db_news WHERE id='$id'");
   $news2=$db->FetchArray();
   echo $news2["title"]."(от ".date("d.m.Y",$news2["date_add"]).")<br><br>";
   echo $news2["news"];
   echo '<br><br><script src="//yastatic.net/es5-shims/0.0.2/es5-shims.min.js"></script>
<script src="//yastatic.net/share2/share.js"></script>
<div class="ya-share2" data-services="vkontakte,facebook,odnoklassniki,moimir"></div>';
}else {


Ссылка на источник
 

shans5

  • *
  • *
  • Оффлайн
  • Награды Репутация  более 25 Более 500 созданных тем Более 2500 сообщений Более 2 лет на форуме Бывает груб к участникам форума. За время в онлайне на форуме
  • Дата регистрации: Сен 2015
  • Расположение: Регион 58
  • Возраст: 39
  • Сообщений: 2947
  • Страна: ru
  • Поблагодарили: 270 раз(а)
  • Репутация +44/-4
  • Пол: Мужской
  • Всё только начинается !!!
  • Дата рождения:1979-06-30
    • Награды
Модификация модуля "Новости"
« Ответ #1 : 19 Май 2018, 19:04:39 »
Нет оценки
Ну как вариант  .-.0)
Подвергнуть критике, может любой.
Создать то,что будет подвергнуто критике,дано не каждому.

 
Пользователи, которые поблагодарили этот пост: whoohaw

whoohawАвтор темы

  • *
  • Оффлайн
  • Награды Более 10 созданных тем Более 50 сообщений
  • Дата регистрации: Апр 2018
  • Расположение: Тверь
  • Возраст: 29
  • Сообщений: 77
  • Страна: ru
  • Поблагодарили: 9 раз(а)
  • Репутация +3/-1
  • Пол: Мужской
  • Дата рождения:1988-09-21
    • Награды
  • Социальные сети:
    ВКонтакте
Модификация модуля "Новости"
« Ответ #2 : 19 Май 2018, 19:15:13 »
Нет оценки
Ну как вариант 
И не лень же было! Спасибо!
 

shans5

  • *
  • *
  • Оффлайн
  • Награды Репутация  более 25 Более 500 созданных тем Более 2500 сообщений Более 2 лет на форуме Бывает груб к участникам форума. За время в онлайне на форуме
  • Дата регистрации: Сен 2015
  • Расположение: Регион 58
  • Возраст: 39
  • Сообщений: 2947
  • Страна: ru
  • Поблагодарили: 270 раз(а)
  • Репутация +44/-4
  • Пол: Мужской
  • Всё только начинается !!!
  • Дата рождения:1979-06-30
    • Награды
Модификация модуля "Новости"
« Ответ #3 : 19 Май 2018, 19:19:02 »
Нет оценки
И не лень же было! Спасибо!

Честно говоря- лень :shirty:  :be happy:

Долго оформлять по нормальному

 
Теги:
 

Совместная покупка модуля Колесо фортуны как у Rich-Birds

Автор takebetРаздел Совместные покупки

Ответов: 62
Просмотров: 3399
Последний ответ 12 Сентябрь 2017, 06:02:44
от GameRussia
Совместная покупка модуля Битва между игроками

Автор fordРаздел Совместные покупки

Ответов: 2
Просмотров: 532
Последний ответ 09 Апрель 2017, 03:41:13
от kvozimir
Не могу разобраться с работой модуля конкурса рефералов

Автор siskelruРаздел Вопросы по модулям фф

Ответов: 1
Просмотров: 288
Последний ответ 05 Декабрь 2017, 00:17:24
от hdlimon
Подключение автомодерации для модуля серфинг

Автор ZateynikРаздел Разное для фф

Ответов: 12
Просмотров: 3626
Последний ответ 07 Декабрь 2017, 08:02:50
от hdlimon
Настройка модуля аукцион ставок

Автор SnaykРаздел Вопросы по модулям фф

Ответов: 5
Просмотров: 826
Последний ответ 11 Ноябрь 2016, 15:42:05
от Snayk
Имя пользователя:
Пароль:
Session: