Gallery:如何在缩略图旁显示自定义字段

来自站长百科
跳转至: 导航、​ 搜索

Gallery提供的外观主题设定允许显示单个相册或项目的自定义字段区块。如果你想在某相册中缩略图旁显示某项目的自定义字段的话,可以尝试一下下面的外观主题修改方法。

自定义字段模板Callback[ ]

如果你只需显示少量字段的话,可以使用customfield.LoadCustomFields callback。此方法的达成需要对外观主题的album.tpl文件做修改。

重要: 如果你在编辑某个Gallery的现有外观主题,请先明确如何编辑已有的外观主题

  1. 打开外观主题的相册模板文件(如themes/matrix/templates/album.tpl)
  2. 确认album.tp中项目缩略图,标题和描述的显示位置(查找$child.title)。
  3. 将下面的内容复制并粘贴到缩略图,标题或描述处
 {* 使用customfield.LoadCustomFields callback来获取字段的字串 *}
 {g->callback type="customfield.LoadCustomFields" itemId=$child.id}
 {if !empty($block.customfield.LoadCustomFields.fields.Item)}
   <ul>
     {foreach from=$block.customfield.LoadCustomFields.fields item=customField}
     <li>{$customField}</li>
     {/foreach}
   </ul>
 {/if}

保存album.tpl之后,应能在相册页面的项目旁看到自定义字段了。Callback的安置和运行都很简单。如果你的网站容量很大并且要考虑性能表现的话,请在你外观主题的theme.inc 文件中载入自定义字段数据。

载入Theme.inc中的自定义字段数据[ ]

显示大量项目的繁忙站点通过载入theme.inc 中的自定义字段而不是用callback的话,会得到很好的效果。

  1. 打开外观主题的theme.inc文件(如themes/matrix/theme.inc)
  2. 在showAlbumPage()中添加以下内容,就在函数返回行之上,return array (null, 'theme.tpl').
 /* 获取自定义字段 */
 list ($ret, $children) = GalleryCoreApi::loadEntitiesById($childIds);
 if ($ret) {
   return array($ret, null);
 }
 
 list ($ret, $theme['customFieldValues']) =
   CustomFieldHelper::fetchFieldValues($children, 'detail');
 if ($ret) {
   return array($ret, null);
 }

接着,在album.tpl中显示自定义字段

  1. 打开外观主题的相册模板文件(如themes/matrix/templates/album.tpl)
  2. 确认album.tp中项目缩略图,标题和描述的显示位置(查找$child.title)。
  3. 将下面的内容复制并粘贴到缩略图,标题或描述处
 {* 显示某child的自定义字段 *}
 {if isset($theme.customFieldValues[$child.id])}
 <ul>
   {foreach from=$theme.customFieldValues[$child.id] key=name item=value}
   <li>{$name}: {$value}</li>
   {/foreach}
 </ul>
 {/if}