From 109e122d498710871c6d09d131644e4a8a219830 Mon Sep 17 00:00:00 2001
From: jsasg <735273025@qq.com>
Date: Sat, 12 Apr 2025 16:21:32 +0800
Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=96=87=E7=AB=A0=E8=AF=A6?=
=?UTF-8?q?=E6=83=85=E9=A1=B5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/index/controller/Article.php | 31 +++++++-
app/index/lang/en-us.php | 10 +++
app/index/lang/zh-cn.php | 10 +++
app/index/model/ArticleModel.php | 13 +++-
app/index/view/article/detail.html | 84 ++++++++++++++++++++++
app/index/view/article/index.html | 11 ++-
public/static/index/css/articleDetail.css | 3 +-
public/static/index/images/1line.png | Bin 0 -> 1093 bytes
public/static/index/images/search.png | Bin 0 -> 572 bytes
public/static/index/images/share1.png | Bin 0 -> 1194 bytes
public/static/index/images/share2.png | Bin 0 -> 1394 bytes
public/static/index/images/share3.png | Bin 0 -> 1361 bytes
public/static/index/images/share4.png | Bin 0 -> 1501 bytes
13 files changed, 150 insertions(+), 12 deletions(-)
create mode 100644 app/index/view/article/detail.html
create mode 100755 public/static/index/images/1line.png
create mode 100755 public/static/index/images/search.png
create mode 100755 public/static/index/images/share1.png
create mode 100755 public/static/index/images/share2.png
create mode 100755 public/static/index/images/share3.png
create mode 100755 public/static/index/images/share4.png
diff --git a/app/index/controller/Article.php b/app/index/controller/Article.php
index 6d7d85b7..52cfadb4 100644
--- a/app/index/controller/Article.php
+++ b/app/index/controller/Article.php
@@ -20,8 +20,9 @@ class Article extends Common
$param = request()->param([
'pid',
'cid',
- 'page/d' => 1,
- 'size/d' => 12,
+ 'keywords' => null,
+ 'page/d' => 1,
+ 'size/d' => 12,
]);
// 获取banner焦点图
@@ -55,7 +56,10 @@ class Article extends Common
'desc',
'image'
])
+ ->withSearch(['title'], ['title' => $param['keywords']??null])
->category($param['cid']??$categorys[0]['id'])
+ ->where('release_time', '<=', date('Y-m-d H:i:s'))
+ ->order(['sort' => 'asc', 'release_time' => 'desc', 'id' => 'desc'])
->paginate([
'list_rows' => $param['size'],
'page' => $param['page'],
@@ -71,6 +75,29 @@ class Article extends Common
*/
public function detail()
{
+ $id = request()->param('id');
+ $detail = ArticleModel::withoutField([
+ 'created_at',
+ 'updated_at',
+ 'deleted_at'
+ ])
+ ->bypk($id)
+ ->find();
+ View::assign('detail', $detail);
+ // 获取倒序或发布时间倒序3篇文章做为推荐文章
+ $recommends = ArticleModel::field([
+ 'id',
+ 'title',
+ 'desc',
+ 'image'
+ ])
+ ->where('id', '<>', $id)
+ ->order(['release_time' => 'desc', 'id' => 'desc'])
+ ->limit(3)
+ ->select();
+ View::assign('recommends', $recommends);
+
+ return View::fetch('detail');
}
}
diff --git a/app/index/lang/en-us.php b/app/index/lang/en-us.php
index 75fa39c3..81f3cb94 100644
--- a/app/index/lang/en-us.php
+++ b/app/index/lang/en-us.php
@@ -21,5 +21,15 @@ return [
'faq' => 'FAQ',
'faq_short_desc' => 'What are you most concerned about',
'faq_desc' => 'Our customer support is available Manday to Friday 9am600pmAverage arswer time 24h',
+ ],
+ 'article' => [
+ 'detail_share' => 'SHARE',
+ 'detail_leave_reply' => 'Leave a Reply',
+ 'detail_leave_reply_name' => 'Name',
+ 'detail_leave_reply_email' => 'Email',
+ 'detail_leave_reply_email_tip' => 'Your email address will not be pulished.',
+ 'detail_leave_reply_comment' => 'Comment',
+ 'detail_leave_reply_submit' => 'POST COMMENT',
+ 'detail_recommend' => 'Recommended for you',
]
];
\ No newline at end of file
diff --git a/app/index/lang/zh-cn.php b/app/index/lang/zh-cn.php
index 3ad53f3b..14e93584 100644
--- a/app/index/lang/zh-cn.php
+++ b/app/index/lang/zh-cn.php
@@ -21,5 +21,15 @@ return [
'faq' => '常见问题',
'faq_short_desc' => '回答您最关心的问题',
'faq_desc' => '客服团队的工作时间:周一到周五,早9点到晚6点 平均应答时间:24小时内',
+ ],
+ 'article' => [
+ 'detail_share' => '分享',
+ 'detail_leave_reply' => '留言',
+ 'detail_leave_reply_name' => '名称',
+ 'detail_leave_reply_email' => '电子邮箱',
+ 'detail_leave_reply_email_tip' => '您的电子邮件地址不会被公开',
+ 'detail_leave_reply_comment' => '留言',
+ 'detail_leave_reply_submit' => '提交留言',
+ 'detail_recommend' => '你可能还喜欢',
]
];
\ No newline at end of file
diff --git a/app/index/model/ArticleModel.php b/app/index/model/ArticleModel.php
index 8903d51f..03b173da 100644
--- a/app/index/model/ArticleModel.php
+++ b/app/index/model/ArticleModel.php
@@ -20,18 +20,25 @@ class ArticleModel extends ArticleBaseModel
// 语言范围查询
public function scopeLanguage($query, $language)
{
- return $query->where('language_id', '=', $language);
+ $query->where('language_id', '=', $language);
}
// 首页推荐状态范围查询
public function scopeRecommend($query, bool $stat = true)
{
- return $query->where('recommend', '=', (int)$stat);
+ $query->where('recommend', '=', (int)$stat);
}
// 文章分类范围查询
public function scopeCategory($query, $category)
{
- return $query->where('category_id', '=', $category);
+ $query->where('category_id', '=', $category);
+ }
+
+ // 文章标题搜索器
+ public function searchTitleAttr($query, $value)
+ {
+ if (is_null($value)) return;
+ $query->where('title', 'like', "%$value%");
}
}
diff --git a/app/index/view/article/detail.html b/app/index/view/article/detail.html
new file mode 100644
index 00000000..ce450117
--- /dev/null
+++ b/app/index/view/article/detail.html
@@ -0,0 +1,84 @@
+{extend name="public/base" /}
+{block name="title"}
+ {notempty name="detail.seo_title"}
{$detail.seo_title} {else /}{__BLOCK__}{/notempty}
+{/block}
+{block name="seo"}
+ {notempty name="detail.seo_keywords"}
+
+
+ {else /}
+ {__BLOCK__}
+ {/notempty}
+{/block}
+{block name="style"}
+
+{/block}
+{block name="main"}
+
+
+
+
+
+
{$detail.title}
+
{$detail.desc}
+
+
+
{$detail.content|raw}
+
+
+
+
{:lang('article.detail_share')}
+
+
+
+
{:lang('article.detail_leave_reply')}
+
+
+
+
+ {notempty name="$recommends"}
+
+
+
+
+
{:lang('article.detail_recommend')}
+
+
+
+
+
+ {/notempty}
+
+{/block}
\ No newline at end of file
diff --git a/app/index/view/article/index.html b/app/index/view/article/index.html
index 75145378..3359967d 100644
--- a/app/index/view/article/index.html
+++ b/app/index/view/article/index.html
@@ -21,8 +21,10 @@
-
-
+
{notempty name="articles"}
@@ -30,7 +32,7 @@
{volist name="articles" id="ar"}
-{/block}
-{block name="script"}
-
{/block}
\ No newline at end of file
diff --git a/public/static/index/css/articleDetail.css b/public/static/index/css/articleDetail.css
index 03a31f15..70d3ed88 100755
--- a/public/static/index/css/articleDetail.css
+++ b/public/static/index/css/articleDetail.css
@@ -1,7 +1,8 @@
.orico_Page_articleDetail {
width: 100%;
position: relative;
- height: 100vh;
+ min-height: 100vh;
+ padding: 3.75rem 0;
overflow-y: auto;
overflow-x: hidden;
background: #f2f2f2;
diff --git a/public/static/index/images/1line.png b/public/static/index/images/1line.png
new file mode 100755
index 0000000000000000000000000000000000000000..648af2f8b76281c824273ae8c221a3adf73e7683
GIT binary patch
literal 1093
zcmaJ=OK8+U7@lga59*H+=iCiWybiJPS5#0V5T+(1k@aHdcVIo|xaXDA22
zM&GYblF7<(!^Hvbq&|E*h$tF>+>v(VxHE__4K(G4dG`CGCoJQ8dG?fA5i602ru}0J
zF*><0QFj++T-{@j9Ad4fHDUqL(~nZGTn!zYO&WeYF4SMMNfHlnvlp4gjTD?
zw`3m2Qv%d=T@WQfk~r$YCG#P1+FY27_82UbxUnA*ABRlJ=rr&g$+I-l)f9rLQduJo
zlWw7C$%M8O36K|sAV~A-cqgQW{)N%kJE_k{NT{I%&&4k7M{~3XrnOsND0QUK7$;(%
zHpQ8>usau^kd&=FOaJhm?-`1slqAy@bxAXA6~cmQ+a;}FTToOo#jM`r=!dmb(~`5M
zCaPKqLR&8uEY;Rvu^_3kRJ83Lwj3tJ30>6F^{H+bn_U-cm@#q)j_VlD_9mb@jR{Vs
zam1J=bKsO8dbpJwOuMt1tc7C#Jn~904wz1P4Zn}P-t@GrtRSwTIfzqKCCfE3dV`bP
zhU-B`RUy*YF5c@?Hr*=0tfXa%5}iC~YnmvUx~zyLxs=f)TVw?qkdV&DfAiA2qC=RP
zYtv5;Yx{#jx->D}jys>^CAwL0*(%iAZ@<1Tj4X=7gX1f~&`=`0--L)=g(FHCy|J
z`0H15FW;Qr490i57rB)amhx^8-2ReG90XwR&8Gw4@-;SH(GSmmk6qaXz{?jO!J_nd
u;~Q=WEE1xD<%^$}#z1vx|2F`Bk}@P)U>At^h={K0_4@H>
zG&;{KX|-B=^ZEP~5x3dyIL>Yvx&->Z{}mDU5b?9?x^MdZ{!LX_ola+KGMRiJqC)@}
zXsw^-_bq^&Ga`D=$~@28Sp~}&E}w7EcRO{5q&qtJYNgk)H>|9P)?6Aru)yp@}+mS);%P5KnTbH0000<
KMNUMnLSTa1*bg88
literal 0
HcmV?d00001
diff --git a/public/static/index/images/share1.png b/public/static/index/images/share1.png
new file mode 100755
index 0000000000000000000000000000000000000000..fc77bceeeebe121946338b6ed682ba5f6a3e6aae
GIT binary patch
literal 1194
zcmV;b1XcTqP)(b3v0#IxaZCvuuCCkIWywi6X!N}a&*+0bMGw8fq8T9dA{d!&phXO
z&N&akMk^^PDLOtrz6szpm&;YmIrjm00l|X#L6Om>Z#vbSV$D*R5pLTY3{+1n<
zBn-*x_4@Pj^4{j0zX`yTp+=a9R%5Z)=b=#OI{-Wr`;359RecM<2LMVl8RUw-4~b|%
z)3oJu_0j@X6vazKp8%*%S2)9d4>;%Tx~_+=v%419=kqmk&OZh4>~&%`-~UNO?`WE~
zc$Lmoz@)0`T>$+yK{7QTVvN0inQvbPOp2m>OhoTyI+{cMXBcDcsi0E=`+UB8obx`1
z2A7f{qK`C9d+)sQ1z?}g*TgyhQfd_EjqWhUl30>}s_tkp!%&
z>i1a;UFkxe@ArT)R%1O(0LPQUH?pc(w!6(3`&Nu$0gDj!i-Q>q)z#IgtgJ*~VIfXW
zPZ5nqvAn#D-Q8W8Z`)yvy)2@J39KlJpNIl7N~vsyhlf#DS9jsn`1m-crlzEZF%0AN
zP$(3zfES6VQA+8Y(a6XMYHMp#N{x+;VS0L6Y8cM>SGuk@k=P=J!{Ofn6i6wZF)Ax7
z!{Xw_%o+}d;qiDNW`1sNPIj1x$K!ckWHiUzp|i6SU0q#CK!byW2nK^FC@8?e!2u2r
z4`qSDIlm=dnnfY;0_p
z{ww0|{QSHfSYc}}I>*9VZ*MQ!+S;-iB~~3x9797xXlQ6i052>oU|?Xt?yM&4&BWpL
zdT+U0uKP}?W*b=S*c{#bWEuG1&5xK_MNu5tUS<=Rh`!b|tz&Y>Gb^VL07VEV&j(8?iTrQV@u5w`Ir;-R7hS7dD8eBF`
zTELdEs;al+WiMM9@eIsE0C%mVkj`Xe1Z??sys+3BFDzzy#TAJc7C*~+Ve$M76c-oY
zh(@C~iRe`#dP!vX6s6lI05l?c6pO`vaJ$_<@9pi0lCD(y2MoH&0>007*qo
IM6N<$f-u!Re*gdg
literal 0
HcmV?d00001
diff --git a/public/static/index/images/share2.png b/public/static/index/images/share2.png
new file mode 100755
index 0000000000000000000000000000000000000000..e7b3727e423dd4725dff7eefbaba951dd5de158f
GIT binary patch
literal 1394
zcmV-&1WNP)GCLUq$>B!JPNi{B-J{u_mp#;xpA53J=cZ$Ki>J5@BH&`=lq0i
zP-<#w)a>kR27qjr%jMymYXIT_L{-W1BjH=;U}W*<>lpXeLi0g04^gh1z1(pLI7U?cuU5}CcHyL^rf!rKiSo1
z3$UUnZX)^`K%QO2l6=oN=Ve~6*SD42mVh-)E9RWH0Epd6**1UwhloDbb^Xp}dNu=0
zs;brj_-va%WX0x?Xq#U`^AGbIv;*S=o7^6O6GnSk?dzRD=FKNHDuco93LSt*#zx0IRC{^DdSy
zyCB!|J!6c$8~kVi4m5=yoNC==xgy5ckHSU}uqa^zJJ`W?8vih3>}^psOu&kw93i5o
zcCEz3#Nhn-^T^N7$H2eS?o7&
z-o%wFSL}*A;^Ulu=kH0epOV5E&yT>w@o7H;^N{kF)@Jy2M%CrY6>r2yg+nxG!hdNF*i4d@bGYq
zj*gl-b8~YMA0H3HFfcYYW+tjb>K1^7)?^t4IXOAFapMLS7Z(u`5rN9eO7!;jA~`u3
z_wV1w!omXlem~BhJ&U79kD|DEZ9d<+bqjTMVi1(3F#%X4T%3%k0Nm0dM&uQ$t*u3O
zcQ-Um!^4LUt?#1LiGL#$UA}x79UUDqW(Du006Y)iH5ti_j1085w_75@laC)i-T+uI
zjE|3_udfe>4jn>5LV_hTG&F=`$BxOE6}$_(3Rr+DDJe1IJ2o~Jw{PD@Qc{u$k}+n6
zizJzVr9;B5hc8^XfP44uS(xhU>n*Q}LkO=+k{J@xNoN=E#fulw+4*vut*)*{S(&&<
z!1THUz-H1(m$l5yOtiJNZ5hLtE?qLiAV{ZApEfIsAW;erA3iMUV01fb98LkBIdcXT
z6)V?7CxFey;dZ<8T`t!XnWJW9WudjTRocU%nv|E9I|eK!Hb=wH`WP0m`RLK34P|Y8
zNNm%?E5naCuA(SX<7Hl69Ox9N3LZRoV0~|FY+MuTA_-5PJZb$d
z8jW2dqVIKGFE#
z8|mrkSXx>#+jnzwvt7I(q5@slpRB$j4FX8DtzmB&*Ito??f>~D^aIA2c|qO}*Zf|_
znDuHJ>LEo8tD#4%y$u6lZQ3x5cYHpdH)wi)KUD=!v9BHj1EBZUb88UvetOWh(o0p<
z69B}1W7k&(obz(8*ZXq33z6ho?l=OSP;t3j0(9;!6^dTNFv?a}gIC$H1vn_Is%lYS
z?X^=KaR@+NuqoJah7{mnYzG#L9|abRwx75H@^gX3V*9Qy7T0^gaM@B}(O4kwn2X2x_5ouJ55dZ)H07*qoM6N<$f`P({
AbpQYW
literal 0
HcmV?d00001
diff --git a/public/static/index/images/share3.png b/public/static/index/images/share3.png
new file mode 100755
index 0000000000000000000000000000000000000000..d5ee3ef0811a7c4a9275793527fcc3c7f422dd3d
GIT binary patch
literal 1361
zcmV-X1+MyuP)$6y-r6$;I$YTS=
z3T*-jwUvsv0aJfM+A8ElTg7h8%#JTnp*0FNx<+B=mOGuXySlsHnO&uxM?K&9zBzmE
zIp^L>$iPZUO8n7i^fZ81JswXHV@v_?B7j^g>Xw#V
z04Wd%RC>MMcNt@E0q{ADu|`CpSS|oi}KdEWjNnSNf!IC6Z
z64AYEv-o^I)Ya9YqM`!PXcYbZ{kVJgu1O1stzj5dx~|`|1$Plqtq>AG
zQ&STL2M6)!(W8`*!-o%}v$GQ?Px8e4XMKHrn46nJAP~T{YuE7j@na!c#@Kg}NTiPV
zh`6@4_5{E|AtZpQsVU6Q&!fJ+9#5Wd=yq#wZ%0i{P0EnHy}jt_>caRqFG@o8%;)pH
zz&o1b^GT-fmNa026zBS$baG=$t-do12ANL5udH#Z|34hyN}PK>eh
zT<~W^w5_A0i*obkO_Z0HZ@Pp+A>6rh2NM$$h{a;a%ge*q*jUOC3kwUVuCB)7;-auv
zOK^}^hduy&5Er&%$Bu#jq&$=H#zi{D#nW3_>GErE9AOEO^h6Xp-X)c)Wn&(B)UauGT@88Gq>;&jg1Xd
zR#uvw&ZU`~&T(0@$#^Xe27|&IkY|=>I0Fm0Y8+b$`Fg%`pkCdL>G
z@>`tq9*?JAG?3r#2j4i{^7Hd?=FAyfx^&5`$wbM|w0sD{2@)#Hg8RnU8L~SbKV~Q-07&E8iw(TuImxoX@6f;
z*b*UfJr169BH-O+h3Xjs)9l+j>}h&w5xCzT&d*Z^V
zuXp`nacc&Oii&dA*Vj)IQ3Vkd^A4Zn>Gm%GDiQr2i^YCAaNxj5I2`6rx~}XWw+Zb6
Tqz|AV00000NkvXXu0mjfjU|xn
literal 0
HcmV?d00001
diff --git a/public/static/index/images/share4.png b/public/static/index/images/share4.png
new file mode 100755
index 0000000000000000000000000000000000000000..04cdfca4599fd64da599f70b141df1352859b8f9
GIT binary patch
literal 1501
zcmV<31tR*1P)OIkbi4|&$`e52L)Fy^PVtf%z
zQ#9~kNDE0TQKL{%LqTI=LMus^I+r&!7E4qtE}%PqbH?2*i^$GDEKNBH56hhIoNxX)
z|9AciVGNd)m6i7V`SVo(ay=f8UkKp?FdIO6IPBj5{v;yJvaEm*;+M3vw6@O9&OWzk
z$pw(SUhlf3q@*GtL;-+Q$rwQ*x)2J5YE9E@1|VecQiN4i{TRSk0J3G0jN*HTh`!b|
ztM4!oKOOXF}x~`XuM0!NRKA*2b2=RG>
zlDi5+M3tJReK8#T8eyN$w^a!7y{jyV2W{7NJ%&pR;jkKX{09@v>8m{xLgWlpj~K$L
zs{TBV(&d!oaK9_Mu74Q$XOwWbDg5X*>Nw*HbzT37b3_QUg#DVp4wh*Cow}|sX4S9>
zD~hs?h?)|aW!ki9ICSU`9zA-5YuB!!ySp2?xw)7(ZyrvcK8@bqUa54JWqo9tW>bXl
z4@9&@DncCR{rmT0!-fsGdi5$6E?kJ|)2GAdrYKh&ESrf@N$?mX%cE`
zYH;e*DcrhsD@x4o_haVFnP_col_hKY3nB8D@Ha&CT1RmeF$_`^1!ZMr*tKidSi-!9
z6+%?7I-Cc<3-N?mQBe_=ELnnm`}QR)W;oCVCfo%eQ#Nu^QW8R;kPYMdT)TEHRgvM!_3QEQ;X_nZRN(RB$BwXJryeFe0N^dBs3S*?I3^e`W=l&8
zN=r-Qxea|jC{389Y4KuiI{zBa`ntM0EL*k=#l^+oa)}sgZc|eeHgDdHHEY(y;J93t
zFJCTASgIrn3JOqJSqYXdHp{Y*laqsBFlhg7Yiq;o*}T(--OZLRT^c2H`}S>2ojNu8
zyQ-=R{3l^{Nk~t+^73+Q+O)~eBZR=-y?b%}`gP2iGY1zhUc{6sueN{v{r%XuaU)FA
zv?n5u_TPHwyk5+qP}PiWMttKPJ0-_inqXNZPB#4}%m%alO3UxpOD>
z?Ae1^vt~u}_x1JR<;#~biohzuCBP%iH7{#K)SzkF7Mrl!vWO&QRp8E-mzRgRbLZMB
z!6m^u`{2O?TS0E#yor1F?#c3u`VUrfHXlZjpWikmWk!_yS|MNSy0`z6t$A*L8b?
zJQ23}ExN8pPfbTUNa5Y{+vEF%9Y=p=S=PIzX&Mp4#6GHuyv2k%3=ET=SjVjq(i7=G
zJ31>=RoxDN?>EN%%0LKFY8Xb{Xj3xo9Y?qmDjtuANx$!Se#<$wSe8{XR1Mw)cSJY>
zR#mkyeC?H}j(7*a(MVHp@{Ur3BefmASS$`-EXp2n^@lGOYsURzarg-M{r>cUfq_*-
z^d1qt!ySHvtJ`h>8WH^-3WZvelat#6fdF6Wy0U)&3JNR{M3TRN00000NkvXXu0mjf
DiDJ?<
literal 0
HcmV?d00001