Featured image of post memory主题友链自定义头像

memory主题友链自定义头像

修改主题代码使其支持友链自定义头像

问题

本博客目前使用的Memory主题,在添加友链时无法自定义头像。
作者的介绍只能在备注里填写邮箱地址来调用gravatar头像。

这样就很不合适,因为不是每个人都用gravatar,而且添加的也不一定是友链。
然后我看了下友链页面的代码后,不过因为我不会php,所以只能按着原来的代码来边猜边改。

原代码

只截取了核心部分

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<ul>
<?php $bookmarks = get_bookmarks('orderby=rand&category_name=' . $linkcat->name);
if ( !empty($bookmarks) ) {
    foreach ($bookmarks as $bookmark) {
        echo '<li><a class="no-des" href="' . $bookmark->link_url . '" title="' . $bookmark->link_name . '">';
        if($bookmark->link_notes!=null && $bookmark->link_notes!='') 
            echo '<img src="'.get_avatar_url($bookmark->link_notes).'" alt="'.$bookmark->link_name.'" class="avatar" / >';
        else
            echo '<img src="'.get_template_directory_uri().'/img/comment-avatar.png" alt="'.$bookmark->link_name.'" class="avatar" / >';
        echo '<div class="link-text"><span class="link-title">'.$bookmark->link_name.'</span><p class="link-description">'.$bookmark->link_description.'</p></div>';
        echo '</a></li>';
    }
} ?>
</ul>

逻辑大概就是先判断备注是否为空,如果不为空就获取avatar头像后输出,就像作者所说的。
如果为空就输出默认图片comment-avatar.png

修改

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<ul>
<?php $bookmarks = get_bookmarks('orderby=rand&category_name=' . $linkcat->name);
if ( !empty($bookmarks) ) {
    foreach ($bookmarks as $bookmark) {
        echo '<li><a class="no-des" href="' . $bookmark->link_url . '" title="' . $bookmark->link_name . '">';
        if($bookmark->link_notes!=null && $bookmark->link_notes!='') 
            echo '<img src="'.get_avatar_url($bookmark->link_notes).'" alt="'.$bookmark->link_name.'" class="avatar" / >';
        elseif($bookmark->link_image!=null && $bookmark->link_image!='') 
            echo '<img src="'.$bookmark->link_image.'" alt="'.$bookmark->link_name.'" class="avatar" / >';
        else
            echo '<img src="'.get_template_directory_uri().'/img/comment-avatar.png" alt="'.$bookmark->link_name.'" class="avatar" / >';
        echo '<div class="link-text"><span class="link-title">'.$bookmark->link_name.'</span><p class="link-description">'.$bookmark->link_description.'</p></div>';
        echo '</a></li>';
    }
} ?>
</ul>

思路

在输出默认图片前再加一个elseif判断,判断图像地址是否为空。如果不为空就输出图像地址,为空就输出默认图片。

优先级如下:

  1. 如果在高级->备注中填写了友链的邮箱地址,则默认使用其gravatar头像;
  2. 如果在高级->图像地址中填写了友链的图像地址,则使用其提供的图像地址作为图像来源。
  3. 如果上面两项均未填写,则使用默认图片。
使用 Hugo 构建
主题 StackJimmy 设计