👌

Omeka Sの検索結果に表示する項目を指定する

2024/04/17に公開

概要

以下のように、検索結果に表示する項目を指定する方法について説明します。

設定

デフォルトの設定では、以下のように、「見出し」にタイトル(dcterms:title)、「Body」に説明文(dcterms:description)が表示されます。

これに対して、サイトごとの設定画面の以下の箇所を変更することにより、「見出し」「Body」それぞれに表示する項目を設定することができます。

Advanced Searchの場合

Advanced Searchモジュールを使用している場合でも、この設定は引き継がれます。

以下でソースコードを確認できます。

https://github.com/Daniel-KM/Omeka-S-module-AdvancedSearch/blob/master/view/search/resource-list.phtml

browse_heading_property_termbrowse_body_property_termの設定に基づき、表示項目が指定されています。

<?php
...

$headingTerm = $setting('browse_heading_property_term');
$bodyTerm = $setting('browse_body_property_term');

...
?>

<?php if ($title): ?>
<h3><?= $escape($title) ?></h3>
<?php endif; ?>
<ul class="resource-list search-results-list<?= $gridListMode === 'list_only' ? ' list' : ($gridListMode === 'grid_only' ? ' grid' : '') ?>">
    <?php /** @var \Omeka\Api\Representation\AbstractResourceEntityRepresentation $resource */
    foreach ($resources as $resource):
        ...
        $heading = $headingTerm ? $resource->value($headingTerm, ['lang' => $langValue]) : null;
        $heading = $heading ? $heading->asHtml() : $escape($resource->displayTitle($untitled, $lang));
        $body = $bodyTerm ? $resource->value($bodyTerm, ['lang' => $langValue]) : null;
        $body = $body ? $body->asHtml() : $escape($resource->displayDescription(null, $lang));
    ?>

    <li class="resource <?= $resourceType ?>">
        <div class="resource-thumbnail">
            <?= $hyperlink->raw($resourceThumbnail, $resourceUrl, ['class' => 'resource-link']) ?>
        </div>
        <div class="resource-metadata">
            <h4><?= $resource->linkRaw($heading) ?></h4>
            <div class="description">
                <?= $body ?>
            </div>
        </div>
    </li>

    <?php endforeach; ?>
</ul>

まとめ

Omeka Sの検索結果に表示する項目の指定にあたり、参考になりましたら幸いです。

Discussion