BBKode til Prisguiden

5 innlegg i emnet

Skrevet (endret)

BBKode til Prisguiden i forumet.

Hva er dette?

Et enkelt forsøk på å kunne inkludere produkter fra Prisguiden inn i innlegg ved hjelp av en enkel BBkode. Det ideelle er å kunne ha en søkeboks etter produkter i sidebar-en og deretter kunne sette produktene inn i innlegg.

Hvorfor?

Jeg legger stadig merke til at lenker til HW.no sin Prisguide blir brukt i innlegg for å besvare spørsmål en trådstarter har. Et godt eksempel på dette er når noen spør om hva slags interne komponenter vi i forumet mener han burde oppgradere - Isteden for da å legge en lenke i svaret, bruker man en kode som dette: [prisguide]xxxxxxxx[/prisguide] for å få opp en liten boks med detaljer om produktet samt noen enkle, små bilder.

Koden?

For øyeblikket er prosjektet veldig primitivt, men det fungerer greit. Koden er lang ifra optimal, og jeg regner med at en del 'flaming' vil bli gjort :P

Du kan iallefall ta en titt på koden her.

Prisguidekoden i PHP (klikk for å vise/skjule)

<?PHP

	<?PHP

   /*

   Forfatter: Michael McMillan

   E-mail: email@michaelmcmillan.net

   Beskrivelse: Stjeler Prisguide.no innlegg og omgjør til ryddig BB-kode for ITpro.no foruminnlegg (IPB)

   Historikk:

   19/05/09: Laget regex-mønster for hver informasjonskapsel.

   20/05/09: Regex-mønster for å få ut kjøpe-lenke til første butikk

   */


   # bbcode font start

   echo '[font=arial][size=1]';


   #---------------------------------------------------------------------------#


   # $productId = Det unike id-nummeret hvert produkt har. 105918

   $productId = $_GET["id"]; 


   #---------------------------------------------------------------------------#


   # Dataloop: Strip_tags() $rawspec og output i liste

   function data(&$item, $key)

   {

	 $item = strip_tags($item);

	 echo "$item <br /> \n";

   }

   #---------------------------------------------------------------------------#


   # Prodloop: Strip_tags() $rawprod for produktnavnet og sett i starten av bbcode-quote

   function prodloop(&$item, $key)

   {

	 $item = strip_tags($item);

	 echo '[quote="';

	 echo $item;

	 echo '"]<br />';

   }

   #---------------------------------------------------------------------------#


   # Prisloop: Strip_tags() $rawpris 

   function prisloop(&$item, $key)

   {

	 $item = strip_tags($item);

	 echo $item;


   }

   #---------------------------------------------------------------------------#


   # Imgstrip: strip_tags $rawimg, men behold <img> taggen til preg_replace --> bbcode-konvertering

   function imgstrip(&$item, $key)

   {

	 $item = strip_tags($item, '<img>');


   }

   #---------------------------------------------------------------------------#


   # Send request og hent HTML-en til produktet

   $ch = curl_init('http://prisguide.itpro.no/product.php?productId='.$productId.'');

   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

   $html = curl_exec($ch);

   curl_close ($ch);


   #---------------------------------------------------------------------------#


   # Produktnavn

   preg_match_all('@<div id="product">.*?</h1>@s',$html,$rawprod);

   # Print produktittel

   array_walk_recursive($rawprod, 'prodloop');


   #---------------------------------------------------------------------------#


   # Spesifikasjonslabels

   preg_match_all('@<span class="label">.*?</div>@s',$html,$rawspec);

   # Print spesifikasjoner

   array_walk_recursive($rawspec, 'data');


   #---------------------------------------------------------------------------#


   # Produktbilder

   preg_match_all('@<div id="productImageInner">.*?</div>@s',$html,$rawimg);


   # Gjør om $rawimg til bbcode med regex

   array_walk_recursive($rawimg, 'imgstrip');

   $patterns[0] = '/<img src="/';

   $patterns[1] = '/\/>/';

   $patterns[2] = '/alt="(.*?)"/';


   $replacements[2] = '[img]';

   $replacements[1] = '[/img]';

   $replacements[0] = '';


   $img = $rawimg[0][0];

   $img = preg_replace($patterns, $replacements, $img);

   $img = preg_replace('/!/', '', $img);

   $img = preg_replace('/"/', '', $img);


   echo "$img";

   echo "<br />";

   #---------------------------------------------------------------------------#


   # Øverste prisen for produktet, mao. den billigste

   preg_match_all('@<td class="price">.*?</td>@s',$html,$rawpris);

   $pris = strip_tags($rawpris[0][0]);

   # Øverste butikken som selger produktet til $rawpris

   preg_match_all('@title="Til .*?">@s',$html,$rawbutikk);


   $mønster[0] = '/title="Til/';

   $mønster[1] = '/">/';


   $erstatt[1] = '';

   $erstatt[0] = '';


   $butikknavn = preg_replace($mønster, $erstatt, $rawbutikk[0][0]);


   # Kjøp-lenke

   preg_match_all('@<td class="buyButton">.*?</td>@s',$html,$rawkjøp);

   $kjøphtml = strip_tags($rawkjøp[0][0], '<a>');


   $kjøpmønster[0] = '/" title="Til butikken">/';

   $kjøpmønster[1] = '/<a href="/';

   $kjøpmønster[2] = '/Kj&oslash;p/';


   $kjøperstatt[1] = ']';

   $kjøperstatt[0] = '[url=http://prisguide.itpro.no/';

   $kjøperstatt[2] = 'Kjøp[/url]';


   $kjøp = preg_replace($kjøpmønster, $kjøperstatt, $kjøphtml);


   # Print ut alt

   echo "$kjøp hos $butikknavn for $pris <br />";


   #---------------------------------------------------------------------------#


   # En "les mer ..." lenke tilbake til Prisguiden

   echo 'Les mer om '.strip_tags($rawprod[0][0]).' hos [url=http://prisguide.itpro.no/product.php?productId='.$productId.']prisguide.itpro.no.[/url]';



   #---------------------------------------------------------------------------#

   echo ' <br />[/font][/size][/quote]';

   ?>

	?>

