wersja skryptu MyBB: 1.8.4
adres forum: localhost
na czym polega problem:
Witam, mam pytanie jak zrobić plugin który jeśli temat nie ma ikony zamienia " " na "", wiem że jest możliwość modyfikacji pliku forumdisplay.php i usunięcia " " z $icon = " ", ale nie chciałbym tego robić po każdej aktualizacji MyBB.
Z góry dziękuje za pomoc i pozdrawiam
Zrobiłem to tak, ale nie działa
robiłem na podstawie tego:
http://community.mybb.com/archive/index....421-1.html
Kod:
function replaceiconplugin_info()
{
global $lang;
return array(
'name' => 'Zmiana pustej ikony tematu',
'description' => 'Zmiana pustej ikony tematu zamiast " " na ""!',
'version' => '1.0',
'compatibility' => '18*'
);
}
$plugins->add_hook("forumdisplay_thread", "replaceiconplugin_run");
function replaceiconplugin_run()
{
global $thread, $icon;
if($icon = " ")
{
str_replace( ' ', '', $icon);
}
}
Przejrzyj dokładnie kod i zastanów się, jak działa ten warunek i kiedy jest spełniany
Druga sprawa, wynik str_replace trzeba przypisać do $icon, inaczej jest to wykonywane "w powietrzu" i niczego nie zmienia.
zmieniłem troche, ale nadal nie działa
Kod:
$plugins->add_hook("forumdisplay_thread", "replaceiconplugin_run");
function replaceiconplugin_run()
{
global $thread, $icon;
if($thread['icon'] == 0)
{
$icon = str_replace( ' ', '', $icon);
}
}
Teraz od wygląda ok, ale pytanie brzmi: czy to ma sens?
Jesteś pewien, że w $icon siedzi właśnie ?
W celach testowych wyświetl sobie tą zmienną w funkcji, będziesz wiedział, jak sprawa wygląda.
Możliwe, że jak nie ma ikony (czyli wartość = 0) to silnik nic tam nie wrzuca.
odpowiadający za to fragment kodu
Kod:
// If this thread has a prefix, insert a space between prefix and subject
$thread['threadprefix'] = $threadprefix = '';
if($thread['prefix'] != 0)
{
$threadprefix = build_prefixes($thread['prefix']);
if(!empty($threadprefix))
{
$thread['threadprefix'] = $threadprefix['displaystyle'].' ';
}
}
$thread['subject'] = $parser->parse_badwords($thread['subject']);
$thread['subject'] = htmlspecialchars_uni($thread['subject']);
if($thread['icon'] > 0 && $icon_cache[$thread['icon']])
{
$icon = $icon_cache[$thread['icon']];
$icon['path'] = str_replace("{theme}", $theme['imgdir'], $icon['path']);
$icon['path'] = htmlspecialchars_uni($icon['path']);
$icon['name'] = htmlspecialchars_uni($icon['name']);
eval("\$icon = \"".$templates->get("forumdisplay_thread_icon")."\";");
}
else
{
$icon = " ";
}
4 ostatnie linijki kodu, tylko nie wiem jak nie edytując forumdisplay.php zmienić $icon = " "; na $icon = "";
Używasz zbyt wczesnego hooka - zmieniasz icon, ale potem skrypt i tak go ustawia pod siebie.
Spróbuj użyć forumdisplay_thread_end
Dzięki wielkie za pomoc, działa