Anleitung: Produktbeschreibung für Kunden

    • Offizieller Beitrag

    In Bezug auf den Beitrag von Michael O. Produktbeschreibung für Kunden biete ich euch hier ein Script und die entsprechende Anleitung wie man die Produkttabelle im Kundenbereich um ein Feld erweitert damit der Kunde eine benutzerdefinitierte Beschreibung hinzufügen kann um sein Produkt besser identifizieren zu können.


    Das Script wird kostenlos bereitgestellt, ein weiterverkauf des Scriptes ist nicht gestattet. Veröffentlichung des Scriptes auf anderen Seiten sind nur mit einem Quellverweis mit Link gestattet. Das Script wird so wie es ist angeboten, es gibt keinen kostenlosen Support und es wird auch keine Haftung übernommen. Getestet wurde es mit WHMCS 7.4 (sollte aber auch auf 7.0-7.3 laufen) und dem Six Template, hierauf wird sich auch die Anleitung beziehen, bei einem abweichendem Template, oder WHMCS Version, müsst Ihr selbst schauen wie die Anpassungen umzusetzen sind.


    Lege von jeder zu bearbeitenden Datei VORHER ein Backup an!!


    Schritt 1:


    Lade dir von Github die bootstrap-editable.css und die bootstrap-editable.js von x-editable herunter: x-editable/dist/bootstrap3-editable at develop · vitalets/x-editable · GitHub und lade die beiden Dateien in dein Template Verzeichnis hoch (also /templates/TEMPLATE/css/ bzw. /templates/TEMPLATE/js/


    Schritt 2:


    lege eine Datenbanktabelle mit dem Namen mod_product_comment und den Feldern:

    • ID (integer, Auto Increment)
    • PID (int)
    • KID (int)
    • Comment (Text)

    an.


    Schritt 3:


    füge in deinen Sprachdateien für den Kundenbereich 2 Strings ein:

    PHP
    $_LANG['custom_description'] = "Beschreibung";
    $_LANG['custom_description_na'] = "Nicht angegeben";


    Schritt 4:


    Öffne die clientareaproducts.tpl und ersetze

    Code
    <tr onclick="clickableSafeRedirect(event, 'clientarea.php?action=productdetails&id={$service.id}', false)">

    durch

    Code
    <tr>


    dies entfernt den Link, sprich wenn der Kunde nun auf die Zeile klickt wird er nicht mehr sofort zu den Produktdetails weitergeleitet. Dies ist nötig da ein Klick auf den zu hinterlegenden Text sonst immer automatisch zur Produktdetailsseite führen würde. Damit der Kunde weiterhin Zugriff auf seine Produktdetails hat, musst du das Template entweder ändern das die anderen Zellen einen Link erhalten, oder du fügst einen "Details" Button ein welcher den Kunden zum Produkt führt.


    füg oben in der TPL Datei den Pfad zu der js und css Datei ein.

    HTML
    <link href="templates/{$template}/css/bootstrap-editable.css" rel="stylesheet"/>
    <script src="templates/{$template}/js/bootstrap-editable.js"></script>

    dadrunter fügt Ihr folgendes ein


    fügt dann im Tabellen Kopf an der gewünschten Stelle eine weitere Spalte ein

    HTML
    <th>{$LANG.custom_description}</th>

    Ersetze die WHMCS eigene Smarty Variable

    Code
    {foreach key=num item=service from=$services}

    durch eine neue (die Variable $services_new enthält die selben Daten wie die WHMCS eigene $services + die die für die Funktion nötig sind):

    Code
    {foreach key=num item=service from=$services_new}

    füge dann die folgende Spalte im Tabellenbody für den Kommentar in der Tabelle ein. Danach kannst du die clientareaproducts.tpl speichern und hochladen.

    HTML
    <td><a class="change_comment" id=update_comment data-type="text" data-pk={$service.id} data-cid={$clientsdetails.userid} data-token={$service.token}  data-url="../update_comment.php" data-name="update_comment">{$service.comment}</a></td>

    Schritt 5:


    Damit der Kundenbereich die nötigen Daten bekommt benötigen wir eine Hookdatei. Erstelle eine php Datei mit dem unten stehenden Inhalt und lade diese nach /includes/hooks/

    Schritt 6:
    erstelle eine PHP Datei namens update_comment.php, und füge folgenden Code ein:

    und lade die Datei ins Hauptverzeichnis deiner WHMCS Installation hoch. Die Datei kann auch in einen Unterordner geladen werden, dann muss aber der Pfad für init.php und data-url="../update_comment.php" in der tpl Datei angepast werden.


    Schritt 7:
    Passe in der update_comment.php noch die Domain an, welche Daten liefern kann (Zeile 8 im Code).



    Nachdem alles korrekt umgesetzt wurde hat der Kunde nun die Möglichkeit im Kundenbereich Kommentare zu seinen Produkten zu hinterlegen. Somit kann er z.B. bei Lizenzen schreiben für auf welchem Server diese eingesetzt wird. Aussehen sollte das ganze dann so (Farbe und unterstreichen kann über die bootstrap-editable.css angepasst werden):

    • Offizieller Beitrag

    Ähm, auf den ersten Blick würde ich sagen das du nicht die bootstrap-editable.js herunter geladen hast, sondern die github webseite. Wenn ich die bootstrap-editable.js bei dir direkt aufufe erhalte ich Text wie:




    HTML
    <!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><link rel="dns-prefetch"href="https://assets-cdn.github.com"><link rel="dns-prefetch"href="https://avatars0.githubusercontent.com"><link rel="dns-prefetch"href="https://avatars1.githubusercontent.com"><link rel="dns-prefetch"href="https://avatars2.githubusercontent.com"><link rel="dns-prefetch"href="https://avatars3.githubusercontent.com">

    statt:

  • Vielen Dank für das Script!! Bei mir funktioniert es auch wie erwartet. Danke das du es kostenlos zur Verfügung stellst und auch eine gute Anleitung dazu geschrieben hast.


    @Michael O. poste doch mal deine tpl datei und den inhalt der beiden php Dateien und beschreibe deinen Fehler genau, denn zumindest meine Glaskugel ist aktuell defekt. Steht da nur Error oder steht da mehr?

  • Guten Tag @speedy,


    hier meine TPL Datei:


  • Hierbei habe ich mein WHMCS Verzeichnis unter meinedomain.com/cp und hätte es auch mal so probiert und auch einmal mit der Domain. Oder geht das nicht?

    Wenn du einem jetzt noch erklären könntest was du damit meinst.


    Wieso postest du nicht einfach, wie vorhin von mir schon erbeten, deine php Dateien? Alles andere endet doch nur in stunden langem rätsel raten.

  • Guten Tag,


    hier einmal clientareproducts.tpl





    product_comment.php (hook)



    update_comment.php



    • Offizieller Beitrag
    • Code
      logModuleCall('comment', 'error', $refData['host']);

      unter die 3. Zeile der update_comment.php einfügen

    • In WHMCS im System Module Debug Log die Protokollierung aktivieren
    • versuchen einen Kommentar zu hinterlegen
    • System Module Debug Log aufrufen. Das was bei Request steht hat in der update_comment.php als domain zu stehen


    steht im Log nichts dann gibt es 2 Möglichkeiten:

    • der Parameter data-url entspricht nicht dem Pfad zur update_comment.php
    • der hook feuert nicht und somit sind die Werte data-pk, data-cid und data-token leer (zu Prüfen mit der Browser Console)
  • Hallo,


    und hier haben wir schon den Fehler: