BBC MOD mit Umrechenfunktion - wie zusammenbringen?

Started by nimue, June 03, 2007, 01:15:38 AM

Previous topic - Next topic

nimue

Guten Morgen,

Ich habe mir vor einiger Zeit einen kleinen Amazon-Mod gebastelt:

Man gibt durch meinen Mod an [amazon]3453810643[/quote] und erhält einen Direktlink zum entsprechenden Buch (DVD etc.) bei Amazon. Nun wurden die ISBNs aber von 10stellig auf 13stellig umstrukturiert, wobei Amazon leider keine interne Umrechnung macht. Dh ich brauche einen Link, der grundsätzlich die ISBN10 beinhaltet.

Wenn nun jemand aber eine ISBN13 in meinen BBC eingibt, soll die Nummer vor der Verlinkung geprüft und evtl. umgerechnet werden.

Also habe ich ein paar Funktionen geschrieben, die die eingegebene ISBN prüft und ggf. umwandelt, Striche entfernt etc. Mein Problem dabei ist, dass ich nicht weiß, wo genau ich diese Funktion einbauen muss. Direkt in meiner amazon_tag.xml? Und wie wird der Teil für den Button mit der Funktion verknüpft.

Als Codebeispiel (Subs.php):

array( 'tag' => 'amazon-isbn',
                                'type' => 'unparsed_content',
                                'content' => '<a href="http://www.amazon.de/exec/obidos/ASIN/$1/nimuesbuecher-21" target="_blank"><img src="http://images.amazon.com/images/P/$1.03._SCMZZZZZZZ_.jpg"><img src="http://www.literaturschock.de/literaturforum/amazonklick.gif"></a>',
                        ),


Und genau da müsste der Parameter $1 geprüft werden (nur ist es $1 bei allen BBCs). Außerdem möchte ich als zweiten Parameter die Partnerschafts-Id (in obigem Fall nimuesbuecher-21) mit übergeben können (dann kann das jeder für sich selbst anpassen, sobald ich den MOD freigeben kann). Aber in welche .php Datei muss ich die Funktionen packen? Und wie geschieht die Verknüpfung mit dem BBC?

Vielleicht kann mir auch jemand einen ähnlichen MOD empfehlen, wo ich einfach auch mal nachsehen könnte (Learning by Doing).

Ich hoffe, ich konnte das jetzt einigermaßen vernünftig erklären.

Liebe Grüße
nimue

Nicolas89

Wie ist den die Umrechnungsformel (?) für diese ISBN ?

nimue

Hallo,

welche meinst Du? Ich habe mehrere Funktionen erstellt (einmal ISBN10 in ISBN13 und umgekehrt, dann Entfernen von STrichen etc.). Aber das ist eigentlich nicht so wirklich wichtig für meine Frage, oder? *grübel*

Grüße
Susanne

ディン1031

Quote from: Nicolas89 on June 03, 2007, 12:30:18 PM
Wie ist den die Umrechnungsformel (?) für diese ISBN ?
Das sind umrechnungen von isbn Alt zu Neu - Neu zu Alt ;) normal ganz simple sowas, ich glaub sowas gibt es auch fix und fertig ;).

function old2new_isbn($isbn) {
if(empty($isbn))
return false;

//First remove the isbn,- and spaces and trim it :P
$isbn = trim(str_replace(array("-", "isbn", " "),"",strtolower($isbn)));

if(strlen($isbn) != 10 && strlen($isbn) != 13)
return false;

if(strlen($isbn) == 13)
return $isbn;
else {
//Gernerate the new one with the standard 978 insert ;D
$isbn = '978'.substr($isbn, 0, 9);

    for($l = 0; $l <= 11; $l++) {
$c = $c == 3 ? 1 : 3;
         $m = $c * substr($isbn, $l, 1);
         $sum = $sum + $m;
}
      //Hum i don't know why... but the skript want it step by step <<
      $checksumme = floor($sum / 10) * 10;
      $checksumme = $sum - $checksumme;
      $checksumme = 10 - $checksumme;

      //Okay the Checksum is 10-10 :P
      if($checksumme == 10)
      $checksumme = 0;

return $isbn.$checksumme;
}
}

function converted2old_isbn($isbn) {
if(empty($isbn))
return false;

//First remove the isbn,- and spaces and trim it :P
$isbn = trim(str_replace(array("-", "isbn", " "),"",strtolower($isbn)));

if(strlen($isbn) != 10 && strlen($isbn) != 13)
return false;

if(strlen($isbn) == 10)
return $isbn;
elseif(substr($isbn,0,3) == '978') {
$isbn = substr($isbn, 3, 9);
    $x = 10;
    $checksum = 0;
    for($l=0; $l <= 8; $l++) {
      $checksum = $checksum + substr($isbn,$l,1) * $x;
      $x--;
      }
$checksumme = ceil($checksum / 11) * 11;
$checksumme = $checksumme - $checksum;
$checksumme = $checksumme == 10 ? 'X' : $checksumme;
return $isbn.$checksumme;
}
else
return $isbn;
}


So nun zum eigentlichen Thema:

Weitere Parameter:


array( 'tag' => 'amazon-isbn',
                                'type' => 'unparsed_content',
'parameters' => array(
'pid' => array('optional' => true),
),
                                'content' => '<a href="http://www.amazon.de/exec/obidos/ASIN/$1/{pid}" target="_blank"><img src="http://images.amazon.com/images/P/$1.03._SCMZZZZZZZ_.jpg"><img src="http://www.literaturschock.de/literaturforum/amazonklick.gif"></a>',
                        ),


Mit diesen wöre das dann [amazon-isbn pid=irgendeinname] wenn ich mich da jetzt nicht vertue XD.

Hmmm um das $1 voher zu ändern oder umzustellen müstest du mal schauen wie das in den Tags mit dem 'validate' => ... geht.

Schau die da einfach an wie der code tag erstellt wird, duch das validate ist es möglich ganz function zu nutzen und einzuladen.

Gruß
DIN1031
Support only via MOD Thread! NO PM Support!
My Forum: ayu][kult Forum
My Mods: My Small Mod Collection
My Parser: DIN1031's ModParser
Current Info: More away the next days, because i've to much work to do :x

nimue

Hallo,

Quote from: ディン1031 on June 04, 2007, 04:20:19 AMDas sind umrechnungen von isbn Alt zu Neu - Neu zu Alt ;) normal ganz simple sowas, ich glaub sowas gibt es auch fix und fertig ;).

In etwa so habe ich das auch gelöst (nur noch ein paar nützliche Dinge mehr, die allerdings nicht für den MOD, sondern für meine Webseite benötigt werden). Ich hab' gar nicht lange gesucht nach einer fertigen Funktion (weils halt eher simpel war).



Quote from: ディン1031 on June 04, 2007, 04:20:19 AMHmmm um das $1 voher zu ändern oder umzustellen müstest du mal schauen wie das in den Tags mit dem 'validate' => ... geht.

Schau die da einfach an wie der code tag erstellt wird, duch das validate ist es möglich ganz function zu nutzen und einzuladen.

vielen Dank für die Tipps! Ich werde das heute Abend gleich mal ausprobieren :-)

Liebe Grüße
Susanne

Advertisement: