-
Notifications
You must be signed in to change notification settings - Fork 1.4k
/
ArticleController.php
96 lines (85 loc) · 3.26 KB
/
ArticleController.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<?php
namespace fecshop\app\appfront\modules\Cms\controllers;
use fecshop\app\appfront\modules\AppfrontController;
use Yii;
class ArticleController extends AppfrontController
{
public function init()
{
parent::init();
}
// 网站信息管理
public function actionIndex()
{
$data = $this->getBlock()->getLastData();
if (!is_array($data) && empty($data)) {
return Yii::$service->url->redirect404();
}
return $this->render($this->action->id, $data);
}
public function actionChangecurrency()
{
$currency = \fec\helpers\CRequest::param('currency');
Yii::$service->page->currency->setCurrentCurrency($currency);
}
public function behaviors()
{
if (Yii::$service->store->isAppServerMobile()) {
$primaryKey = Yii::$service->cms->article->getPrimaryKey();
$primaryVal = Yii::$app->request->get($primaryKey);
//echo $primaryVal;
$article = Yii::$service->cms->article->getByPrimaryKey($primaryVal);
//var_dump($article);
if (is_object($article) && $article['url_key']) {
$url_key = $article['url_key'];
$urlPath = 'cms/page'.$url_key;
Yii::$service->store->redirectAppServerMobile($urlPath);
}
}
$behaviors = parent::behaviors();
$primaryKey = Yii::$service->cms->article->getPrimaryKey();
$article_id = Yii::$app->request->get($primaryKey);
$cacheName = 'article';
if (Yii::$service->cache->isEnable($cacheName)) {
$timeout = Yii::$service->cache->timeout($cacheName);
$disableUrlParam = Yii::$service->cache->disableUrlParam($cacheName);
$cacheUrlParam = Yii::$service->cache->cacheUrlParam($cacheName);
$get_str = '';
$get = Yii::$app->request->get();
// 存在无缓存参数,则关闭缓存
if (isset($get[$disableUrlParam])) {
$behaviors[] = [
'enabled' => false,
'class' => 'yii\filters\PageCache',
'only' => ['index'],
];
return $behaviors;
}
if (is_array($get) && !empty($get) && is_array($cacheUrlParam)) {
foreach ($get as $k=>$v) {
if (in_array($k, $cacheUrlParam)) {
if ($k != 'p' || $v != 1) {
$get_str .= $k.'_'.$v.'_';
}
}
}
}
$store = Yii::$service->store->currentStore;
$currency = Yii::$service->page->currency->getCurrentCurrency();
$behaviors[] = [
'enabled' => true,
'class' => 'yii\filters\PageCache',
'only' => ['index'],
'duration' => $timeout,
'variations' => [
$store, $currency, $get_str, $article_id,
],
//'dependency' => [
// 'class' => 'yii\caching\DbDependency',
// 'sql' => 'SELECT COUNT(*) FROM post',
//],
];
}
return $behaviors;
}
}