JavaScript
7
Вклад в тег
$("a.youe_class").click(function() {
...
});
$("a").click(function() {
...
});
<p><a href="#top">К началу страницы</a></p>
<section id="top">
...
</section>
$(document).ready(function() {
var margin = 100; // переменная для контроля докрутки
$("a").click(function() { // тут пишите условия, для всех ссылок или для конкретных
$("html, body").animate({
scrollTop: $($(this).attr("href")).offset().top+margin+ "px" // .top+margin - ставьте минус, если хотите увеличить отступ
}, {
duration: 1600, // тут можно контролировать скорость
easing: "swing"
});
return false;
});
});
error.php
<?php
use yii\helpers\Html;
/* @var $this yii\web\View */
/* @var $name string */
/* @var $message string */
/* @var $exception Exception */
$this->title = $name;
?>
<?=$name?>
<?=$this->title;?>
<?=$message;?>
<?=Yii::t('yii','значение');?>
/* @var $exception Exception */
class HttpException extends UserException
{
/**
* @var int HTTP status code, such as 403, 404, 500, etc.
*/
public $statusCode;
/**
* Constructor.
* @param int $status HTTP status code, such as 404, 500, etc.
* @param string $message error message
* @param int $code error code
* @param \Exception $previous The previous exception used for the exception chaining.
*/
public function __construct($status, $message = null, $code = 0, \Exception $previous = null)
{
$this->statusCode = $status;
parent::__construct($message, $code, $previous);
}
/**
* @return string the user-friendly name of this exception
*/
public function getName()
{
if (isset(Response::$httpStatuses[$this->statusCode])) {
return Response::$httpStatuses[$this->statusCode];
} else {
return 'Error';
}
}
}
public $statusCode;
<?=($exception->statusCode == '404') ? $this->title = "Ошибка 404" : ''; ?>
<?=($exception->statusCode == '403') ? $this->title = "Доступ запрещён" : ''; ?>
<?=($exception->statusCode == '500') ? $this->title = "Внутренняя ошибка сервера" : ''; ?>
/vendor/yiisoft/yii2/messages/ru/yii.php
$message
<?php
return [
...
'Page not found.' => 'Страница не найдена.',
'You are not allowed to perform this action.' => 'Вам не разрешено производить данное действие.',
'An internal server error occurred.' => 'Возникла внутренняя ошибка сервера.',
...
];
<?=Yii::t('yii', 'Page not found.');?> и т д...
News()
:...
<?php
public function sklonen($n,$s1,$s2,$s3, $b = false){
$m = $n % 10; $j = $n % 100;
if($b) {$n = '<b>'.$n.'</b>';}
if($m==0 || $m>=5 || ($j>=10 && $j<=20)) {return $n.' '.$s3;}
if($m>=2 && $m<=4) {return $n.' '.$s2;}
return $n.' '.$s1;
}
...
...
public function actionNews()
{
$searchModel = new NewsSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams); // ищешь через LIKE
return $this->render('news', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
...
NewsSearch()
:...
$dataProvider = new ActiveDataProvider([
'query' => News::find()->where(['visibility'=>1])->orderBy('date DESC'),
'pagination' => [
'pageSize' => 20, // говоришь системе мне нужно вывести 20 записей
],
]);
...
<?php
use yii\helpers\Html;
use yii\widgets\Pjax;
use yii\grid\GridView;
use budyaga_cust\users\models\News;
$this->title = 'Новости';
$this->params['breadcrumbs'][] = $this->title;
?>
<?php Pjax::begin(); ?>
<?= GridView::widget([
'dataProvider' => $dataProvider,
//'filterModel' => $searchModel,
'showHeader' => false, // вырезаем шапку таблицы
'tableOptions' => [
'class' => 'table' // можно задать свой, тут 100% ширина блока
],
'options' => ['tag' => 'div', 'class' => 'col-lg-12'], // оборачиваем в div с Bootstrap CSS
'emptyTextOptions' => ['tag' => 'p', 'class' => 'text-center text-danger'],
'emptyText' => 'По вашему запросу ничего не найдено',
'summary' => '<br/><p class="text-center text-muted">Всего найдено '.News::sklonen( '{totalCount}', 'новость', 'новости', 'новостей').'</p>', // 127
'layout' => '{summary}{items}', // настраиваем внешний вид как нам надо
'columns' => [
//['class' => 'yii\grid\SerialColumn'], // нумерация строк может вообще не пригодится
[
// 'attribute' => 'img', // если много атрибутов в контенте можно это не писать
'format' => 'raw',
'label' => '',
'content'=>function($data){
return '
<div class="row">
<div class="col-md-3">
'.Html::a(Html::img('/img/box/'.$data->img,
[
'class' => 'thumbnail',
'alt' => $data->header,
'style' => 'width:100%;'
])
,'/new/'.$data->link).'
</div>
<div class="col-md-9 products">
'.Html::a($data->header, '/new/'.$data->link).'
'.Html::tag('p', $data->text).'
'.Html::a('подробнее', '#',['class' =>'buttons pull-right']).'
</div>
</div>
';
}
],
], // может понадобится по дизайну, чтобы пагинация была в другом месте
]); ?>
<?= GridView::widget([
'dataProvider' => $dataProvider,
'showHeader' => false,
'showOnEmpty' => false,
'summary' => 'страницы {page} из {pageCount}',
'layout' => '<div class="page-nav td-pb-padding-side">{pager}<span class="pages">{summary}</span></div>', // формируем внешний вид пагинации
'pager' => [
'maxButtonCount' => 5, // максимум 5 кнопок
'options' => ['id' => 'mypager', 'class' => 'pagination'], // прикручиваем свой id чтобы создать собственный дизайн не касаясь основного.
'nextPageLabel' => '<i class="ionicons ion-arrow-right-c"></i>', // стрелочка в право
'prevPageLabel' => '<i class="ionicons ion-arrow-left-c"></i>', // стрелочка влево
],
]); ?>
<?php Pjax::end(); ?>
public function actionPage(){
$select = City::find()->select(['obl'])->distinct()->all();
return $this->render('page', ['select' => $select,]);
}
Немного поясню City это модель, которая обращается к некой таблице в БД
obl - название столбца в таблице, записи которого хотите вывести
<select class="form-control">
<?php foreach ($select as $m) { ?>
<option value="<?=$m->obl;?>"><?=$m->obl;?></option>
<?php } ?>
</select>
->count();
$select = City::find()->select(['obl'])->distinct()->count();
<p>У вас всего <?=$select;?> уникальных записей</p>