3

I have a View that displays books and authors of each book.

BOOK 1

  • Author 1, Author 2, Author 3, Author 4, Author 5

BOOK 2

  • Author 6, Author 7

What I want to do is to show only first 3 authors of each book and add an ellipsis [...] if there is more authors. It's easy to display first 3 items (Multiple Field Settings) but how to add an ellipsis to it?


BOOK 1

  • Author 1, Author 2, Author 3 ...

BOOK 2

  • Author 6, Author 7


How can I do that?

1
  • 1
    did you get a chance to try my answer out? Commented Aug 20, 2016 at 23:45

3 Answers 3

2

I have not tested this, so consider this an educated guess:

Go to /sites/all/themes/yourtheme/ folder and in template.php add the following code:

function yourtheme_preprocess_views_view_fields($vars){ if ($vars['view']->name == "view_name" && $vars['view']->current_display == "block_1") { if (isset($vars['fields']['field_example'][3]->raw)){ $vars['fields']['field_example']->content = $vars['fields']['field_example'][0]->raw . ', ' . $vars['fields']['field_example'][1]->raw . ', ' . $vars['fields']['field_example'][2]->raw . '...'; } else { $vars['fields']['field_example']->content = $vars['fields']['field_example']->content; } } 
  • replace yourtheme with the actual name of your theme
  • replace view_name with the name of your view.
  • replace block_1 with the machine name of your view.
  • replace example with the name of your field.
1
  • Thanks for the answer and idea. I did what I want with a easier way. Sorry couldn't write the answer until now, I'm adding it right soon. Commented Aug 21, 2016 at 4:35
2

After thinking a lot, I found an "easy" way to do it :)

In my views,

  • I added the author field as normal.

  • I enabled the Exclude from display option.

enter image description here

  • In MULTIPLE FIELD SETTINGS, I set it to display only 1 value, starting from 0.

enter image description here

Then I added the author field again, for 3 times with the settings above.

For each, I changed the Multiple Field Settings as below:

    1. author: display 1 value, starting from 1.
    1. author: display 1 value, starting from 2.
    1. author: display 1 value, starting from 3.

For the 2. and 3. authors I enabled the Rewrite the output of this field option and this is the rewrite text for author 2: , [field_author_1] and this is for author 3: , [field_author_2].

I also enabled the Rewrite the output of this field for the 4. author and this is the rewrite text: ...

As a final step I added a Global: Custom text to views and this the text:

[field_author][field_author_1][field_author_2][field_author_3] 

It's done!

  • If there is only one author it displays Author 1

  • If there is two authors it displays as: Author 1, Author 2

(remember the rewrite:, [field_author_1]).

  • If there is three authors it displays as: Author 1, Author 2, Author 3

  • And if there is more than three authors it displays as: Author 1, Author 2, Author 3 ...

(remember the rewrite for author 4:...)

6
  • 2
    Sometimes simple solutions are the best right? but: that last "field_author_1" in your "global: custom text" seems bizarre to me. either it's some typo, or otherwise I think you should explain why it is not a typo ... Commented Aug 21, 2016 at 7:30
  • @Pierre.Vriens yes, you're right: it was a typo. Thanks. Commented Aug 21, 2016 at 7:40
  • 2
    Aha, that is what I also thought! You see, "some users" actually READ answers like these, and even QA-read them ... If I may ask 1 more reated question (to make it easier to digest): how come that first field_author has nothing similar to field_author_0 or something like that? I probaby have to read your answer a few more times before I actually find the answer to that remaining question I have (unless you edit it 1 more time to also make that clear)??? Commented Aug 21, 2016 at 7:44
  • @Pierre.Vriens, the naming field_author_1 etc. comes from the Drupal itself. I just added the author field 4 times and it adds the numbers to the end of the machine name of the field. :) Is this the answer of your question or did I misunderstand the question? Commented Aug 21, 2016 at 10:09
  • 1
    Nice Views UI non-coding solution, this didn't cross my mind. I will keep this in my back pocket. Commented Aug 21, 2016 at 23:50
0

Even though those authors are probably not a term reference, you may want to try an approach similar to what is suggested in post installation issue "Trimming a Views Term reference field", using a combination of "Multiple field settings" and "Rewrite results" Here is a quote from it:

Select the field in the list, it will be in the form "Content: Tags", where tags is the field name (do no use )

With Formatter set to "Plain text" (if you do not see formatter, skip this) and "Link this field" unchecked

We are going to use a combination of "Multiple field settings" and "Rewrite results"

Set "Multiple field settings" so it only display some terms, I am going to limit to 4 (we will call this max terms). I also have the separator set to ", "

Now under "Rewrite results" check "Trim this field to a maximum length", I also unchecked "Trim only on a word boundary" and "Add an ellipsis". Pick a value for maximum length, note this is per tag. Lets pick 3.

So total length = (max terms) * (maximum length + length of separator)

In this example this becomes (4) * ( 3 + 2 ) [separator is a comma and space] for a total of twelve.

If you add ellipsis's the calculation becomes total length = (max terms) * (maximum length + length of separator + length of ellipsis)

Note the Multiple field settings (as in your question) in the above suggestion ...

1
  • Thanks for the answer. In this case, the authors are Entity Reference Fields (nodes). I tried this but it didn't work, unfortunately. Commented Aug 16, 2016 at 13:58

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.