| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- <?php
- namespace addons\cms\model;
- use think\Model;
- use think\facade\Db;
- class Page extends Model
- {
- protected $name = 'cms_page';
- protected $autoWriteTimestamp = true;
- public static function getCurrentLang()
- {
- if (function_exists('cms_current_lang')) {
- return cms_current_lang();
- }
- $request = request();
- $default = (string)(Db::name('lang')->where('is_default', 1)->value('mark') ?: 'cn');
- $regionCode = strtoupper((string)$request->param('region/s', ''));
- if ($regionCode !== '' && function_exists('cms_lang_by_region_code')) {
- return cms_lang_by_region_code($regionCode, $default);
- }
- $pathinfo = trim($request->pathinfo(), '/');
- if ($pathinfo !== '') {
- $segments = explode('/', $pathinfo);
- $first = strtoupper($segments[0] ?? '');
- if ($first !== '' && function_exists('cms_lang_by_region_code')) {
- return cms_lang_by_region_code($first, $default);
- }
- }
- return $default;
- }
- public static function getPageWithLangByCatid($catid, $lang = null)
- {
- $lang = $lang ?: self::getCurrentLang();
- $defaultLang = cms_default_lang();
- $row = self::where('catid', $catid)->find();
- if (!$row) {
- return null;
- }
- $translate = Db::name('cms_page_data')->where(['page_id' => $row->id, 'lang' => $lang])->find();
- if (!$translate && $lang !== $defaultLang) {
- $translate = Db::name('cms_page_data')->where(['page_id' => $row->id, 'lang' => $defaultLang])->find();
- }
- $data = $row->toArray();
- $data['lang'] = $lang;
- $data['title'] = $translate['title'] ?? ($data['title'] ?? '');
- $data['keywords'] = $translate['keywords'] ?? ($data['keywords'] ?? '');
- $data['description'] = $translate['description'] ?? ($data['description'] ?? '');
- $data['content'] = $translate['content'] ?? ($data['content'] ?? '');
- $data['translation_lang'] = $translate['lang'] ?? $defaultLang;
- return $data;
- }
- }
|