Statistik |
Beiträge: 144.534 (Täglich: 19,19 )
Themen: 16.701
Mitglieder: 13.209
Neuestes Mitglied: zitronentee.
Ausl. d. letzten Minute: 170%
Ausl. d. letzten 5 Minuten: 160%
Ausl. d. letzten 15 Minuten: 157%
Aktulle Uhrzeit: 10:45
Freier Webspace: 4.04 TB
PHP-Version: 7.4.33
|
|
|
|
|
Mini-Locator und WIW |
|
Hallo Viktor,
ich habe mal wieder eine "spezielle" Frage zu Deinem Locator.
Speziell deshalb, weil ich eine Deiner Funktionen etwas zweckentfremdet habe.
Hier erstmal die Vorgeschichte:
Es gibt ja Deine Locator-Minimap im Userprofil. Diese Map wollte ich in noch etwas verkleinerter Form auch bei den Beiträgen unterm Usernamen haben. Damit man schon im Thread erkennt, wo jemand herkommt.
Ich habe mir dabei wie folgt beholfen:
(Hoffentlich krieg ich noch alles zusammen, habe das vor über 6 Monaten schon gemacht.)
- das Karten-Originalbild auf eine Höhe von 85 Pixel herunterskaliert und unter dem Namen "locator_mini.jpg" ins locator-Verzeichnis gespeichert
- in die locator.php unter den Teil mit dem Profilbild (case "image_kl": bis imagePNG($om); ) folgendes eingefügt:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
|
case "image_mini":
if(isset($_REQUEST['userid'])) $userid = intval($_REQUEST['userid']);
$im = ImageCreateFromJPEG("locator/locator_mini.jpg");
$im_maxX = imagesx($im);
$im_maxY = imagesy($im);
$star = ImageCreateFromPNG('locator/mark.png');
$starX = imagesx($star);
$starY = imagesy($star);
$newY = '85';
$newX = ($im_maxX * $newY) / $im_maxY;
$starmulti = $im_maxY / $newY;
unset($starsize);
$starsize = "13" * $starmulti;
$result = $db->query("SELECT * FROM bb".$n."_wlw WHERE userid = '$userid'");
$users=$db->fetch_array($result);
imagecopyresized($im, $star, $users['x']-($starsize/2), $users['y']-($starsize/2), 0, 0, $starsize, $starsize, $starX, $starY);
$om = ImageCreate($newX, $newY);
imagecopyresized($om, $im, 0, 0, 0, 0, $newX, $newY, $im_maxX, $im_maxY);
imagePNG($om); |
|
- in der "thread_userfields.tpl"
php: |
1:
|
$val[title]: $fieldcontent<br> |
|
ersetzt durch:
php: |
1:
|
$title: $posts[$fieldid]<br> |
|
- in der "thread_postbit.tpl unter
eingefügt:
- in der thread.php unter
php: |
1:
|
eval ("\$posts['username'] = \"".$tpl->get("thread_username")."\";"); |
|
eingefügt:
php: |
1:
|
eval ("\$posts['locator'] = \"".$tpl->get("thread_locatorminimap")."\";"); |
|
- im Templates-Ordner eine neue Datei namens "thread_locatorminimap.tpl " angelegt mit folgendem Inhalt:
php: |
1:
2:
3:
|
<br>
<a href="./locator.php?sid=$session[hash]"><img src="locator.php?action=image_mini&userid=$posts[userid]" border="0"></a><br>
<img src="{imagefolder}/spacer.gif" width="1" height="1"> |
|
- Das Ergebnis sieht dann bei mir so aus:
Hier der Link zum Forum
Da ich eigentlich von PHP überhaupt keine Ahnung habe, hab ich mir das alles nur irgendwie hingebastelt und rumprobiert. Wahrscheinlich ginge das noch viel einfacher. Aber es funktioniert und das war erstmal das wichtigste für mich.
So, jetzt aber endlich zu meiner Frage.
Dadurch, dass nun während des Seitenaufbaues durch den Aufruf "<img src="locator.php?action=image_mini..." die locator.php mit aufgerufen wird, erscheint bei mir seitdem im wiw.php (Wer ist wo?) bei jedem User immer nur noch "Locator" als Ort. Das passiert natürlich nur, wenn der User sich gerade Beiträge durchliest. Wenn er in der Galerie oder sonstwo ist, wird das auch weiterhin korrekt angezeigt.
Fällt Dir oder jemand anderem hier vielleicht eine Lösung oder ein Lösungsansatz ein, wie ich im WIW wieder die Beiträge angezeigt bekomme und nicht immer nur "Locator"?
Viele Grüße
Hardy
|
|
11.08.2009 13:58 |
|
|
Viktor
Administrator
Zeige Viktor auf Karte
Dabei seit: 15.08.2003
Beiträge: 31.570
363 Filebase-Einträge
Alter: 66 Jahre
Herkunft: NRW wBB-Version: wBB2.3 PHP-Version: 7.4.33 MySQL-Version: 10.5.19-MariaDB Wo bist du gehostet?: eigener Server
Bewertung:
Level: 71 [?]
Erfahrungspunkte: 237.775.326
Nächster Level: 266.777.854
|
|
Hallo,
jo das ist immer das Problem wenn man etwas einbindet.
Als Lösung kann ich mir nur vorstellen das du eine neue PHP-Datei anlegst und die dann aufrufst.
Datei "locator_mini.php".
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
|
<?php
require ("./global.php");
if(isset($_REQUEST['userid'])) $userid = intval($_REQUEST['userid']);
$im = ImageCreateFromJPEG("locator/locator_mini.jpg");
$im_maxX = imagesx($im);
$im_maxY = imagesy($im);
$star = ImageCreateFromPNG('locator/mark.png');
$starX = imagesx($star);
$starY = imagesy($star);
$newY = '85';
$newX = ($im_maxX * $newY) / $im_maxY;
$starmulti = $im_maxY / $newY;
unset($starsize);
$starsize = "13" * $starmulti;
$result = $db->query("SELECT * FROM bb".$n."_wlw WHERE userid = '$userid'");
$users=$db->fetch_array($result);
imagecopyresized($im, $star, $users['x']-($starsize/2), $users['y']-($starsize/2), 0, 0, $starsize, $starsize, $starX, $starY);
$om = ImageCreate($newX, $newY);
imagecopyresized($om, $im, 0, 0, 0, 0, $newX, $newY, $im_maxX, $im_maxY);
imagePNG($om);
?>
|
|
Die dann aufrufen dann sollte es klappen.
Gruß
Viktor
__________________
Ein kluger Mann widerspricht keiner Frau. Er wartet, bis sie es selbst tut.
... beim Käfer (WBB2) konnte man noch selber schrauben,
beim neuen Golf (WBB3) muß man fast schon in die Werkstatt wenn man das "Wischwasser" nachfüllen muss!
Da fast keiner mehr hier Postet gibt es ab sofort keinen Support mehr per PN.
|
|
11.08.2009 19:44 |
|
|
|
Hallo Viktor,
vielen Dank für Deine schnelle Antwort. Ich bin mir allerdings nicht ganz sicher, ob ich Dich richtig verstanden habe.
Also ich habe jetzt eine neue PHP-Datei namens locator_mini.php mit Deinem oben geposteten Inhalt angelegt.
Dann habe ich diese Datei als Aufruf
php: |
1:
|
<a href="./locator.php?sid=$session[hash]"><img src="locator_mini.php?action=image_mini&userid=$posts[userid]" border="0"></a> |
|
in meine thread_locatorminimap.tpl eingefügt, welche ja in meiner thread.php durch
php: |
1:
|
eval ("\$posts['locator'] = \"".$tpl->get("thread_locatorminimap")."\";"); |
|
aufgerufen wird.
War das bis hierher richtig?
Falls ja, hat es leider den erhofften Erfolg nicht gebracht.
Nach wie vor wird leider im WIW die thread.php völlig ignoriert.
Ich habe grad gesehen, dass es in Deinem Forum auch so ist. Wenn ich hier in ein Userprofil reingehe, in das Du rechts ja auch den Mini-Locator eingebaut hast, und gleichzeitig in Dein WIW reingucke, bekomme ich dort angezeigt: "Ist im Userlocator".
Und wenn ich grad ein Profil erwischt habe, in dem sich unten noch Mitglieder-Bilder befinden (Dein Profil zum Beispiel
), dann steht im WIW "Schaut sich ein Profilbild an".
Du wirst also ebenfalls niemals im WIW sehen können, ob sich jemand ein Mitgliederprofil ansieht. WIW zeigt immer nur Userlocator oder Profilbild an.
Daher nehme ich an, dass immer der letzte Scriptaufruf einer Seite, selbst wenn er nur als Image-Tag eingebunden ist, vom WIW ausgewertet werden kann.
Stellt sich also die Frage, ob man vielleicht an der wiw.php irgendwas ändern kann, sodass die relevanten Parameter trotzdem übergeben werden.
Der entsprechende Abschnitt in meiner wiw.php lautet:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
|
CASE "thread.php":
if(isset($threadcache[$useronlinecache[$i]['threadid']])){
$boardlocation = $useronlinecache[$i]['boardid'];
$threadlocation = $useronlinecache[$i]['threadid'];
$threadname = $threadcache[$useronlinecache[$i]['threadid']];
eval ("\$location = \"".$tpl->get("wiw_thread")."\";");
}else{
eval ("\$location = \"".$tpl->get("wiw_unknown")."\";");
}
break; |
|
Da dieser Bereich ja sowieso übersprungen wird, weil ja "locator_mini.php" nun das letzte Script auf der Seite ist, habe ich also einfach
php: |
1:
|
CASE "thread.php": |
|
gegen
php: |
1:
|
CASE "locator_mini.php": |
|
ersetzt.
Jetzt springt er gleich zu
php: |
1:
|
eval ("\$location = \"".$tpl->get("wiw_unknown")."\";"); |
|
Also hab ich das "wiw_unknown" auch noch gegen "wiw_locator_mini" ausgetauscht und ein entsprechendes Template erstellt, wo ich den Inhalt der alten "wiw_thread.tpl" reinkopiert habe:
php: |
1:
|
Beitrag "<a href="./thread.php?threadid=$threadlocation&boardid=$boardlocation&sid=$session[hash]" target="_blank">$threadname</a>" |
|
Aber natürlich wird im WIW lediglich "Beitrag" angezeigt.
Da ich ja, wie gesagt, von PHP eigentlich gar keinen Plan hab, weiß ich auch nicht, wo man dort vielleicht eingreifen könnte, um die relevanten Variablen doch noch zu übergeben.
Hast Du da vielleicht eine Idee?
@Black_Magister
Die Locator-Minimap ist Bestandteil des Locator-Hacks von Viktor, welcher auf seiner Homepage zum Download angeboten wird.
Viele Grüße
Hardy
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Hardy: 12.08.2009 16:39.
|
|
12.08.2009 16:35 |
|
|
Viktor
Administrator
Zeige Viktor auf Karte
Dabei seit: 15.08.2003
Beiträge: 31.570
363 Filebase-Einträge
Alter: 66 Jahre
Herkunft: NRW wBB-Version: wBB2.3 PHP-Version: 7.4.33 MySQL-Version: 10.5.19-MariaDB Wo bist du gehostet?: eigener Server
Bewertung:
Level: 71 [?]
Erfahrungspunkte: 237.775.326
Nächster Level: 266.777.854
|
|
Hallo,
du kannst den Inhalt der Datei mal mit dem Code austauschen.
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
|
<?php
$filename = 'thread.php';
require ("./global.php");
if(isset($_REQUEST['userid'])) $userid = intval($_REQUEST['userid']);
$im = ImageCreateFromJPEG("locator/locator_mini.jpg");
$im_maxX = imagesx($im);
$im_maxY = imagesy($im);
$star = ImageCreateFromPNG('locator/mark.png');
$starX = imagesx($star);
$starY = imagesy($star);
$newY = '85';
$newX = ($im_maxX * $newY) / $im_maxY;
$starmulti = $im_maxY / $newY;
unset($starsize);
$starsize = "13" * $starmulti;
$result = $db->query("SELECT * FROM bb".$n."_wlw WHERE userid = '$userid'");
$users=$db->fetch_array($result);
imagecopyresized($im, $star, $users['x']-($starsize/2), $users['y']-($starsize/2), 0, 0, $starsize, $starsize, $starX, $starY);
$om = ImageCreate($newX, $newY);
imagecopyresized($om, $im, 0, 0, 0, 0, $newX, $newY, $im_maxX, $im_maxY);
imagePNG($om);
?>
|
|
Der Aufruf ist:
code: |
1:
2:
3:
|
<a href="./locator.php?sid=$session[hash]"><img src="locator_mini.php?userid=$posts[userid]" border="0"></a>
|
|
Versuche es so mal.
Gruß
Viktor
__________________
Ein kluger Mann widerspricht keiner Frau. Er wartet, bis sie es selbst tut.
... beim Käfer (WBB2) konnte man noch selber schrauben,
beim neuen Golf (WBB3) muß man fast schon in die Werkstatt wenn man das "Wischwasser" nachfüllen muss!
Da fast keiner mehr hier Postet gibt es ab sofort keinen Support mehr per PN.
|
|
12.08.2009 20:00 |
|
|
|
Hallo Viktor,
ich habs eingebaut aber damit gehts leider auch nicht. Das Ding lässt sich einfach nicht überlisten. Es wird weiterhin nur der "locator_mini"-Abschnitt in der wiw.php angesteuert. Der Abschnitt der thread.php wird weiter ignoriert.
Viele Grüße
Hardy
|
|
13.08.2009 19:05 |
|
|
|
|
|
|