0 ? intval($tag['num']) : 10; $cacheID = to_guid_string($tag); if ($cacheData = cache($cacheID)) { return $cacheData; } $map = [['status', '=', 1]]; if (isset($tag['link_type'])) { $map[] = ['link_type', '=', (int) $tag['link_type']]; } if (isset($tag['terms_id'])) { $map[] = ['terms_id', '=', (int) $tag['terms_id']]; } $obj = $this->where($map)->where($tag['where'])->order($tag['order'])->limit($num)->select(); if (is_array($obj)) { if (empty($obj)) { return []; } $array = $obj; } else { if ($obj->isEmpty()) { return []; } $array = $obj->toArray(); } $lang = function_exists('cms_current_lang') ? cms_current_lang() : 'cn'; $defaultLang = function_exists('cms_default_lang') ? cms_default_lang() : 'cn'; foreach ($array as &$item) { $translate = null; if ($lang && $lang !== $defaultLang) { $translate = Db::name('links_data')->where(['did' => $item['id'], 'lang' => $lang])->find(); if (!$translate) { $translate = Db::name('links_data')->where(['did' => $item['id'], 'lang' => $defaultLang])->find(); } } else { $translate = Db::name('links_data')->where(['did' => $item['id'], 'lang' => $defaultLang])->find(); } if ($translate) { if (!empty($translate['name'])) { $item['name'] = $translate['name']; } if (!empty($translate['description'])) { $item['description'] = $translate['description']; } } } unset($item); cache($cacheID, $array, $cacheTime); return $array; } }