Webboard

Pełna wersja: Pod jaki hak podczepić się w podglądzie profilu?
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
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.?
Jeżeli chodzi o standardowe ustawienia pluginów w ACP to http://docs.mybb.com/Plugin_Settings.html .
Ale jeżeli Ci to nie wystarcza to musisz utworzyć podstronę w ACP i tam upchnąć swoje ustawienia.
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ń...