[BBCode] Amazon-Link mit Informationen einfügen

Du suchst einen bestimmten Mod, weißt aber nicht genau wo bzw. ob er überhaupt existiert? Wenn dir dieser Artikel nicht weiterhilft, kannst du hier den von dir gewünschten/gesuchten Mod beschreiben ...
Falls ein Mod-Autor eine der Anfragen hier aufnimmt, um einen neuen Mod zu entwickeln, geht's in [3.0.x] Mods in Entwicklung weiter.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
4seven
Mitglied
Beiträge: 5869
Registriert: 21.04.2007 06:18

Beitrag von 4seven »

Hallo FatFreddy,
ich hab übrigens fast alle U-Comix gelesen *g

Sieht doch schonmal richtig gut aus :grin: Klasse hinbekommen :wink:
Das jetzt noch ohne iframe, also xhtml 1.0 strict valide und es wäre perfekt.

Code-Anregung hier:

http://www.phpbb.de/viewtopic.php?p=963125#963125

http://www.phpbb.de/viewtopic.php?p=964085#964085

Nochmal @Helmut

Hat noch niemand versucht den "Verdiener-Code" des Mods zu explantieren? Wundert mich, ehrlich gesagt.

lg
4seven
Benutzeravatar
FatFreddy
Mitglied
Beiträge: 1937
Registriert: 25.07.2004 15:52
Kontaktdaten:

Beitrag von FatFreddy »

4seven hat geschrieben: Sieht doch schonmal richtig gut aus :grin: Klasse hinbekommen :wink:
Das jetzt noch ohne iframe, also xhtml 1.0 strict valide und es wäre perfekt.

Code-Anregung hier:

http://www.phpbb.de/viewtopic.php?p=963125#963125

http://www.phpbb.de/viewtopic.php?p=964085#964085
Danke für die Blumen. ;)

Die Codeanregungen helfen mir leider nicht viel weiter. Ihr setzt auf die Angebote des Partnerprogramms und meinereiner greift die Daten über AWS, die Amazon-API ab. So stehen mir deutlich mehr Produktdetails zur Verfügung.Mit meinem Ansatz greife ich nicht bei jeder Produkteinblendung x-Mal auf die Amazonserver zu, sondern pro Produkt max. einmal pro Tag. Wer die manchmal langen Antwortzeiten der Amazonserver kennt, wird das zu schätzen wissen.

Der Iframe ist nur eine Notlösung, bis ich den BBCode fest eingebaut bekomme (habe erst eine Woche Erfahrung mit dem phpBB3-Code) und somit die aufgearbeiteten XML-Daten direkt in die textarea des Posts einfügen kann.

Ob es valide wird, weiß ich nicht, ist mir ehrlich gesagt auch wurscht. Es muß nur schnell und zuverlässig funktionieren. ;)


FatFreddy
Watch out where the huskies go, don't you eat the yellow snow...
Mehr dazu im Reiseforum InselTalk.de.
Tupperdosensucher schauen ins Geocachingforum.
4seven
Mitglied
Beiträge: 5869
Registriert: 21.04.2007 06:18

Beitrag von 4seven »


Verstehe, anderer Ansatz, ressourcenschonender und besser,
Gibt es irgendwo Anleitungen für den Zugriff auf die API?

lg
4seven
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Beitrag von Helmut »

Hallo 4seven,

der Amazon-Mod von buecherseite.de arbeitet vermutlich auch mit der Amazon-API, da bei dem Mod die Seite von buecherseite.de aufgerufen wird. Hier mal die amazon_into_editor.php (nur für phpBB2 !)

Code: Alles auswählen

[....]

// Please insert here your amazon associates id
// if you have Amazon Associates Id's from different Amazon lands (amazon.com, amazon.fr, etc..)
// plese insert here all ID's you have. by example: $associates_id_from[US] = 'your-partner-id';
$associates_id_from[US] = ''; // please leave empty, if you don't have an id from amazon.com
$associates_id_from[DE] = ''; // please leave empty, if you don't have an id from amazon.de
$associates_id_from[FR] = ''; // please leave empty, if you don't have an id from amazon.fr
$associates_id_from[UK] = ''; // please leave empty, if you don't have an id from amazon.co.uk
$associates_id_from[JP] = ''; // please leave empty, if you don't have an id from amazon.co.jp
$associates_id_from[CA] = ''; // please leave empty, if you don't have an id from amazon.ca


