stan1226
Member
So I recently found out that XFMG does not support sorting order by title. I was shocked that this is a requested feature for years now without any real answer when we will get it.
I didn't know where to put this topic to, so I added it here
I just look into the XMFG files, tried a few things and found a very easy solution to add a order by title option to XFMG.
All you need is a simple textediot (I recommend notepad++) and knowledge how to upload the modified file to your server.
Always do a backup of your original files before modying them!
Modify the following files with the editor:
/src/addons/XFMG/Api/ControllerPlugin/MediaItem.php
Add the title value into the variables at line 47:
/src/addons/XFMG/Api/ControllerPlugin/Album.php
Same thing at line 37:
/src/addons/XFMG/ControllerPlugin/AbstractList.php
add the title value at the function at line 90. Don't forget to add the , behind 'view_count'
Now we need to modify two template directly in your Xenforo Admin Template page.
xfmg_media_filters
Add the line
<xfption value="title">{{ phrase('title') }}</xfption>
to the filters at 35 and 43. The placement here defines at which position the title sort will appear in your sort list:
xfmg_album_list_macros
Add a , to phrase('views') at line 23 and add a new line
'title': phrase('title')
And that's already it! Now you have successfully implemented a order by title function to your XFMG!
Here's a screenshot of the function working on my german forum. Since the addition is using the phrase('title') function, it should work in every XFMG language.
Known problems:
Your forum will show an error in the backend, that you modified the 3 XFMG files.
I hope the XF might add this to the next version of XFMG. It's really just a really simple fix for a long requested feature
I didn't know where to put this topic to, so I added it here
I just look into the XMFG files, tried a few things and found a very easy solution to add a order by title option to XFMG.
All you need is a simple textediot (I recommend notepad++) and knowledge how to upload the modified file to your server.
Always do a backup of your original files before modying them!
Modify the following files with the editor:
/src/addons/XFMG/Api/ControllerPlugin/MediaItem.php
Add the title value into the variables at line 47:
PHP:
switch ($order)
{
case 'media_date':
case 'comment_count':
case 'rating_weighted':
case 'reaction_score':
case 'view_count':
case 'title':
$mediaFinder->order($order, $direction);
return [$order, $direction];
}
/src/addons/XFMG/Api/ControllerPlugin/Album.php
Same thing at line 37:
PHP:
switch ($order)
{
case 'create_date':
case 'media_count':
case 'comment_count':
case 'rating_weighted':
case 'reaction_score':
case 'view_count':
case 'title':
$albumFinder->order($order, $direction);
return [$order, $direction];
}
/src/addons/XFMG/ControllerPlugin/AbstractList.php
add the title value at the function at line 90. Don't forget to add the , behind 'view_count'
PHP:
public function getAvailableSorts()
{
// maps [name of sort] => field in/relative to MediaItem entity
return [
'comment_count' => 'comment_count',
'rating_weighted' => 'rating_weighted',
'reaction_score' => 'reaction_score',
'view_count' => 'view_count',
'title' => 'title'
];
}
Now we need to modify two template directly in your Xenforo Admin Template page.
xfmg_media_filters
Add the line
<xfption value="title">{{ phrase('title') }}</xfption>
to the filters at 35 and 43. The placement here defines at which position the title sort will appear in your sort list:
PHP:
<xf:select name="order" value="{{ $filters.order ?: 'media_date' }}">
<xf:option value="media_date">{{ phrase('date') }}</xf:option>
<xf:option value="title">{{ phrase('title') }}</xf:option>
<xf:option value="comment_count">{{ phrase('xfmg_comments') }}</xf:option>
<xf:option value="rating_weighted">{{ phrase('rating') }}</xf:option>
<xf:option value="reaction_score">{{ phrase('reaction_score') }}</xf:option>
<xf:option value="view_count">{{ phrase('views') }}</xf:option>
</xf:select>
<xf:else />
<xf:select name="order" value="{{ $filters.order ?: 'create_date' }}">
<xf:option value="create_date">{{ phrase('date') }}</xf:option>
<xf:option value="title">{{ phrase('title') }}</xf:option>
<xf:option value="media_count">{{ phrase('xfmg_media_count') }}</xf:option>
<xf:option value="comment_count">{{ phrase('xfmg_comments') }}</xf:option>
<xf:option value="rating_weighted">{{ phrase('rating') }}</xf:option>
<xf:option value="reaction_score">{{ phrase('reaction_score') }}</xf:option>
<xf:option value="view_count">{{ phrase('views') }}</xf:option>
</xf:select>
xfmg_album_list_macros
Add a , to phrase('views') at line 23 and add a new line
'title': phrase('title')
PHP:
<xf:set var="$sortOrders" value="{{ {
'create_date': phrase('xfmg_create_date'),
'media_count': phrase('xfmg_media_count'),
'comment_count': phrase('xfmg_comments'),
'rating_weighted': phrase('rating'),
'reaction_score': phrase('reaction_score'),
'view_count': phrase('views'),
'title': phrase('title')
} }}" />
And that's already it! Now you have successfully implemented a order by title function to your XFMG!
Here's a screenshot of the function working on my german forum. Since the addition is using the phrase('title') function, it should work in every XFMG language.
Known problems:
Your forum will show an error in the backend, that you modified the 3 XFMG files.
I hope the XF might add this to the next version of XFMG. It's really just a really simple fix for a long requested feature
Last edited: