Last Game Section version: 1.3.1

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Kategorien den Spieleinfos hinzufügen
#1
Question 
Ich nutze zwar noch die alte Gamesection 1.2.4, aber ich denke, mein Problem ist nicht Versionsabhängig.

Ich werde nur deshalb nicht updaten, weil ich meine GS so umgebaut habe, daß ich gar nicht wüßte, wo ich mit updaten anfangen und aufhören sollte.

Mein Problem:

unter dem Game-Icon stelle ich zum einen die Game ID als auch die Kategorie ID dar.


.jpg   gs-2019.jpg (Size: 319,6 KB / Downloads: 38)

Selbiges wird bei den Scoreseite usw dargestellt. Wie kann ich den Kategorienamen statt der Zahl (ID) darstellen bzw. auf der Seite darstellen? Hierfür ist sicherlich einiges an PHP Code nötig, um es so umsetzen zu können.

Um die Kategorien mit ID darzustellen, mußte ich die games.php modifizieren. Überall wo g.gid per $query Befhl eingelesen wird, habe ich g.cid hinzugefügt.

PHP Code:
//Loading games
        
$query $db->query("SELECT DISTINCT g.gid, g.title, g.name, g.description, g.played, g.lastplayed, g.lastplayedby, g.rating, g.numratings, g.dateline, g.cid, c.username, c.uid, c.score, f.fid, r.rid, s.score AS pscore, u.avatar, u.username AS lastplayedusername
        FROM "
.TABLE_PREFIX."games g
        LEFT JOIN "
.TABLE_PREFIX."games_champions c ON (g.gid=c.gid)
        LEFT JOIN "
.TABLE_PREFIX."games_favourites f ON (g.gid=f.gid AND f.uid='".$mybb->user['uid']."')
        LEFT JOIN "
.TABLE_PREFIX."games_rating r ON (g.gid=r.gid AND r.uid='".$mybb->user['uid']."')
        LEFT JOIN "
.TABLE_PREFIX."games_scores s ON (g.gid=s.gid AND s.uid='".$mybb->user['uid']."')
        LEFT JOIN "
.TABLE_PREFIX."users u ON (g.lastplayedby=u.uid)
        WHERE g.active='1'"
.$where_cat."
        GROUP BY g.gid
        ORDER BY g."
.$sortby." ".$order."
        LIMIT "
.$start.",".$perpage); 

Wie wandle ich die CID hier in den jeweiligen Namen um?
Meine GS ist für Gäste offen, so daß man sich das ganze ansehen kann. Derzeit wird bei jeden Spiel noch ein Admin edit Link angezeit. Den habe ich nur drin, weil ich derzeit meine Spiele einsortiere und es so schneller geht.
Reply
#2
Du müsstest in der Tabelle 'games_categories' nach der cid und dem title suchen. Dann kannst Du statt der cid den Namen ausgeben....
No support via PM


Reply
#3
da habe ich 0 Plan von.

Ich nehme für die cat mal Variable a.

bei $query würde ich demzufolge a.cid und a.title einfügen


mit dem Auslesen, dass funktioniert wohl mit Left join, aber der Rest?

PHP Code:
LEFT JOIN ".TABLE_PREFIX."games_categories a ON (a.cid=g.cid



Ich habe mir gerade mal die games.php angeschaut. Zeile 1094:

PHP Code:
//Loading results
        
$query $db->query("SELECT DISTINCT g.gid, g.cid, g.title, g.dateline, c.uid, c.username, c.score, ca.title AS cat_title
        FROM "
.TABLE_PREFIX."games g
        LEFT JOIN "
.TABLE_PREFIX."games_champions c ON (g.gid=c.gid)
        LEFT JOIN "
.TABLE_PREFIX."games_categories ca ON (g.cid=ca.cid)
        WHERE g.active='1' "
.$where_search2."
        ORDER BY g."
.$sortby." ".$order."
        LIMIT "
.$start.",".$maxgames); 


Ist das ein Ansatz für mich und welche Variablen müssen dann im Template angegeben werden.

Bisher lasse ich im games_bit und games_scores Template das ganze wie folgt ausgeben:

games_bit:
Code:
Game ID: <a href="games.php?cid={$games['gid']}#gamemenu">{$games['gid']}</a>
<br />
Kategorie ID: <a href="games.php?cid={$games['cid']}#gamemenu">{$games['cid']}</a>

games_score:

Code:
Game ID: <a href="games.php?action=play&ampgid={$game['gid']}#gameplay">{$game['gid']}</a>
<br />
Kategorie ID: <a href="games.php?cid={$game['cid']}#gamemenu">{$game['cid']}</a>

Für Hilfe wäre ich sehr dankbar.
Reply
#4
Den qurey aus Deinem ersten Beitrag müsstest Du z.B. so anpassen

PHP Code:
//Loading games
$query $db->query("SELECT DISTINCT g.gid, g.cid, g.title, g.name, g.description, g.played, g.lastplayed, g.lastplayedby, g.rating,
g.numratings, g.dateline, c.username, c.score, f.fid, r.rid, s.score AS pscore, u.username AS lastplayedusername, a.title AS cattitle
FROM "
.TABLE_PREFIX."games g
LEFT JOIN "
.TABLE_PREFIX."games_champions c ON (g.gid=c.gid)
LEFT JOIN "
.TABLE_PREFIX."games_favourites f ON (g.gid=f.gid AND f.uid='".$mybb->user['uid']."')
LEFT JOIN "
.TABLE_PREFIX."games_rating r ON (g.gid=r.gid AND r.uid='".$mybb->user['uid']."')
LEFT JOIN "
.TABLE_PREFIX."games_scores s ON (g.gid=s.gid AND s.uid='".$mybb->user['uid']."')
LEFT JOIN "
.TABLE_PREFIX."users u ON (g.lastplayedby=u.uid)
LEFT JOIN "
.TABLE_PREFIX."games_categories a ON (g.cid=a.cid)
WHERE g.active='1'"
.$where_cat."
GROUP BY g.gid
ORDER BY g."
.$sortby." ".$order."
LIMIT "
.$start.",".$perpage); 

Dann müsstest zwei neue Variablen vergebeben, die Du innerhalb der nachfolgenden while-Schleife einfügst:
PHP Code:
$categorie_title htmlspecialchars_uni($games['cattitle']);
$categorie_cid $games['cid']; 

In den beiden von Dir genannten Templates setzt Du das dann wie folgt ein:
Code:
Kategorie: <a href="games.php?cid={$categorie_cid}">{$categorie_title}</a>
No support via PM


Reply
#5
sobald ich
Code:
, a.title AS cattitle
  einfüge, erhalte ich folgende Fehlermeldung:

MyBB has experienced an internal SQL error and cannot continue.

SQL Error:1054 - Unknown column 'ca.title' in 'field list'Query:SELECT DISTINCT g.gid, g.title, g.name, g.description, g.played, g.lastplayed, g.lastplayedby, g.rating, g.numratings, g.dateline, g.cid, c.username, c.uid, c.score, f.fid, r.rid, s.score AS pscore, u.avatar, u.username AS lastplayedusername, ca.title AS cattitle FROM mybb_games g LEFT JOIN mybb_games_champions c ON (g.gid=c.gid) LEFT JOIN mybb_games_favourites f ON (g.gid=f.gid AND f.uid='1') LEFT JOIN mybb_games_rating r ON (g.gid=r.gid AND r.uid='1') LEFT JOIN mybb_games_scores s ON (g.gid=s.gid AND s.uid='1') LEFT JOIN mybb_users u ON (g.lastplayedby=u.uid) WHERE g.active='1' GROUP BY g.gid ORDER BY g.title ASC LIMIT 0,10

Ab Zeile 1048:

Code:
//Description specification
        if(isset($mybb->input['des']))
        {
            if(isset($mybb->input['cid']))
            {
                $slash = " | ";
            }
            else
            {
                $slash = "";
            }
            
            $search_sen .= $lang->sprintf($lang->searchresults_des, $search_bar_des, $slash);
        }

Ich glaube, es ist der Zeitpunkt gekommen, daß ich mich etwas mehr mit PHP beschäftige. Hab vielen Dank für deine Hilfe.
Reply
#6
Dann hast Du nicht den kompletten query ersetzt. Da sind noch zwei weitere Anpassungen enthalten.

Und ja, wenn man Anpassungen an einem bestehenden System vornehmen möchte, egal ob Forensoftware oder z.B. ein CMS, dann sollte man sich mit der Materie beschäftigen. Schon alleine wegen der Sicherheit. Wer sagt Dir denn, dass die Ratschläge, die Du so im Netz erhältst, z.B. bzgl. Sicherheit immer i.O. sind!?

Nachtrag:
der o.a. MySQL Query ist etwa in der Zeile 209 der games.php. Die darauf folgende while-Schleife in etwa Zeile 225. Also weit weg von Zeile 1048....
Nach den Zeilen
PHP Code:
while($games $db->fetch_array($query))
{
    
//Plugin
    
$plugins->run_hooks("games_default_games_start"); 
setze die o.a. Variablen ein....

Das alles kommt nocheinmal um die Zeile 559 herum. Ob Du die Anpassungen auch hier vornehmen musst, habe ich nicht geprüft.
No support via PM


Reply
#7
Vielen Dank Jockl, ich habe es für die Standard Gameseiten hinbekommen.

http://olaf-asmus.de/uploads_file/Olaf/2...ection.png

Bei den Play und Scoreseiten müßte ich sicherlich noch Anpassungen vornehmen, denn mit diesen PHP Code geht es nicht, um dort den Kategorienamen darzustellen. Ich habe es probiert, ohne Erfolg.

Mit der jetzigen Form kann ich aber durchaus leben und ich sehe es als gute zusätzliche Info an, wenn man sieht, ob ein Spiel schon in einer Kategorie ist, oder nicht.

Wenn du irgend ein Spiel für deine Game Section suchst, ich habe zig Tausend Spiele, welche ich dir gerne zur Verfügung stelle. Mein Angebot steht.

MfG Olaf
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)