// Please insert here your (Amazon-) country, from where your amazon partner id is from
// if you have Id's from more than one country, please chose a preferred one.
// possible: US, DE, FR, UK, CA, or JP
$land = 'US';

// Your background image:
$background_img = '';

// Your background color:
$background_col = '#FFFFFF';


// from here, no more changes are needed
$u_land = array( 'US'=>'com', 'DE'=>'de', 'JP'=>'co.jp', 'UK'=>'co.uk', 'FR'=>'fr', 'CA'=>'ca');
$partner = array( 'US'=>'newbooks-20', 'DE'=>'s0b-21', 'UK'=>'heremorebooki-21', 'JP'=>'', 'FR'=>'photoinfo-21', 'CA'=>'' );



if (isset($HTTP_GET_VARS['land'])) { $land = substr($HTTP_GET_VARS['land'], 0, 2); }
$associates_id  = $associates_id_from[$land];
if ( $associates_id == '' ) { $associates_id  = $partner[$land]; }
$ama_url = 'http://www.amazon.' . $u_land[$land] . '/exec/obidos/redirect?tag=' . $associates_id ;
$show_land = 0;
foreach ($associates_id_from as $test) { if ($test!='') { $show_land++; } }  // if you want to let the user chose the country in every case, please replace this line by: $show_land = 2 ;


// if you translate it into french or japanese , please tell me, cause there are a few other phrases to translate: http://www.superphotos.info/forum/viewforum.php?f=4
$lang['L_AMAZONIA_formular1'] = 'Book Code Generator';
$lang['L_AMAZONIA_formular2'] = 'Welcome to the books, cd or other amazon products code generator.<br>You will get here the Code for easy creating a link.<br><font size="1">All you have to do is inserting the ISBN or Asin number into the form.</font>';
$lang['L_AMAZONIA_formular3'] = 'Asin or ISBN number';
$lang['L_AMAZONIA_formular4'] = 'If you don't know the products Asin oder ISBN number, please take a look for it at the products detail page at <a href="'.$ama_url.'" target="_blank" title="Please click here for searching your product asin at Amazon. (You will find it at the bottom of the products detail page)"><strong>AMAZON</strong></a> (please simply copy & paste it into the field).';
$lang['L_AMAZONIA_formular15'] = 'Create Code';
$lang['L_AMAZONIA_Asin_not_found_search'] = 'Sorry - We got no data<br>Please check your asin or isbn Number at <a href="'.$ama_url.'" target="_blank" title="Please click here for searching your product asin at Amazon.   You will find it at the bottom of the products detail page.">Amazon</a>.';
$lang['L_AMAZONIA_window_close'] = 'close window';
$lang['L_AMAZONIA_server_error'] = 'There seems to be a server problem, please try again later.';
$lang['L_AMAZONIA_amazon_land'] = '';

if($land == 'DE') {
	$lang['L_AMAZONIA_formular1'] = 'Bücher Code Generator';
	$lang['L_AMAZONIA_formular2'] = 'Willkommen beim Code Generator f&uuml;r Hinweise auf<br>B&uuml;cher, CDs oder andere Amazon Produkte.<br><font size="1">Hierzu brauchen Sie lediglich die ISBN oder Asin Nummer einzugeben.</font>';
	$lang['L_AMAZONIA_formular3'] = 'Asin oder ISBN Nummer';
	$lang['L_AMAZONIA_formular4'] = 'Falls Sie die Asin oder ISBN Nummer nicht kennen, so kopieren Sie diese einfach von der Detail Seite, des jeweiligen <a href="'.$ama_url.'" target="_blank" title="Bitte hier klicken, um bei Amazon nach der Asin oder ISBN Nummer suchen."><strong>Amazon Produktes</strong></a>.';
	$lang['L_AMAZONIA_formular15'] = 'Code erzeugen';
	$lang['L_AMAZONIA_Asin_not_found_search'] = 'Sorry - Zu Ihrer eingegebenen Asin konnten bei Amazon keine Daten gefunden werden. Bitte überprüfen Sie bei <a href="'.$ama_url.'" target="_blank" title="Bitte hier klicken, um bei Amazon nach der Asin oder ISBN Nummer suchen.">Amazon</a>, ob Ihre Asin oder ISBN Nummer korrekt ist, und bei Amazon angeboten wird.';
	$lang['L_AMAZONIA_window_close'] = 'Fenster schlie&szlig;en';
	$lang['L_AMAZONIA_server_error'] = 'Ein Server Fehler ist aufgetreten. Bitte probieren Sie es später nocheinmal';
	$lang['L_AMAZONIA_amazon_land'] = '';
}



$Asin = trim(str_replace("-","",$HTTP_GET_VARS['Asin'])) ;
// zum testen:if ($Asin=="") { $Asin = '3933556066' ; }   // 3548253741   B0000D89UV
if ( !(preg_match('/^[xA-Z0-9]{10,13}$/i', $Asin) ) ) {
		if ($Asin!='') { $lang['L_AMAZONIA_formular3'] = $lang['L_AMAZONIA_Asin_not_found_search'].'<br><br>'.$lang['L_AMAZONIA_formular3']; $Asin = '' ; } else { $Asin = '' ; }
} else {
	// wenn asin vorhanden, dann file holen
	$data = file("http://www.buechersuchseite.de/amazon_code.php?Asin=$Asin&land=$land&partnerId=$associates_id&code=phpbb");
	if ($data=="") { echo "<br><br><center>" . $lang['L_AMAZONIA_server_error'] . "</center>"; exit; }
	$script_spezial = "function handleSpezial() {
	var text = codepart ;
	if (opener.document.forms['post'].message.createTextRange && opener.document.forms['post'].message.caretPos) {
		var caretPos = opener.document.forms['post'].message.caretPos;
		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
		opener.document.forms['post'].message.focus();
		window.close();
	} else {
	opener.document.forms['post'].message.value  += text;
	opener.document.forms['post'].message.focus();
	window.close();
	}
}
";
	
	$suchen = true ;
	for($x=0;$x<count($data);$x++){
			if((preg_match('/<body/i',$data[$x]))&&($suchen)) {
			echo '<body bgcolor="'.$background_col.'" background="'.$background_img.'" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">';
			$suchen = false ;
		} else {
			if((preg_match('/function handleSpezial/i',$data[$x]))&&($suchen)) {
				echo $script_spezial ;
			} else {
				echo $data[$x];
			}
		}
	}
	exit; // fertig
}



?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title><? echo $lang['L_AMAZONIA_formular1'] ; ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="<? echo $background_col ; ?>" background="<? echo $background_img ; ?>" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="100%" height="100%" border="0" cellpadding="7" cellspacing="0">
  <tr>
    <td align="center" valign="middle">
	 <form name="form1" method="GET" action="amazon_into_editor.php">
      <table width="424" border="1" cellpadding="0" cellspacing="0" bgcolor="#F8F8F8" style="border-style:groove">
        <tr>
          <td>
		  <table width="420" border="0" cellspacing="0" cellpadding="6">
        <tr>
          <td><div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><? echo $lang['L_AMAZONIA_formular2'] ; ?></font><br><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><strong><br>
            </strong>
                 </font>
              <table border="0" cellspacing="0" cellpadding="0">
                <tr>
                  <td align="center" valign="bottom"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
                    <strong><? echo $lang['L_AMAZONIA_formular3'] ; ?></strong><br>
                    <input name="Asin" type="text" value="<? echo $Asin; ?>" size="24">
                  </font></td>
				  
<? if ($show_land>1) { ?>
				  
                  <td align="center" valign="bottom"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><strong>&nbsp;<? echo $lang['L_AMAZONIA_amazon_land'] ; ?></strong><br>
                        &nbsp;&nbsp;
                        <select name="land" id="land">
                          <option value="<? echo $land; ?>">Amazon <? echo $land; ?></option>
                          <option value="DE">Amazon DE</option>
                          <option value="FR">Amazon FR</option>
                          <option value="UK">Amazon UK</option>
                          <option value="US">Amazon US</option>
                          <option value="CA">Amazon CA</option>
                          <option value="JP">Amazon JP</option>
                        </select>
                  </font></td>
				  
<? } ?>				  
				  
                </tr>
              </table>
              <font size="1" face="Verdana, Arial, Helvetica, sans-serif">                  <br>
                  <? echo $lang['L_AMAZONIA_formular4'] ; ?></font></div></td>
          </tr>
       <tr>
          <td align="center" valign="middle">
		  <input type="submit" name="Submit" value="<? echo $lang['L_AMAZONIA_formular15'] ; ?>">
