Interface tagien ohjelmointi

Omia Interface tageja voi ohjelmoida millä tahansa Internetissä käytetyllä ohjelmointikielellä, esim. PHP:lla, ASP:lla tai Rubylla. Oman tagin ohjelmoimiseksi tarvitset erillisen palvelimen tai webhotellin, jossa on tuki ohjelmointikielelle sekä tietokannalle mikäli toteutat tietokantapohjaisen tagin. Oman Interface-tagin lähdekoodeja ei siis tallenneta MyCashflow palveluun eikä tageilla ole suoraa pääsyä verkkokaupan tietokantaan.

Toimintaperiaate on yksinkertainen.

  1. Lähetä kutsu {HttpPost} tai {HttpGet} tagilla omalle palvelimelle

Esimerkiksi {HttpGet(url:'http://www.yritys.fi/tiedosto.php',action:'showComments')} lähettää HTTP protokollan mukaisen GET kutsun osoitteeseen http://www.yritys.fi/tiedosto.php?action=showComments. {HttpPost} tagi toimii vastaavalla tavalla, mutta lähettää parametrit POST-kutsuna.

Voit lisätä tagiin rajattomasti attribuutteja, jotka kaikki välitetään url-attribuuttina antamaasi osoitteeseen. Lisäksi MyCashflow lisää jotain attribuutteja mukaan. Esimerkiksi jos tagia käytetään tuotekortilla, niin mukaan liitetään automaattisesti parametrit ProductID=id, CategoryID=id ja MainCategoryID=id. Lopullinen palvelimellesi lähtevä kutsu on siten:

http://www.yritys.fi/tiedosto.php?action=showComments&ProductID=id&CategoryID=id&MainCategoryID=id

  1. Ohjelmoi http://www.yritys.fi/tiedosto.php osoite palauttamaan standardia HTML-koodia, joka näkyy verkkokaupassa

Oman PHP-tiedoston, tai mitä tahansa kieltä käytätkin, toiminnalle ei ole muita vaatimuksia, kuin että sen täytyy palauttaa HTML-koodia.

Case esimerkki: Kommentoinnin toteuttaminen

Seuraavassa case esimerkissä käydään läpi kommentointi-ominaisuuden toteuttaminen verkkokauppaan käyttäen {HttpGet} tagia. Esimerkissä käydään läpi ominaisuuden rakenne ja toimintaperiaate, mutta varsinaiseen PHP-koodiin ei syvennytä kovinkaan tarkasti. Case esimerkki auttaa hahmottamaan tagien hyödyntämistä käytännössä eikä tarkoitus ole tarjota valmista lähdekoodia.

Esimerkissä www.yritys.fi -palvelimella sijaitsee kaksi tiedostoa, joista toinen, kommentoi.php, hoitaa kommentointilomakkeen näyttämisen ja tallentamisen tietokantaan ja toinen, kommentit.php, tulostaa kommentit.

Kommenttien lisääminen tietokantaan

product.html sivupohjaan lisätään tagi:

{HttpGet(url:'http://www.yritys.fi/kommentoi.php')}

Kun vierailija lataa verkkokaupan tuotesivun haetaan tagin tilalle HTML-koodi osoitteesta:

http://www.yritys.fi/kommentoi.php?ProductID=id&CategoryID=id&MainCategoryID=id

kommentoi.php:

<?php
include("config.php");
if( isset($_POST["ProductID"]) && isset($_POST["Comment"]) && !empty($_POST["Comment"]) ) {
     /* Kommentin tallennus tietokantaan */
     // Tallennuksen jälkeen ohjataan takaisin tuotesivulle
     header("location:http://yritys.mycashflow.fi/product/".$_POST["ProductID"]."/");
}elseif( isset($_GET["ProductID"]) ){
     /* Näytetään kommentointilomake */
     ?>
     <form action="http://www.yritys.fi/kommentoi.php" method="post">
          <input type="hidden" name="ProductID" value="<?= $_GET["ProductID"] ?>" class="Hidden" />
          <div class="FormItem">
               <label for="Comment">Kommentti</label>
               <textarea name="Comment" id="Comment" rows="10" cols="50"></textarea>
          </div>
          <div class="FormItem SubmitItem">
               <input type="submit" name="AddComment" value="Lisää kommentti" />
          </div>
     </form>
     <?php
}
?>

kommentoi.php tiedosto palauttaa <form> elementin kommentin lisäämiseksi, tai tallentaa kommentin tietokantaan ja ohjaa kävijän takaisin tuotesivulle. 

Kommenttien näyttäminen verkkokaupassa 

product.html sivupohjaan lisätään tagi:

{HttpGet(url:'http://www.yritys.fi/kommentit.php')}

Kun vierailija lataa verkkokaupan tuotesivun haetaan tagin tilalle HTML-koodi osoitteesta:

http://www.yritys.fi/kommentit.php?ProductID=id&CategoryID=id&MainCategoryID=id

kommentit.php:

<?php
include("config.php");
if( isset($_GET["ProductID"]) ) {
     /* Haetaan kommentit tietokannasta */
     $sql = "SELECT * FROM comments WHERE productid = '".mysql_real_escape_string($_GET["ProductID"])."' ORDER BY date ASC";
     $result = mysql_query($sql);
     if($result && mysql_num_rows($result) > 0) {
          while($CommentRow = mysql_fetch_object($result)) {
               ?>
               <div class="Comment">
                    <p><?= $CommentRow->Comment ?></p>
               </div>
               <?php
          }
     }
}
?>

kommentit.php tiedosto tarkistaa, että GET-parametri ProductID on annettu ja etsii sen perusteella kommentit tietokannasta. Mikäli kommentteja löytyy ne tulostetaan ja näytetään verkkokaupan tuotesivulla {HttpGet} tagin paikalla.

Lisää tähän sivuun liittyviä ohjeita: