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; } }