I innlegget under kan man se hvordan dette systemet fungerer. Quote-en bærer på ett bilde, spesifikasjonene som er tilgjengelige og en lenke til butikken inkl. pris. Absolutt alle produktene i Prisguiden skal fungere, ta kontakt hvis du støter på noe som tilsier det motsatte ;)

Endret av Big-Mama
0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet (endret)

Samsung SyncMaster 2443BW (klikk for å vise/skjule)

Skjermtype: LCD

Størrelse: 24 tommer

TCO-standard: TCO 03

HDCP-støtte:

Maksoppløsning: 1920 x 1200 punkter

Responstid: 5 ms

Lysstyrke: 300 cd/m2

Kontrast: 1000 :1

Tilkoblinger: D-Sub/VGA, DVI-D

Monitors_2443BW_large.175x110.jpg

Kjøp hos Papyrus for 2361,–

Les mer om Samsung SyncMaster 2443BW hos prisguide.itpro.no.

Endret av Big-Mama
0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

konge! :)

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Hvordan er utviklingen på dette da Big-Mama? :) :)

Dette ser veldig spennende ut, og tror det blir veldig bra! :)

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Takk takk :)

Jeg kan ikke utvikle det stort mer uten å vite hva mer eventuelt brukerene har lyst til å se inne i spoileren, så det er bare å komme med forslag ;)

Alt er mulig, så ikke nøl med å fyre løs kritikk.

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!


Start en konto

Logg inn

Har du allerede en konto? Logg inn her.


Logg inn nå

  • Hvem er aktive   0 medlemmer

    Ingen innloggede medlemmer aktive