Google+

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Rezolvat Grup
#1
Cum pot face o imagine si cand apesi pe ea sa iti schimbe automat grupul de pe forum?
#2
Pentru a face asta, trebuie să urmezi pașii de mai jos:
  1. Intră în șablonul în care vrei să apară butonul și introdu următorul cod unde dorești să apară:

    Code:
    <form method="POST">
    	<input type="submit" name="changeGroup" title="Schimbă grupul de utilizatori" value="" class="change_group_image" />
    </form>

  2. Intră în global.css și adaugă următoarea linie:

    Code:
    1
    2
    3
    4
    5
    6
    7
    .change_group_image {
    	background: url("URL imagine") no-repeat;
    	border: none;
    	cursor: pointer;
    	height: 40px; /*schimbă înălțimea și lățimea în funcție de imaginea ta*/
    	width: 40px;
    }

  3. Intră în fișierul php corespunzător șablonului modificat (de exemplu dacă ai modificat șablonul index, fișierul index.php) și adaugă următoarea linie undeva unde nu va afecta indexul curent:

    PHP Code:
    if(isset($_POST['changeGroup'])){
    	$db->query("UPDATE `".TABLE_PREFIX."users` SET `usergroup`=4 WHERE `username`='".$mybb->user['username']."'");
    }

  4. Modifică din codul php cifra 4 cu ID-ul grupului de utilizator în care va fi mutat utilizatorul care apasă pe imagine.

Succes!

PS: Care este adresa către forumul tău?
#3
http://hogwartsarmyro.tk/

L.E.
Nu ma descurc.
#4
Spune-mi, care imagini vrei să le schimbi în link-uri?
#5
Multumesc de ajutor! As mai avea o intrebare. Pe index ai vazut ca sunt niste punctaje si trebuie mereu sa intru in template sa le editez. As putea face cumva sa fac o pagina de unde sa le editez si sa apara acolo?
#6
Nu cred că va fi necesară crearea unei pagini pentru editarea manuală a punctelor.
Din câte am observat, folosești modificarea Form Manager pentru stabilirea punctajelor. Cel mai probabil aceasta le reține în baza de date, însă nu sunt sigur deoarece nu am modificarea. Cu alte cuvinte, se poate face astfel încât punctajele să fie actualizate automat folosind o interogare pentru baza de date.
Însă pentru a face asta voi avea nevoie de acces la baza de date, FTP și probabil la panoul de administrare.

