2015-10-19 84 views
1

我試圖加入標題元數據標籤,這是我的代碼:添加在頭meta標籤鋰PHP

應用程序/擴展/幫手/ FacebookHtml.php

<?php 
namespace app\extensions\helper; 

class FacebookHtml extends \lithium\template\Helper { 

protected $_strings = array(
    'title' => '<meta property="og:title" content="{:contenido}" />', 
    'site_name' => '<meta property="og:site_name" content="{:contenido}" />', 
    'url' => '<meta property="og:url" content="{:contenido}" />', 
    'description' => '<meta property="og:description" content="{:contenido}" />', 
    'image' => '<meta property="og:image" content="{:contenido}" />', 
    'image' => '<meta property="og:image" content="{:contenido}" />', 
    'locate' => '<meta property="og:locate" content="{:contenido}" />', 
); 

public function meta($contenido, $options) { 
    return $this->_render(__METHOD__, $options['type'], compact('contenido')); 
} 
} 

在app /視圖/佈局/ default.html.php,內部

<?=$this->FacebookHtml(); ?>

在其它視圖的文件:

<?=$this->FacebookHtml->meta('title', 'Test.. 1...2...3...'); ?>

我在Google和核心代碼中查找數小時以瞭解如何添加元數據。

回答

3

首先幾點說明:

在你的例子中,<?=$this->FacebookHtml(); ?>沒有做任何事情。

像Oerd在他的answer中說的,你的參數是不正確的。他們應該在FacebookHtml.php匹配你的函數的聲明應該是:

<?= $this->FacebookHtml->meta('Test.. 1...2...3...', array('type' => 'title')); ?> 

你的幫手不正是它應該,呈現原始的meta標籤。你打電話給你的幫手很重要。就目前而言,您只是將元標記渲染到位。但是,li3 Renderer類提供了$this->head()方法,它有兩件事。

  1. 將值傳遞給head將其添加到使用當前Renderer的所有模板的上下文中。示例:$this->head("<meta property="og:title" content="The Title" />");
  2. 回顯$this->head()將呈現當前head上下文中保存的所有標記。

下面是一些真實的例子:

應用程序/視圖/佈局/ default.html.php

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"/> 

    <?php echo $this->head() ?> 

    <title><?php echo $this->title(); ?> | My Website</title> 

</head> 

<body> 

    <?php echo $this->content(); ?> 

</body> 

</html> 

應用程序/視圖/頁/ index.html.php

<?php $this->FacebookHtml->meta('Test.. 1...2...3...', array('type' => 'title')); ?> 

上面的例子允許你指定任何標題喲你想在你的意見內。

除了$this->head(),li3還提供了具有類似功能的$this->styles()$this->scripts()

檢查從LI3框架資源庫的default.html.php樣本更完整的示例:https://github.com/UnionOfRAD/framework/blob/master/app/views/layouts/default.html.php

+0

真棒!!!其實真的很簡單!謝謝你的時間和知識隊友,真的很感激!!你是男人,歡呼!! –

+0

很好的答案...釘了它!:) – Oerd

0

在視圖模板,您可以通過選項陣列提供title打電話給助手:

<?= $this->facebookHtml->meta('Test.. 1...2...3...', array('type' => 'title')); ?> 

我敢肯定,你已經通過它走了,但這裏是Lithium manual page on helpers

+0

感謝您的回答。但是,在部分中不顯示og:標題元數據:( 我想將meta標籤放在 –

+0

之內,那麼您很可能必須更改'app/views/layouts/default.html.php'在你的視圖模板中,即*不*你的視圖模板,但在主佈局 – Oerd

+0

不要讓你,如果你可以通過給我一個例子來幫助我,那真是太棒了,我很久以前就被困住了: ( –