如何将页面分享到不同语言的facebook/twitter?
How to share the page to facebook / twitter with different language?
我正在使用 codeigniter,语言由会话决定。
我写元数据,facebook/twitter抓取数据分享页面:
echo "<meta name='twitter:card' content='summary' />";
echo "<meta property='og:title' content='" . $video->{set_lang("title")} . "' />";
echo "<meta property='og:description' content='" . $video->{set_lang("description")} . "' />";
echo "<meta property='og:image' content='" . (isset($video->image_url) ? site_url("thumbnail/" . $video->image_url) : $video->thumbnail) . "' />";
set_lang函数是这样检查session的:
function set_lang($var) {
$CI = & get_instance();
$lang = $CI->session->userdata('site_lang');
if ($lang == "english") {
return $var;
} else if ($lang == "zh_tw") {
return $var . "_tw";
} else if ($lang == "zh_cn") {
return $var . "_cn";
}
}
分享功能在浏览器中可以正常使用,但是,我也想通过移动应用分享link。由于该应用程序不包含会话,因此无法检查语言。另外,如果我将参数放在 link 中,例如
http://example.com/video/view/1/english
那我的分享link也会修复语言
有什么想法吗?非常感谢您的帮助。
您是否浏览过 internationalization 文档?
使用 og:locale:alternate
元标记(一个指向每种语言)应该在 Facebook.com 中以 Facebook 用户的母语显示 link。
试试看 :D
如果你把关于语言的信息放在 link 中,像这样 http://example.com/video/view/1/english
,那么语言信息可以作为控制器的参数(如果你提到什么会有所帮助是这里的控制器,但假设它是 view()
),然后像这样使用它:
function view($param1, $lang = false){
}
然后您可以修改函数 set_lang()
,以获取两个参数,$var
(原始参数)和 $lang
:
function set_lang($var, $lang = false){
if(!$lang){
$CI = & get_instance();
$lang = $CI->session->userdata('site_lang');
}
if ($lang == "english") {
return $var;
} else if ($lang == "zh_tw") {
return $var . "_tw";
} else if ($lang == "zh_cn") {
return $var . "_cn";
}
}
这样,如果在url中设置了语言,$CI->session->userdata('site_lang')
将被忽略。
现在如果你想将 $lang
传递给你的视图,你可以这样做:
function view($param1, $lang = false){
$local['lang_by_url'] = $lang;
$this->load->view('the_view', $local);
}
在您看来:
echo "<meta name='twitter:card' content='summary' />";
echo "<meta property='og:title' content='" $video->{set_lang("title", $lang_by_url)} . "' />";
...
...
有点老套,但应该可以。
我正在使用 codeigniter,语言由会话决定。
我写元数据,facebook/twitter抓取数据分享页面:
echo "<meta name='twitter:card' content='summary' />";
echo "<meta property='og:title' content='" . $video->{set_lang("title")} . "' />";
echo "<meta property='og:description' content='" . $video->{set_lang("description")} . "' />";
echo "<meta property='og:image' content='" . (isset($video->image_url) ? site_url("thumbnail/" . $video->image_url) : $video->thumbnail) . "' />";
set_lang函数是这样检查session的:
function set_lang($var) {
$CI = & get_instance();
$lang = $CI->session->userdata('site_lang');
if ($lang == "english") {
return $var;
} else if ($lang == "zh_tw") {
return $var . "_tw";
} else if ($lang == "zh_cn") {
return $var . "_cn";
}
}
分享功能在浏览器中可以正常使用,但是,我也想通过移动应用分享link。由于该应用程序不包含会话,因此无法检查语言。另外,如果我将参数放在 link 中,例如
http://example.com/video/view/1/english
那我的分享link也会修复语言
有什么想法吗?非常感谢您的帮助。
您是否浏览过 internationalization 文档?
使用 og:locale:alternate
元标记(一个指向每种语言)应该在 Facebook.com 中以 Facebook 用户的母语显示 link。
试试看 :D
如果你把关于语言的信息放在 link 中,像这样 http://example.com/video/view/1/english
,那么语言信息可以作为控制器的参数(如果你提到什么会有所帮助是这里的控制器,但假设它是 view()
),然后像这样使用它:
function view($param1, $lang = false){
}
然后您可以修改函数 set_lang()
,以获取两个参数,$var
(原始参数)和 $lang
:
function set_lang($var, $lang = false){
if(!$lang){
$CI = & get_instance();
$lang = $CI->session->userdata('site_lang');
}
if ($lang == "english") {
return $var;
} else if ($lang == "zh_tw") {
return $var . "_tw";
} else if ($lang == "zh_cn") {
return $var . "_cn";
}
}
这样,如果在url中设置了语言,$CI->session->userdata('site_lang')
将被忽略。
现在如果你想将 $lang
传递给你的视图,你可以这样做:
function view($param1, $lang = false){
$local['lang_by_url'] = $lang;
$this->load->view('the_view', $local);
}
在您看来:
echo "<meta name='twitter:card' content='summary' />";
echo "<meta property='og:title' content='" $video->{set_lang("title", $lang_by_url)} . "' />";
...
...
有点老套,但应该可以。