PS: Nu uita să faci un backup înainte :)
#7
La Form Manager eu decat primesc un PM pe forum cu ce a completat userul. As vrea ceva simplut.
#8
Atunci ce modificare folosești pentru stabilirea punctelor? Sau determini tu câte puncte primește fiecare clasă și editezi șablonul?
#9
(08-21-2013, 08:54 PM)Baltzatu Wrote: Atunci ce modificare folosești pentru stabilirea punctelor? Sau determini tu câte puncte primește fiecare clasă și editezi șablonul?
Modific Sablonul Index Page Templates > index.
#10
Am găsit o cale prin care se pot edita acele valori direct de pe index, apăsând dublu click pe punctaj. Pentru a realiza asta, urmează următorii pași:
  1. Intră în phpMyAdmin > baza ta de date > tabela mybb_settings (sau care este prefixul folosit de tine) > SQL și introdu în acea căsuță următorul cod (nu uita să înlocuiești prefixul mybb_ cu cel folosit de tine, în caz că e diferit; de asemenea, modifică aici punctajele grupelor care vor fi afișate inițial pe forum, înainte de a le edita, ex. cercetașii au 150, astropufii au 140 etc.):

    Code:
    INSERT INTO `mybb_settings`(`name`, `value`) VALUE ('cercetas', 150), ('astropuf', 140), ('ochidesoim', 130), ('viperin', 120)


  2. Introdu în fișierul index.php următorul cod, undeva unde nu va afecta funcționarea curentă a paginii (de exemplu linia 397):

    PHP Code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $query = $db->simple_select("settings", "value", "name='cercetas'");
    $cercetas = $db->fetch_array($query);
    
    $query = $db->simple_select("settings", "value", "name='astropuf'");
    $astropuf = $db->fetch_array($query);
    
    $query = $db->simple_select("settings", "value", "name='ochidesoim'");
    $ochidesoim = $db->fetch_array($query);
    
    $query = $db->simple_select("settings", "value", "name='viperin'");
    $viperin = $db->fetch_array($query);


  3. Intră în șablonul index și înlocuiește punctajele grupelor (caselor) cu următoarele:

    Code:
    <div class="punctaj_cercetas">{$cercetas['value']}</div>
    <div class="punctaj_astropuf">{$astropuf['value']}</div>
    <div class="punctaj_ochidesoim">{$ochidesoim['value']}</div>
    <div class="punctaj_viperin">{$viperin['value']}</div>


  4. Descarcă următoarele fișiere (click dreapta > Save Page As...) și pune-le în dosarul jscripts: jQuery și  jEditable.
  5. Intră în șablonul headerinclude și adaugă următoarele scripturi:

    Code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <script type="text/javascript" src="{$mybb->settings['bburl']}/jscripts/jquery.min.js"></script>
    <script type="text/javascript" src="{$mybb->settings['bburl']}/jscripts/jquery.jeditable.js"></script>
    <script type="text/javascript">
    jQuery.noConflict();
    jQuery(function($) {
     $(".punctaj_cercetas").editable("{$mybb->settings['bburl']}/punctaj_cercetas.php", {
     event     : "dblclick",
     style      : "inherit"
     });
     $(".punctaj_astropuf").editable("{$mybb->settings['bburl']}/punctaj_astropuf.php", { 
     event     : "dblclick",
     style      : "inherit"
     });
     $(".punctaj_ochidesoim").editable("{$mybb->settings['bburl']}/punctaj_ochidesoim.php", { 
     event     : "dblclick",
     style      : "inherit"
     });
     $(".punctaj_viperin").editable("{$mybb->settings['bburl']}/punctaj_viperin.php", { 
     event     : "dblclick",
     style      : "inherit"
     });
    });
    </script>


  6. Acum e timpul să creezi fișierele PHP, patru la număr. Primul se numește punctaj_cercetas.php și are următorul conținut:

    PHP Code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php
    
    define('IN_MYBB', 1);
    require_once "./global.php";
    
    $query = $db->simple_select("users", "usergroup", "username='".$mybb->user['username']."'");
    $grup = $db->fetch_array($query);
    
    if($grup['usergroup'] == 4)
    {
    	echo $_REQUEST['value'];
    	$db->query("UPDATE mybb_settings SET value=".$_REQUEST['value']." WHERE name='cercetas'");
    }
    else
    {
    	echo "Nu aveți permisiunea de a edita această valoare!";
    }
    
    ?>


  7. Al doilea se numește punctaj_astropuf.php și are următorul conținut:

    PHP Code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php
    
    define('IN_MYBB', 1);
    require_once "./global.php";
    
    $query = $db->simple_select("users", "usergroup", "username='".$mybb->user['username']."'");
    $grup = $db->fetch_array($query);
    
    if($grup['usergroup'] == 4)
    {
    	echo $_REQUEST['value'];
    	$db->query("UPDATE mybb_settings SET value=".$_REQUEST['value']." WHERE name='astropuf'");
    }
    else
    {
    	echo "Nu aveți permisiunea de a edita această valoare!";
    }
    
    ?>


  8. Al treilea se numește punctaj_ochidesoim.php și are următorul conținut:

    PHP Code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php
    
    define('IN_MYBB', 1);
    require_once "./global.php";
    
    $query = $db->simple_select("users", "usergroup", "username='".$mybb->user['username']."'");
    $grup = $db->fetch_array($query);
    
    if($grup['usergroup'] == 4)
    {
    	echo $_REQUEST['value'];
    	$db->query("UPDATE mybb_settings SET value=".$_REQUEST['value']." WHERE name='ochidesoim'");
    }
    else
    {
    	echo "Nu aveți permisiunea de a edita această valoare!";
    }
    
    ?>


  9. Iar al patrulea se numește punctaj_viperin.php și are următorul conținut:

    PHP Code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php
    
    define('IN_MYBB', 1);
    require_once "./global.php";
    
    $query = $db->simple_select("users", "usergroup", "username='".$mybb->user['username']."'");
    $grup = $db->fetch_array($query);
    
    if($grup['usergroup'] == 4)
    {
    	echo $_REQUEST['value'];
    	$db->query("UPDATE mybb_settings SET value=".$_REQUEST['value']." WHERE name='viperin'");
    }
    else
    {
    	echo "Nu aveți permisiunea de a edita această valoare!";
    }
    
    ?>


  10. Salvează aceste fișiere în directorul principal al forumului tău, unde se află și index.php. După cum probabil ai observat, singura diferență dintre aceste fișiere constă în linia 12 și anume condiția pusă pentru executarea interogării (WHERE). Probabil că se putea face asta cu un singur fișier PHP și o singură funcție JavaScript, însă nu am reușit din cauza acelei condiții pentru interogare, deoarece nu puteam determina care dintre cele patru valori a fost modificată. Probabil că AJAX era răspunsul, însă funcționează și astfel.

Urmând acești pași, vei fi capabil să editezi valorile direct de pe pagina de index, reținându-le în baza de date. Din păcate, toate grupurile de utilizatori vor fi capabile să acceseze căsuța de editare apăsând dublu click pe punctaj, însă doar grupul de utilizatori corespunzător ID-ului 4 vor fi capabili să salveze modificarea (administratorii; se poate schimba din cele patru fișiere ID-ul grupului care poate modifica valorile sau chiar adăuga mai multe grupe de utilizatori). Celorlaltor grupuri li se vor afișa în momentul în care salvează modificarea următorul text: "Nu aveți permisiunea de a edita această valoare!", nereținând valoarea introdusă. Sper că asta este ceea ce căutai.

Numai bine,
Baltzatu


Forum Jump:


Users browsing this thread: 1 Guest(s)