1776 Posts in 498 Topics by 533 members
Blog Module
SilverStripe Forums » Blog Module » How to return multiple related tags?
Discuss the Blog Module.
Moderators: martimiz, Howard, Sean, Ryan M., biapar, Willr, Ingo, swaiba, simon_w
|
Page:
1
|
Go to End | |
| Author | Topic: | 728 Views |
-
How to return multiple related tags?

25 May 2011 at 6:32am Last edited: 26 May 2011 7:10am
Unlike the tag could widget which creates links based on a single tag, I'm trying to return entries based on all/each tags of a post.
If I use a function like this, I only get entries that match the entire tag string.
function GetTags(){
return DataObject::get('BlogEntry',"Tags = '$this->Tags'",'','','');
}What I want to return is all entries that share each of {$this->Tags}.
So if my entry is tagged (Chicken, BBQ, Summer) I want to return not just entries tagged 'Chicken, BBQ, Summer', but all entries tagged with Chicken and/or BBQ and/or Summer.
I assume my syntax Tags = {$this->Tags} is the issue. I probably need to bust apart $this->Tags into individual tags and return those, but I do not know the SQL syntax to say 'where one tag is x and one tag is y and one tag is z...'
Any guidance is greatly appreciated.
Thanks
Chris -
Re: How to return multiple related tags?

26 May 2011 at 1:08pm
This is as close as I can get. I'm using $relatedLink = "Tags ='000'"; to start off the SQL since my foreach() is returning "OR Tags LIKE..."
"000" should return nothing. I can't believe that's a great way to do this, but I can live with it.
The only thing I can't figure out is how to remove the current entry page from the results.
class ExtendedEntry_Controller extends BlogEntry_Controller {
function GetAllRelTags(){
$theseTags = "$this->Tags";
$eachTag = explode(',',$theseTags);
$relatedLink = "Tags ='000'";
foreach($eachTag as $relatedTag) {
$relatedLink.= " OR Tags LIKE '%".$relatedTag."%' ";
}
return DataObject::get('BlogEntry',$relatedLink,'','','');
}
}
| 728 Views | ||
|
Page:
1
|
Go to Top |

