return array(
'^$' => 'MainPage/index/$0',
'^post\/([a-zA-Z\d_]{5,33})$' => 'MainPage/post/$1'
);
function actionPost($post){
$post = $post[0];
$this->m->query("update `posts` set `watch`=`watch`+1 where `href`=?", [$post], 1); // обновляем просмотры статьи
$post = $this->m->query("select * from `posts` where `href`=?", [$post]); // выбираем сами данные статьи
$title = $post[0]['title'];
$description = 'Блог Creative*Web';
$watch = $post[0]['watch'];
$likes = $post[0]['likes'];
// создаём сам блок где выведем лайки и просмотры
$likeswatch = "<span class='watch' style='white-space: pre-wrap;'>$watch <img style='height: 0.8em; top: 2px; position: relative;' src='/template/img/watch.png' alt='' /> </span> <span class='likes'> <span id='likes'>$likes</span> <img id='like' style='cursor: pointer; height: 1em; top: 4px; position: relative;' src='/template/img/likes2.png' alt='' /></span>";
// Подключаем вид
require ROOT."/template/views/main.php";
return true;
}
В файле вида ловим данные из контроллера
if(isset($post))
{
echo $post[0]['title']."<br/><br/>".$post[0]['description']."<br/><br/>".$likeswatch;
}
Осталось реализовать лайк и его отмену в файле script.js
$(function()
{
var post = location.pathname
post = post.split("/")
post = post.pop()
if(localStorage.getItem(post) == 1){
$("#like").attr('src', '/template/img/likes.png')
}
$("#like").on('click touchstart', function(){
let post = location.pathname,
count = parseInt($("#likes").text())
post = post.split("/") // разбиваем урл на массив
post = post.pop() // получение последнего элемента этого массива, то есть её href в базе
// для запоминания лайка будем использовать localstorage вместо кук
if(localStorage.getItem(post) != 1){
$.ajax({
url: "/ajaxController.php",
type: "POST",
cache: false,
data:
{
func: "setLike", post: post, punct: '+'
},
success: function(response)
{
if(response == 1){
localStorage.setItem(post, '1')
$("#like").attr('src', '/template/img/likes.png')
$("#likes").text(count+1)
console.log()
}
}
})
}else{
$.ajax({
url: "/ajaxController.php",
type: "POST",
cache: false,
data:
{
func: "setLike", post: post, punct: '-'
},
success: function(response)
{
if(response == 1){
localStorage.removeItem(post)
$("#like").attr('src', '/template/img/likes2.png')
$("#likes").text(count-1)
}
}
})
}
})
})
Функция которая ловит аякс-запрос в ajaxController.php
function setLike(){
$post = $this->escapeStr($_POST['post'], 33);
$punct = $this->escapeStr($_POST['punct'], 1);
echo $this->query("update `posts` set `likes`=`likes` $punct 1 where `href`=?", [$post], 1);
}
Вот и вся движуха. Желаю успехов на поприще. Харе Кришна!

