Forums » Browse items header -- I want to display collection/tag name

RSS feed for this topic

Info

  1. I have read through and experimented with the API, but I am unable to figure out how to display the name of the collection or tag name when you are browsing items.

    Currently... "Browse Items (## items)"
    Desired ... "Browse Collection Name (## items)
    or .... "Browse Tag Name (## items)

    I'm seeing the ability to display the collection name when viewing an individual item, but not the full list.

    As Omeka stands today, is there a means of doing this? Thanks!

    http://www.mjcpl.org/photos

  2. Hi mjcpl:

    You could add some custom code to your items/browse.php file, something like this:

    <?php
        if ($collection = get_collection_by_id($_GET['collection'])) {
            $html .= 'Collection: '.$collection->name;
        }
        if ($tags = html_escape($_GET['tags'])) {
            $html .= 'Tags: '.$tags;
        }
    
        echo $html;
    ?>

    This is getting each of the parameters passed to the URL, and adding their values to a $html variable, then echoing that variable.

    Best,
    Jeremy

  3. That was exactly what I needed. You are a scholar and a gentleman!

    I'm learning php as I go. I understand what you did in general, but I'll need to read up on $_GET to "get it".

    Thanks again!

  4. Glad to help! $_GET is a reserved variable in PHP for retrieving variables passed to the URL:

    http://php.net/manual/en/reserved.variables.get.php

  5. Hi,

    I am working with a similar situation. When I use this same code, however, it prints the words "Tags: Array" on browse pages such as items/browse/tags/tag+name. Do I need something else after the .$tags code?

    The code reads:

    <?php
        if ($collection = get_collection_by_id($_GET['collection'])) {
            $html .= ' '.$collection->description;
        }
    
        elseif ($tags = get_tags($_GET['tags'])) {
            $html .= 'Tags: '.$tags;
        }
        echo $html;
    ?>

    Any suggestions would be much appreciated.

    Thanks!

  6. Hi cabusara,

    If you change get_tags to html_escape in the elseifit should work OK. Was there a reason you wanted to use get_tags instead?

    Best,
    Jeremy

  7. I am using get_tags because html_escape returns nothing (no error message, just a blank space on the page where the tags text should be).

    I tried html_escape again just to double check, and indeed, the system returns nothing. So, neither get_tags or html_escape seem to work.

    Just to get a larger picture of what is going on on the rest of the page's code, here is what things look like. Everything else is working, except for this get_tags (which returns Tags: array) and html_escape (which returns nothing).

    <h1>
    <?php
        if ($collection = get_collection_by_id($_GET['collection'])) {
            $html .= ' '.$collection->description;
        }
    
        elseif ($tags = html_escape($_GET['tags'])) {
            $html .= 'Tags: '.$tags;
        }
        echo $html;
    ?></h1>
    
    <?php while (loop_items()) {
        switch (item('collection name')) {
        case 'Question1':
            common('browseq');
            break;
        case 'Question2':
            common('browseq');
            break;
        case 'Question3':
            common('browseq');
            break;
        case 'Question4':
            common('browseq');
            break;
        case 'Question5':
            common('browseq');
            break;
        case 'Forum Scholars':
            common('browses');
        default:
            common('browse');
        }
    
    }
    ?>
  8. The code as you have it should work if you have in fact returned a query string in the url, i.e. have something like browse?tags=lorem at the end of the url.

    Are you trying to return the tags for an instance other than browsing items by a tag?

  9. Aha, that gave me an idea. The tags urls are linking to pages with addresses like "/items/browse/tag/lorem"

    I checked the command I am using to get the tag links on pages... I am using:
    <?php echo item_tags_as_string(); ?>

    This automatically links all my tags to pages with urls like "/items/browse/tag/lorem"

    So, I went into the application/helpers/ folder and modified "TagFunctions.php" so that the section that reads

    /**
     * Retrieve a tag cloud of all the tags for the current item.
     *
     **/
    
    function item_tags_as_cloud($order = 'alpha', $tagsAreLinked = true, $item=null, $limit=null)
    {
        if (!$item) {
            $item = get_current_item();
        }
        $tags = get_tags(array('sort'=>$order, 'record'=>$item), $limit);
        $urlToLinkTo = ($tagsAreLinked) ? uri('items/browse/tag/') : null;
        return tag_cloud($tags, $urlToLinkTo);
    }

    Now reads

    function item_tags_as_cloud($order = 'alpha', $tagsAreLinked = true, $item=null, $limit=null)
    {
        if (!$item) {
            $item = get_current_item();
        }
        $tags = get_tags(array('sort'=>$order, 'record'=>$item), $limit);
        $urlToLinkTo = ($tagsAreLinked) ? uri('items/browse?=tags') : null;
        return tag_cloud($tags, $urlToLinkTo);
    }

    Now everything is working, and the html_escape function is returning the tag names.

    Thank you for the help!

Reply

You must log in to post.