首页
wjlink
投稿
视频
直播
壁纸
更多
留言
统计
LINK
Search
1
为你的 WordPress 站点配置 Telegram Instant View
53 阅读
2
重点提示:邮箱购买和调查帐号注册要求
46 阅读
3
Paypal外区账户/国际版绑大陆手机号注册教程
36 阅读
4
宝塔面板绑定域名套上cloudflare – 实现cdn访问拯救你的IP
35 阅读
5
Python 爬取YouTube某个频道下的所有视频信息
30 阅读
技術類
自媒体
調查
问卷调查
美國站
英國站
注册丨登录
Search
标签搜索
wordpress
V2Ray
vps
苹果cms
面板
php
宝塔
ipfs
DD
脚本
语言
上传
判断
Youtube
ip
AI
1
2
3
救砖
Gengre
累计撰写
65
篇文章
累计收到
0
条评论
今日撰写
0
篇文章
️
首页
分类
技術類
自媒体
調查
问卷调查
美國站
英國站
页面
wjlink
投稿
视频
直播
壁纸
留言
统计
LINK
登录丨注册
搜索到
2
篇与
的结果
2023-10-21
php设置cookies立即生效,实现网页多语言切换
这是最近的项目需要用到的功能,大概就是些边边角角的东西,我主要想实现的还是多语言切换这种,其实思路很足就是php基础不是太好。不过既然有了大概的逻辑在,那么其实也就没什么大不了的地方了,很多东西可以百度查询到,对于语言切换这个,原本我就有js的实现方法,不过那个太笨,而且对seo并不好,治标不治本。用php直接加载在页面上才可以被搜索引擎很好的识别,并且可以在头部申明网站的语言,比如en或者cn等。 另外,以下代码在typecho程序里面完美可用。第一步:创建文件lang.php1.首先是默认语言的定义和cookies的存储,还包括页面传入值的处理。 function cookie($var, $value = '', $time = 0, $path = '', $domain = '', $s = false) { $_COOKIE[$var] = $value; if (is_array($value)) { foreach ($value as $k => $v) { setcookie($var .'['.$k.']', $v, $time, $path, $domain, $s); } } else { setcookie($var,$value, $time, $path, $domain, $s); } } $cookietime= time()+3600; $lang = "cn"; if(isset($_COOKIE["lang"])){ if(isset($_GET['lang'])){ if(preg_match("/^[a-zA-Z\s]+$/",$_GET['lang'])){ $lang = $_GET['lang']; }else{ $lang = "cn"; } cookie("lang", $lang, $cookietime,'/'); $lang = $_COOKIE["lang"]; }else{ $lang = $_COOKIE["lang"]; } }else{ if(isset($_GET['lang'])){ if(preg_match("/^[a-zA-Z\s]+$/",$_GET['lang'])){ $lang = $_GET['lang']; }else{ $lang = "cn"; } cookie("lang", $lang, $cookietime,'/'); $lang = $_COOKIE["lang"]; } } 上面就分为了三个部分,定义方法cookies,在里面将php默认的cookies存入方法进行处理,然后让其立即生效(php单纯使用setcookie是不会生效的,会报错误)。然后就是定义默认的语言字段cn,也就是中文,并且设置一个语言id,也就是langid,因为后面语言是以数组形式。最后就是对页面上传来的字段lang进行识别处理,最后存入cookies,另外还带了cookies生效持续时间的定义。2.然后就是语言的定义,我采用的数组形式,大概就是如下形式加在lang.php里面。$lang_sort=array("首页","Home"); $lang_sort5=array("关于我们","About");调用方式就简单了echo $lang_sort[0] //输入中文 echo $lang_sort[1] //输入英文这样写在我看来很有扩展性,因为要更多语言的话,就直接在后面继续加就好了,这里也就看得出来langid这个字段的作用,那就是用来在数组中定位了,0是中文,1是英文,其实网站也有定义xml的办法,那个我觉得太麻烦还是算了。 第二步:在页面上引入功能,实现切换的整个过程。 1.先引入lang.php文件,将语言包在页面上生效,注意必须也只能是php文件来引入。 include ‘lang.php’; 2.在前台来两个语言切换的入口,无论是a标签还是写个表单都可以,我这里用a标签。英文 英文3.然后就是对可以用来多语言切换的文字进行替换了,我的是在模板html文件,写了如下的代码。 这句代码替换了“首页”这个文字,在进行语言切换的时候,他会立即根据lang的值改变。 4.另外为了浏览器和搜索引擎对网页语言的识别,我还将头部的改为了如下
2023年10月21日
3 阅读
0 评论
0 点赞
2023-10-21
typecho多语言切换完美实现方案,支持三种以上语言
注意,这个教程是不需要对typecho进行二次开发的,而且适用于国际化的企业官网开发或者是一些有多语言切换需求的其它类型网站。另外我之前也写过一个类似的文章,不过当时那种采用的简单if/else判断,可以说又别扭还麻烦,最近的一些项目刚好对这个需求进行了整体的优化,所以决定整理成文章。教程开始在这之前,肯定是需要准备好模板,或者是已经有了现成的模板。1.在模板目录创建lang.php文件,代码如下:添加语言的方式很简单,就是在数组后面继续加就行。2.编辑模板的其它文件,将$this->need改为include。如引用头部的代码:$this->need('header.php');改为include 'header.php';因为实际的测试发现,typecho自带的$this->need无法传递cookie,导致语言切换失效。3.编辑全局头部文件header.php,将第一行修改为如下代码:上方的代码引入了lang.php,并且定义了cookie存储方法,以及获取当前语言,切换语言等,其中$langid就是负责在语言数组中定位。4.调用多语言字段,这个很简单,因为在lang.php中定义了字段名称和值,所以模板中调用标签如下,以fullLang1为例至于网站的标题,关键词,简介,则是在function.php中增加如下代码:先加入这个方法//根据当前语言获取独立页面标题 function pageTitle($title,$langid){ $titleArr = explode( ",",$title); echo $titleArr[$langid]; }然后在themeFields方法中,加入如下: $SEOtitle = new Typecho_Widget_Helper_Form_Element_Text('SEOtitle', NULL, NULL, _t('SEO标题'), _t('在这里填入当前页面或文章的SEO标题,用于搜索引擎识别(如果不填则自动调用文章或独立页面标题。对于独立页面,请填入英文逗号分割的三种语言,如:中文,繁体,英语)。')); $layout->addItem($SEOtitle); $SEOkeywords = new Typecho_Widget_Helper_Form_Element_Text('SEOkeywords', NULL, NULL, _t('SEO关键字'), _t('在这里填入当前文章的SEO关键字,请用英文逗号隔开。(如果是独立页面,则不填)')); $layout->addItem($SEOkeywords); $SEOdescription = new Typecho_Widget_Helper_Form_Element_Textarea('SEOdescription', NULL, NULL, _t('SEO简介'), _t('在这里填入当前页面或文章的SEO简介(如果是独立页面,则不填)。')); $layout->addItem($SEOdescription);这里的原理就是,标题写成根据逗号分割的形式,然后再根据当前语言id调用出来,而发布文章的时候,肯定一次只能发布一种语言,但是创建单页的时候,是可以设置单页模板,调用语言标签的,这就是我的思路逻辑,当然实际情况可以自行修改。最后,在header.php中将原本的标题,关键词,简介的区域,改为如下:
2023年10月21日
5 阅读
0 评论
0 点赞