</td>
          </tr>
      </table></td>
        </tr>
      </table>
      </form>
    </td>
  </tr>
    <tr>
    <td height="22" align="center" valign="middle">
	<font size="1" face="Verdana, Arial"><a href="javascript:window.close()" title="Bitte hier klicken, um dieses Fenster zu schließen"><? echo $lang['L_AMAZONIA_window_close'] ; ?></a></font>
	</td>
  </tr>
</table>
</body>
</html>
Hieran ist deutlich zu sehen, dass die Daten nicht im Mod generiert werden, sondern bei bucherseite.de und ähnlich wie das Javascript von Amazon nur die fertigen Daten übergeben werden.

Code: Alles auswählen

   // wenn asin vorhanden, dann file holen
   $data = file("http://www.buechersuchseite.de/amazon_code.php?Asin=$Asin&land=$land&partnerId=$associates_id&code=phpbb");
Dann wird noch in die templates/subSilver/posting_body.tpl das hier eingetragen

Code: Alles auswählen

<span  class="nav"><a href="amazon_into_editor.php" onclick="window.open('amazon_into_editor.php', '_phpbbsmilies', 'HEIGHT=520,resizable=yes,scrollbars=yes,WIDTH=640');return false;" target="_phpbbamazon" class="nav" title="Füge einen Link zu einem Buch von Amazon mit dem Coverbild in deinen Beitrag ein.">Buchhinweis einfügen</a></span>
Das ist parktisch der ganze Mod, er besteht nur aus der einen php und dem Eintrag in die posting_body.tpl.

Hier mal der Link zu Amazon Web Services, dort ist es irgendwo beschrieben. Eine Version von 2006 habe ich noch hier bei mir, die könnte ich dir zukommen lassen.


@FatFreddy
Ich finde deinen Mod echt super, das ist fast das was ich gesucht habe. Da läst sich bestimmt auch das Partnerprogramm als BBCode einbauen, damit auch die User in den Beiträgen Bücher nennen können. Ich wollte den Mod eigentlich auch als Literaturverzeichnis für meine neue Homepage nehmen. Wenn ich da nichts passendes finde, dann mache ich es auf die klassische Weise und lade mir die Daten und Bilder von Amazon runter und trage sie in eine Datenbank ein bzw. schreibe sie fest in die Datei.

Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Benutzeravatar
FatFreddy
Mitglied
Beiträge: 1937
Registriert: 25.07.2004 15:52
Kontaktdaten:

Beitrag von FatFreddy »

Helmut hat geschrieben:der Amazon-Mod von buecherseite.de arbeitet vermutlich auch mit der Amazon-API,...
Jepp, richtig erkannt.

Er geht prinzipiell den gleichen Weg wie ich.
Er greift per API auf die Amazondatenbank zu, selektiert das Benötigte und schiebt es per Interface an seine Webseite bzw. die Plugins, die er anderen zur Verfügung stellt.


Helmut hat geschrieben: Da läst sich bestimmt auch das Partnerprogramm als BBCode einbauen, damit auch die User in den Beiträgen Bücher nennen können. Ich wollte den Mod eigentlich auch als Literaturverzeichnis für meine neue Homepage nehmen. Wenn ich da nichts passendes finde, dann mache ich es auf die klassische Weise und lade mir die Daten und Bilder von Amazon runter und trage sie in eine Datenbank ein bzw. schreibe sie fest in die Datei.
Unterschiedliche Partner-IDs mit zu übergeben ist kein großes Ding. Das läßt sich auch mit der jetzigen BBcode-Lösung machen.

Als Literaturverzeichnis für meine Reiseseite benutze ich prinzipiell das gleiche Script mit einem anderen Frontend (Beispiel). Nur die ASINs werden in der DB gespeichert, alles andere läuft über die API. Amazon verbietet im übrigen sogar die langfristige Speicherung der Daten, damit die Aktualität der Preise gewährleistet ist.


4seven hat geschrieben: Gibt es irgendwo Anleitungen für den Zugriff auf die API?
Die API ist bestens dokumentiert. Allerdings wird man von der Fülle der Möglichkeiten manchmal erschlagen. Die komplette Doku findest Du hier.

