我如何使用Codeigniter元标签助手与Facebook开放的图形元标签?
metatag helper想要注入name作为Facebook不使用的第一个属性。是否有任何方法可以使用帮助器来添加我自己的自定义方案?似乎有一些默认值,如'name'
,我无法摆脱使用的帮助。
我做了什么:
$meta = array(
array('property' => 'og:type', 'content' => 'movie'),
array('property' => 'og:video:height', 'content' => '260'),
array('property' => 'og:video:width', 'content' => '420'),
array('property' => 'og:video:type', 'content' => 'application/x-shockwave-flash'),
array('property' => 'og:title', 'content' => $data['video']),
array('property' => 'og:description', 'content' => $data['video_desc']),
array('property' => 'og:image', 'content' => 'http://i2.ytimg.com/vi/'.$data['links']['extra_link_info']['original_key'].'/hqdefault.jpg'),
array('property' => 'og:video', 'content' => 'https://www.youtube.com/v/'.$data['links']['extra_link_info']['original_key'].'?version=3&autohide=1&autoplay=1')
);
<meta name="" content="movie" />
<meta name="" content="260" />
<meta name="" content="420" />
<meta name="" content="application/x-shockwave-flash" />
<meta name="" content="xxxxxxxx" />
<meta name="" content="xxxxxxxx" />
<meta name="" content="http://i2.ytimg.com/vi/xxxxxxxx/hqdefault.jpg" />
<meta name="" content="xxxxxxxx" />
what i want:
<meta property="og:tyoe" content="movie" />
<meta property="og:video:height" content="260" />
<meta property="og:video:width" content="420" />
<meta property="og:video:type" content="application/x-shockwave-flash" />
<meta property="og:title" content="xxxxxxxx" />
<meta property="og:description" content="xxxxxxxx" />
<meta property="og:image" content="http://i2.ytimg.com/vi/xxxxxxxx/hqdefault.jpg" />
<meta property="og:video" content="xxxxxxxx" />
我用了这个
MY_html_helper.php
if (!function_exists('meta')) {
function meta($name = '', $content = '', $type = 'name', $newline = "n") {
// Since we allow the data to be passes as a string, a simple array
// or a multidimensional one, we need to do a little prepping.
if (!is_array($name)) {
$name = array(array('name' => $name, 'content' => $content, 'type' => $type, 'newline' => $newline));
} else {
// Turn single array into multidimensional
if (isset($name['name'])) {
$name = array($name);
}
}
$str = '';
foreach ($name as $meta) {
if ((!isset($meta['type']) OR $meta['type'] == 'name')) {
$type = 'name';
} else if ($meta['type'] == 'equiv') {
$type = 'http-equiv';
} else {
$type = $meta['type'];
}
$name = (!isset($meta['name'])) ? '' : $meta['name'];
$content = (!isset($meta['content'])) ? '' : $meta['content'];
$newline = (!isset($meta['newline'])) ? "n" : $meta['newline'];
$str .= '<meta ' . $type . '="' . $name . '" content="' . $content . '" />' . $newline;
}
return $str;
}
}
用法:
$meta = array(
array('name' => 'og:title', 'content' => 'my great title', 'type' => 'property')
);
修复:
扩展了HTML helper,将所有的name
引用更改为property
。
MY_html_helper
<?php
/**
* Generates meta tags from an array of key/values
*
* @access public
* @param array
* @return string
*/
if ( ! function_exists('meta'))
{
function meta($property = '', $content = '', $type = 'property', $newline = "n")
{
// Since we allow the data to be passes as a string, a simple array
// or a multidimensional one, we need to do a little prepping.
if ( ! is_array($property))
{
$property = array(array('property' => $property, 'content' => $content, 'type' => $type, 'newline' => $newline));
}
else
{
// Turn single array into multidimensional
if (isset($property['property']))
{
$property = array($property);
}
}
$str = '';
foreach ($property as $meta)
{
$type = ( ! isset($meta['type']) OR $meta['type'] == 'property') ? 'property' : 'http-equiv';
$property = ( ! isset($meta['property'])) ? '' : $meta['property'];
$content = ( ! isset($meta['content'])) ? '' : $meta['content'];
$newline = ( ! isset($meta['newline'])) ? "n" : $meta['newline'];
$str .= '<meta '.$type.'="'.$property.'" content="'.$content.'" />'.$newline;
}
return $str;
}
}