Загрузка...

Создаем кнопку "Обновить дату" или "Поднять вверх"

Создаем кнопку "Обновить дату" или "Поднять вверх"

Всем привет.

Продолжим серию уроков для улучшения типов контента. В прошлый раз создали Кнопку "Начислять рейтинг", на этот раз создадим кнопку "Обновить дату" или "Поднять вверх" - это полезно для типа контента Объявления или вообще, когда потребуется поднять какую нибудь новость на верх. Советую изучить предыдущий урок, так как там мы создали базовый контроллер exemple.

Создаем хук

Кнопку мы может создать сразу для всех типов контента (новости, статьи, блоги, объявления) или же конкретно для одного типа. На данном примере, я покажу вариант для всех типов контента.

Создаем файл \system\controllers\exemple\hooks\content_before_item.php

Внутри добавить

<?php
class onExempleContentBeforeItem extends cmsAction { public function run($data){ list($ctype, $item, $fields) = $data; if(cmsUser::get('id') == $item['user_id'] || cmsUser::get('is_admin')) { cmsTemplate::getInstance()->addToolButton(array( 'class' => 'accept', 'title' => 'Обновить дату', 'href' => href_to('exemple', 'top', array($ctype['name'], $item['id'])) )); } return array($ctype, $item, $fields); }
}

Обратите внимание на строку 5, там мы проверяем является ли текущий пользователь автором данного материала или же он админ, т.е. кнопку Обновить дату, видит автор материала или админ. Если хотите, что бы кнопку видел только админ, то строку 5 замените на

if(cmsUser::get('is_admin')) {

Запишем в манифест

Что бы хук работал и кнопка "Обновить дату" появилась на страницах просмотр материала, нам надо добавить наш хук в \system\controllers\exemple\manifest.php

Сейчас в этом файле уже есть данные от предыдущего урока, по этому мы допишем свой код.

<?php return array( 'hooks' => array( 'user_profile_buttons', 'content_before_item', ) );

Теперь на страницах просмотр материала, можно увидит кнопку "Обновить дату", но при нажатии получаем ошибку 404, так как мы еще не создали обработчик для этой кнопки.

Пишем обработчик

Создать файл \system\controllers\exemple\actions\top.php (если нет папки actions, создайте ее)

Внутри добавить

<?php
class actionExempleTop extends cmsAction { public function run($ctype = false, $id = false){ if(!$ctype || !$id){cmsCore::error404();} $this->model->update('con_' . $ctype, $id, array('date_pub' => date('Y-m-d H:i:s'))); cmsUser::addSessionMessage('Дата успешно обновлена', 'success'); $this->redirectBack(); }
}

На этом всё, спасибо что вы с нами, ждите новых уроков :)

07:14
3.37K
RSS
10:10

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

Загрузка...