Zend Framework 2:在favicon图标中添加自定义属性

时间:2014-06-22 12:38:50

标签: css zend-framework zend-framework2

我的前端设计师给出html,其中favicon图标显示如下代码。

<link rel="apple-touch-icon-precomposed" sizes="144x144" href="ico/favicon.png">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="ico/favicon.png">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="ico/favicon.png">
<link rel="apple-touch-icon-precomposed" href="ico/favicon.png">
<link rel="shortcut icon" href="ico/favicon.png">

我陷入了如何显示尺寸属性的问题。我想跟随。

$this->headLink(
        array('rel' => 'apple-touch-icon-precomposed',   'href' => $this->basePath() . '/admin_assets/img/favicon.ico',array('sizes' => '144x144'))

但是输出中没有显示尺寸。任何人都知道如何在favicon中显示自定义属性。提前致谢

2 个答案:

答案 0 :(得分:3)

请参阅此答案:https://stackoverflow.com/a/11655485

使用&#39; extras&#39;非标准属性的数组键,如:

$this->headLink(
    array(
        'rel' => 'apple-touch-icon-precomposed',
        'href' => $this->basePath() . '/admin_assets/img/favicon.ico',
        'extras' => array('sizes' => '144x144')
    )
);

答案 1 :(得分:1)

HeadLink助手类严格定义有效属性列表

protected $itemKeys = array('charset', 'href', 'hreflang', 'id', 'media', 'rel', 'rev', 'type', 'title', 'extras');

并拒绝其他一切。 See the line on github. 所以sizes似乎是助手的无效属性。

首先,如果您可以使用普通的html输出这些link标签,只需使用它即可。 否则,我提出了以下解决方案:

1)创建自己的CustomHeadLink类,扩展原始HeadLink,并扩展定义有效属性列表的数组:

<?php

namespace Custom\View\Helper;

use Zend\View\Helper\HeadLink;

class CustomHeadLink extends HeadLink
{
    // added 'sizes' as a new attribute
    protected $itemKeys = array('charset', 'href', 'hreflang', 'id', 'media', 'rel', 'rev', 'type', 'title', 'extras', 'sizes');
}

2)让你的模块使用你的自定义助手而不是Zend的一个:

<?php

namespace Custom;

// ...
use Custom\View\Helper\CustomHeadLink;
// ...

class Module
{
    // ...
    public function getViewHelperConfig()
    {
        return array(
            'factories' => array(
                'headLink' => function($serviceManager) {
                    return new CustomHeadLink();
                },
            ),
        );
    }
    // ...
}

因此,您仍然可以从布局访问帮助程序而不进行任何更改,但使用新的属性支持:

$this->headLink(array(
    'rel' => 'apple-touch-icon-precomposed',
    'href' => $this->basePath() . '/admin_assets/img/favicon.ico',
    'sizes' => '144x144'
));