PHP code example of mrstroz / yii2-wavecms-news
1. Go to this page and download the library: Download mrstroz/yii2-wavecms-news library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
mrstroz / yii2-wavecms-news example snippets
'modules' => [
// ...
'wavecms-news' => [
'class' => 'mrstroz\wavecms\news\Module',
/*
* Override classes
'classMap' => [
'News' => 'common\models\News',
]
*/
],
],
'modules' => [
'sitemap' => [
'class' => 'himiklab\sitemap\Sitemap',
'models' => [
'mrstroz\wavecms\news\models\News',
],
'urls' => [
[
'loc' => ['/'],
'changefreq' => \himiklab\sitemap\behaviors\SitemapBehavior::CHANGEFREQ_DAILY,
'priority' => 1,
]
],
'cacheExpire' => 1
]
],
// ...
'components' => [
'urlManager' => [
'rules' => [
// Add rule for sitemap.xml
['pattern' => 'sitemap', 'route' => 'sitemap/default/index', 'suffix' => '.xml'],
],
],
]
// Add migrationPaths to console config:
'controllerMap' => [
'migrate' => [
'class' => 'yii\console\controllers\MigrateController',
'migrationPath' => [
'@vendor/mrstroz/yii2-wavecms-news/migrations',
],
],
],
'modules' => [
// ...
'wavecms-news' => [
'class' => 'mrstroz\wavecms\news\Module',
'classMap' => [
'News' => \common\models\News::class
]
],
],
'container' => [
'definitions' => [
mrstroz\wavecms\news\models\News::class => common\models\News::class
],
],
'modules' => [
// ...
'wavecms' => [
'class' => 'mrstroz\wavecms\news\Module',
'controllerMap' => [
'news' => 'backend\controllers\NewsController'
]
],
],
'components' => [
// ...
'view' => [
'theme' => [
'basePath' => '@app/themes/basic',
'baseUrl' => '@web/themes/basic',
'pathMap' => [
'@wavecms_news/views' => '@app/themes/basic/wavecms-news',
],
],
],
// ...
],
use mrstroz\wavecms\news\models\News;
use Yii;
// ...
//Parse request to set language before run ActiveRecord::find()
Yii::$app->urlManager->parseRequest(Yii::$app->request);
/** @var Settings $settings */
$settings = Yii::$app->settings;
$link = $settings->get('NewsSettings_' . Yii::$app->language, 'overview_link');
$model = Yii::createObject(News::class);
Yii::$app->getUrlManager()->addRules([
$link => 'news/index'
]);
$news = $model::find()->select(['link'])->byAllCriteria()->byType(['news'])->column();
if ($news) {
Yii::$app->getUrlManager()->addRules([
$link . '/<link:(' . implode('|', $news) . ')>' => 'news/detail'
]);
}
use mrstroz\wavecms\news\models\News;
use Yii;
use yii\data\Pagination;
public function actionIndex() {
/** @var Settings $settings */
$settings = Yii::$app->settings;
$query = News::find()->byAllCriteria()->byType('news')->orderBy('create_date DESC');
$count = $query->count();
$pagination = new Pagination([
'totalCount' => $count,
'pageSize' => $settings->get('NewsSettings', 'news_on_page')
]);
$news = $query->offset($pagination->offset)
->limit($pagination->limit)
->all();
return $this->render('index', [
'news' => $news,
'pagination' => $pagination
]);
}
use yii\helpers\Html;
use yii\widgets\LinkPager;
/** @var \mrstroz\wavecms\news\models\News[] $news */
/** @var \yii\data\Pagination $pagination */
/** @var \yii2mod\settings\components\Settings $settings */
$settings = Yii::$app->settings;
$link = $settings->get('NewsSettings_' . Yii::$app->language, 'overview_link');
if ($news) {
foreach ($news as $oneNews) {
echo Html::a($oneNews->title, [$link . '/' . $oneNews->link]);
echo '<br />';
}
}
echo LinkPager::widget([
'pagination' => $pagination,
]);
use mrstroz\wavecms\news\models\News;
// ...
public function actionDetail($link)
{
$news = News::find()->getByLink($link)->one();
return $this->render('detail', [
'news' => $news
]);
}
use himiklab\sitemap\behaviors\SitemapBehavior;
public function behaviors()
{
return [
'sitemap' => [
'class' => SitemapBehavior::className(),
'scope' => function ($model) {
/** @var \yii\db\ActiveQuery $model */
$model->select(['url', 'lastmod']);
$model->andWhere(['is_deleted' => 0]);
},
'dataClosure' => function ($model) {
/** @var self $model */
return [
'loc' => Url::to($model->url, true),
'lastmod' => strtotime($model->lastmod),
'changefreq' => SitemapBehavior::CHANGEFREQ_DAILY,
'priority' => 0.8
];
}
],
];
}