Proste pytanie. Nie mam pojęcia pod jaki hak podczepić się tworząc pluginy, które mają działać w podglądzie profilu. Chcę na początek zrobić nowy wygląd reputacji + awanse. Pozostaje jeden problem. Gdy robię identyczny prawie plugin na postbit z awansami reputacji chcę aby tła miały 3 inne kolory 0 neutral szary, rep na + zielony a minus czerwony. Zrobiłem 3 szablony rep_positive, rep_neutral, rep_negative lecz potrafię ustawić dla zmiennej tylko ten jeden.
Jak jest
Kod:
if ($post['reputation'] < "0")
Chcę ustawić
Kod:
".$templates->get("rep_negative")."
lecz i tak zostaje ten ustawiony domyślinie
Kod:
eval("\$post['repu'] = \"".$templates->get("rep_negative")."\";");
Jak zrobić dla poszczególnej ilości inny szablon?
Teraz 2 sprawa. Chcę zrobić 5 ostatnich tematów i postów wyświetlanych w podglądzie profilu. Mam zrobić pętlę, która będzie wyświetlała te zmienne dla danego usera? Bo innego pomysłu nie mam bo w końcu co mają tematy wspólnego z profilem...
Hooki znajdziesz tutaj:
http://docs.mybb.com/MyBB_Plugin_Hooks.html
Wygląd profilu to plik member.php, więc dla niego bierzesz odpowiedni hook.
Ad 1.
Kod PHP:
if($post['reputation'] < '0') {
eval("\$post['repu'] = \"".$templates->get("rep_negative")."\";");
}
elseif($post['reputation'] == '0') {
eval("\$post['repu'] = \"".$templates->get("rep_neutral")."\";");
}
else {
eval("\$post['repu'] = \"".$templates->get("rep_positive")."\";");
}
Teraz pod zmienną $post['repu'] będą kryć się 3 szablony zależnie od tego jaką ktoś ma reputację, jeżeli dobrze zrozumiałem. W zasadzie to nie wiem jak w całości wygląda plugin więc trudno powiedzieć.
EveryOne napisał(a):Teraz 2 sprawa. Chcę zrobić 5 ostatnich tematów i postów wyświetlanych w podglądzie profilu. Mam zrobić pętlę, która będzie wyświetlała te zmienne dla danego usera? Bo innego pomysłu nie mam bo w końcu co mają tematy wspólnego z profilem...
Tak, potrzebujesz pętli do wyświetlenia tych danych.
Teraz pozostaje pytanie co do haka.
Żeby wyciągnąć dane o tym jaką reputacje ma dany user muszę podpiąć się pod member_profile_start?
Raczej nie ma potrzeby. MyBB pobiera chyba wszytskie dane usera którego profil przeglądamy, wiec te dane są juz raczej dostępne.
Okey. Zostają mi 2 ostatnie pytania co do tworzenia tego pluginu. Jak wysłać CSS do global.css (przykładowo) lub żeby plugin tworzył swój CSS. Oraz jak zrobić aby dane z tego pluginu były w ACP? np jak mają się nazywać awanse, od ilu do ilu punktów reputacji itd. Muszę stworzyć tabelę w bazie z kolumnami np: nazwa, ilość itd? I jak to wyświetlić a Panelu Admina.?
Hm. Zrobiłem tak:
Kod:
function awanse_reputacji_active()
{
global $db;
$setting_group = array(
'name' => 'awanse_reputacji',
'title' => 'awanse_reputacji Settings',
'description' => 'Settings for awanse_reputacji.',
'disporder' => '1',
'isdefault' => 'no'
);
$query = $db->simple_select("settinggroups", "gid", "name = 'awanse_reputacji'", array("limit" => 1));
$gid = $db->fetch_field($query, "gid");
$awanse_reputacji_setting = array(
'name' => 'awanse_reputacji_setting1',
'title' => 'A random setting for awanse_reputacji',
'description' => 'What this setting will do',
'optionscode' => 'yesno',
'value' => '1',
'disporder' => '1',
'gid' => intval($gid)
);
$db->insert_query('settings', $awanse_reputacji_setting);
$awanse_reputacji_setting = array(
'name' => 'awanse_reputacji_setting2',
'title' => 'Another random setting for awanse_reputacji',
'description' => 'This is a textbox.',
'optionscode' => 'text',
'value' => '',
'disporder' => '2',
'gid' => intval($gid)
);
$db->insert_query('settings', $awanse_reputacji_setting);
$awanse_reputacji_setting = array(
'name' => 'awanse_reputacji_setting3',
'title' => 'Another random setting for awanse_reputacji',
'description' => 'This is a textarea.',
'optionscode' => 'textarea',
'value' => 'Ile punktów do rangi Bywales?',
'disporder' => '3',
'gid' => intval($gid)
);
$db->insert_query('settings', $awanse_reputacji_setting);
rebuild_settings();
oraz:
Kod:
function awanse_reputacji_deactivate(){
global $db, $mybb;
$db->write_query("DELETE FROM ".TABLE_PREFIX."settings WHERE name IN ('awanse_reputacji_setting1','awanse_reputacji_setting2','awanse_reputacji_setting3','awanse_reputacji_setting4')");
$db->write_query("DELETE FROM ".TABLE_PREFIX."settinggroups WHERE name = 'awanse_reputacji'");
rebuild_settings();
}
I kiedy aktywuje plugin dalej nie ma w ustawieniach wpisów (te są testowe).
Kod PHP:
$query = $db->simple_select("settinggroups", "gid", "name = 'awanse_reputacji'", array("limit" => 1));
$gid = $db->fetch_field($query, "gid");
Jedynie pobierasz gid, ale wcześniej nie zapisałeś grupy ustawień...