Gruß

FatFreddy
Watch out where the huskies go, don't you eat the yellow snow...
Mehr dazu im Reiseforum InselTalk.de.
Tupperdosensucher schauen ins Geocachingforum.
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Beitrag von Helmut »

Hallo FatFreddy,

die jetzige Lösung mit dem BBCodes und der Übergabe der Partner-ID läuft ja auch nicht schlecht, was mir dabei aber nicht gefällt ist die Tatsache dass ich da keinen wirklichen Einfluss auf das habe was im Fenster gezeigt wird. Außerdem sind die Ladezeiten für dieses Skript mit bis zu 2 Sekunden schon lange. Deine Lösung gefällt mir da ganz gut weil ich da praktisch selber bestimmen kann, was und wie es gezeigt.

Bei der Datenbankorientierten Lösung hätte ich mir es so vorgestellt, dass die Daten alle in der Datenbank sind und ein oder mehrmals täglich z.B. über einen Cronjob eine php aufgerufen wird, welche die Daten aktualisiert. Damit ist es keine längerfristige Datenspeicherung weil sie ja immer mit der neusten Version überschrieben werden. Der weitere Vorteil wäre dann auch, dass man praktisch ohne Javaskript auskommen würde und auch mit xhtml 1.0 valide keine Probleme hätte.

Dein Beispiel gefällt mir recht gut, so in der Art hatte ich es mir auch für mein Literaturverzeichnis vorgestellt.

Gruß Helmut :wink:
Ich bin nicht ganz dicht.... na und.
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Beitrag von Helmut »

Hallo FatFreddy,
FatFreddy hat geschrieben:Bin gerade frisch auf phpBB3 umgestiegen und vermisse meine Amazoninfos in den Beiträgen. Ich hab mit jetzt erst einmal für phpBB3 eine provisorische Lösung gebastelt, um wieder Amazondaten in die Beiträge zu bekommen.

Ein neuer BBCode, der die ASIN an ein externes Skript übergibt und die Daten dann innerhalb des Beitrags in einem iframe darstellt.
Um nicht jedesmal auf den Amazonserver warten zu müssen, werden die abgefragten Produkte für einen Tag im Cache gehalten.

Als Mod ist das Ganze sicher noch nicht geeignet :oops: , aber für meine Zwecke reichts vorläufig.

Beispiel

Wenn Interesse besteht, kann man sich ja mal an eine "saubere" Lösung setzen.

FatFreddy
Also ich hätte auf alle Fälle Interesse an deiner Amazon Lösung, die scheint mir wirklich gut zu sein. Hast du schon eine Idee ob und wann du den Mod veröffentlichen willst?

Gruß Helmut :wink:
Ich bin nicht ganz dicht.... na und.
Benutzeravatar
FatFreddy
Mitglied
Beiträge: 1937
Registriert: 25.07.2004 15:52
Kontaktdaten:

Beitrag von FatFreddy »

Hallo Helmut,
Helmut hat geschrieben: Also ich hätte auf alle Fälle Interesse an deiner Amazon Lösung, die scheint mir wirklich gut zu sein. Hast du schon eine Idee ob und wann du den Mod veröffentlichen willst?
Wie gesagt, reicht mir momentan mein funktionierendes Provisorium :oops: , aber sobald das neue Forum fertig ist (wovon ich momentan leider noch weit entfernt bin), werde ich mich mal dransetzen und den Code zumindest so aufräumen, daß man ihn vorzeigen kann.

FatFreddy
Watch out where the huskies go, don't you eat the yellow snow...
Mehr dazu im Reiseforum InselTalk.de.
Tupperdosensucher schauen ins Geocachingforum.
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Beitrag von Helmut »

Hallo FatFreddy,

alles klar, meine neue Homepage mit Forum ist auch noch nicht fertig. Ich wollte eigentlich nach Weihnachten 2007 fertig sein, aber es ergaben sich einige Probleme, welche erst gelöst werden mussten.

Gruß Helmut :wink:
Ich bin nicht ganz dicht.... na und.
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Beitrag von Helmut »

Hallo FatFreddy,

bist du schon etwas weiter gekommen mit dem Mod?

Gruß Helmut :wink:
Ich bin nicht ganz dicht.... na und.
Gesperrt

Zurück zu „[3.0.x] Mod Suche/Anfragen“