Webdesign Tipps

Print-Icon nach Joomla Upgrade auf 3.x verschwunden

Veröffentlicht in Joomla 3.x

Für einen Webdesign Kunden habe ich ein Joomla Upgrade von Joomla 2.5.28 auf Joomla 3.4 durchgeführt und dabei das bestehende Template weiterverwendet. Nach einigen Anpassungen funktionierte das Template auch nahezu einwandfrei. Nur das Print-Icon sowie das Email-Icon wurden nicht mehr in gewohnter Weise in den Artikeln angezeigt. Stattdessen erschienen nur noch Links zum Drucken und Mailen in Textform.Nach Joomla Upgrade auf 3.4 sind Print- und Email-Icon verschwunden

Meine Recherchen in einschlägigen Webdesign-Foren und im Rest des Internets hatten leider wenig Erfolg für das von mir verwendete Template.

Auf die richtige Spur brachte mich dann aber doch noch der Beitrag von Axel Tüting Override: Drucker- und eMail-Icon.

Da ich in meinem Template kein Bootstrap verwende und dies auch nicht extra einbinden wollte, habe ich den Lösungsansatz etwas abgewandelt:

Zuerst habe auch ich fürs Template-Override die Datei

root/components/com_content/views/article/tmpl/default.php

in mein Temlate in das folgende Verzeichnis kopiert

root/templates/MEIN_TEMPLATE/html/com_content/article/

 

Anschließend habe ich diese Datei geöffnet und nach folgendem Code gesucht (bei mir ab Zeile 64)

<?php if (!$this->print) : ?>
     <?php if ($canEdit || $params->get('show_print_icon') || $params->get('show_email_icon')) : ?>
         <?php echo JLayoutHelper::render('joomla.content.icons', array('params' => $params, 'item' => $this->item, 'print' => false)); ?>
     <?php endif; ?>
<?php else : ?>

Diesen habe ich mit folgendem Code ersetzt:

<?php if (!$this->print) : ?>
    <?php if ($canEdit || $params->get('show_print_icon') || $params->get('show_email_icon')) : ?>
        <div id="printmailicon">
            <?php if ($params->get('show_print_icon')) : ?>
                <a onclick="window.print();return false;" href="#"><span aria-hidden="true"><img alt="Drucken" src="/media/system/images/printButton.png"></span></a>
            <?php endif; ?>
            <?php if ($params->get('show_email_icon')) : ?>
                <a onclick="window.open(this.href,'win2','width=400,height=350,menubar=yes,resizable=yes'); return false;" href="/j336/component/mailto/?tmpl=component&template=grundtemplate&link=6fac8bf40734413e86b8c73005f6793cff33e0fc"><span aria-hidden="true"><img alt="E-Mail" src="/media/system/images/emailButton.png"></span></a>
            <?php endif; ?>
            </div>  
    <?php endif; ?>
<?php else : ?>

Die img Tags für den Pfad zu den Icons (Drucken und Email) habe ich mir vorher mit dem Firebug in der noch existierenden Joomla 2.5 Webseite abgeschaut.

<img alt="Drucken" src="/media/system/images/printButton.png">
<img alt="E-Mail" src="/media/system/images/emailButton.png">

Nun fehlte nur noch die Positionierung der Icons auf der rechten Seite mit css:

#printmailicon {
  text-align: right;
}

Anschließend wurden die Icons wieder in gewohnter Weise angezeigt.

Nach einem Template-Override sind Print- und Email-Icon wieder da

 

K2 Extrafelder per BreezingForms Integrator füllen

Veröffentlicht in Joomla 3.x

In einem Webdesign-Projekt mit Community Portal verwende ich K2 zur Ausgabe der Beiträge im Frontend. Die Beiträge werden von den Mitgliedern selbst im Frontend eingegeben. Leider ist die Eingabe der Beitrags-Inhalte über das Frontend von K2 nicht so flexibel und leistungsfähig, wie ich es benötige, daher verwende ich BreezingForms 1.8.4 , um die Beiträge einzugeben.

Der User gibt die Inhalte seines Beitrages über ein BreezingForms Quick Mode Formular ein, der BreezingForms Integrator sorgt anschließend dafür, dass die Daten in die Joomla K2 Tabelle dbpräfix_k2_items geschrieben werden.

Ruft man diese Tabelle in phpMyAdmin auf, so sieht man, dass alle Extrafelder gemeinsam in einem Datenfeld „extra_fields“ gespeichert sind, was dann ungefähr so aussieht:

[{"id":"1","value":"Content 1"},{"id":"2","value":"Content 2"},{"id":"3","value":"Content 3"},{"id":"4","value":"Content 4"},{"id":"5","value":"Content 5"}]

So ist es also nicht ohne weiteres möglich, die einzelnen Extrafelder direkt anzusprechen.

Um diese Extrafelder nun trotzdem mit dem Integrator zu füllen, habe ich in BreezingForms ein verstecktes Feld (hidden_input) erstellt, in das über ein Script automatisch die Inhalte aller Extrafelder gesammelt und gleich in die benötigte Syntax gebracht werden. Am Ende wird dann das BreezingForms Feld Extrafelder vom Integrator in die K2-Tabelle geschrieben.

Das ganze geht dann im BreezingForms Quick Mode Formular so:

1. Zusätzlich zu den Feldern für die Extrafeld-Texte ein neues Element anlegen:

Typ = Versteckte Eingabe

Joomla Tipp K2 Extrafelder per BreezingForms Integrator füllen

 

2. Einem beliebigen der Extrafelder (hier extrafeld1) ein Validierungsskript zuweisen:

Joomla Tipp K2 Extrafelder per BreezingForms Integrator füllen

Reiter „Eigenschaften“ -> Validierung

Validierung: Custom
Fehlermeldung: beliebiger Text oder leer lassen (wird nicht ausgegeben)
Script-Fenster: folgenden Inhalt einfügen

function ff_extrafeld1_validation(element, message)
{
    ff_extrafields();
    return '';
} // ff_extrafeld1_validation

Dieses Skript ruft während der Validierung, also nach dem Klicken des Formular-Abschicken-Buttons, die Funktion ff_extrafields auf.


Direkt unter dem ersten Skript wird die Funktion ff_extrafields definiert:


function ff_extrafields()
{
    var extrafeld1 = '';
    if (ff_getElementByName('extrafeld1').value !== null) {
        extrafeld1=ff_getElementByName('extrafeld1').value;
    }
    var extrafeld2 = '';
    if (ff_getElementByName('extrafeld2').value !== null) {
        extrafeld2=ff_getElementByName('extrafeld2').value;
    }
    var extrafeld3 = '';
    if (ff_getElementByName('extrafeld3').value !== null) {
        extrafeld3=ff_getElementByName('extrafeld3').value;
    }
    var extrafeld4 = '';
    if (ff_getElementByName('extrafeld4').value !== null) {
        extrafeld4=ff_getElementByName('extrafeld4').value;
    }
    var extrafeld5 = '';
    if (ff_getElementByName('extrafeld5').value !== null) {
        extrafeld5=ff_getElementByName('extrafeld5').value;
    }

    var extratext=''

    extratext='[{"id":"1","value":"' + extrafeld1 + '"},';
    extratext=extratext + '{"id":"2","value":"' + extrafeld2 + '"},';
    extratext=extratext + '{"id":"3","value":"' + extrafeld3 + '"},';
    extratext=extratext + '{"id":"4","value":"' + extrafeld4 + '"},';
    extratext=extratext + '{"id":"5","value":"' + extrafeld5 + '"}]';

    ff_getElementByName('extratext').value=extratext;

} // ff_extrafields


Funktion ff_extrafields im Detail erklärt:

Zuerst werden die Formularfelder ausgelesen und in Variablen gespeichert.

    var extrafeld5 = '';
    if (ff_getElementByName('extrafeld5').value !== null) {
        extrafeld5=ff_getElementByName('extrafeld5').value;
    }

 

Anschließend werden die Variablen mit den für die K2-Extrafelder benötigten Textelementen als String in die Variable extratext gespeichert.

    var extratext=''

    extratext='[{"id":"1","value":"' + extrafeld1 + '"},';
    extratext=extratext + '{"id":"2","value":"' + extrafeld2 + '"},';
    extratext=extratext + '{"id":"3","value":"' + extrafeld3 + '"},';
    extratext=extratext + '{"id":"4","value":"' + extrafeld4 + '"},';
    extratext=extratext + '{"id":"5","value":"' + extrafeld5 + '"}]';

 

Der Inhalt dieser Variablen wird dann in das versteckte Formularfeld geschrieben.

ff_getElementByName('extratext').value=extratext;

 

Damit stehen die Extrafelder dann dem Integrator zum Speichern in der K2-Tabelle zur Verfügung. Zum Integrator gibt es in kürze einen eigenen Beitrag.

 

 

 

reCaptcha: Captcha wird plötzlich nicht mehr angezeigt

Veröffentlicht in Joomla 3.x

Google hat einen Pfad im reCaptcha geändert, so dass in vielen Kontaktformularen auf einmal das Captcha-Bild nicht mehr angezeigt wird. Abhilfe schafft hier vorerst ein Hack in der folgenden Datei:

/joomla-root/plugins/captcha/recaptcha/recaptcha.php

Hier muss die URL in der folgenden Zeile geändert werden:

const RECAPTCHA_API_SERVER = "http://api.recaptcha.net";

ändern zu

const RECAPTCHA_API_SERVER = "http://www.google.com/recaptcha/api";

...und schon geht es wieder.

Diese Maßnahme wirkt sowohl bei Joomla 2.5.x als auch bei Joomla 3.x

 

 

Sie benötigen Hilfe bei Ihrer Joomla-Website? Dann schreiben Sie mir einfach und ich berate Sie gerne!

Fehlerbehebung: Template ist installiert, wird aber im Backend nicht angezeigt

Veröffentlicht in Joomla 2.5

Problem:

Ein Template wurde in einem Joomla 2.5 Webdesign-Projekt installiert, ist via ftp im entsprechenden Verzeichnis sichtbar, wird im Template-Manager aber nicht angezeigt und kann daher nicht aktiviert werden.


Ursache:

Das Template wurde nicht richtig installiert.


Lösung:

Das Template muss zur Behebung des Fehlers nicht komplett neu installiert werden, es reicht die folgende Vorgehensweise, wodurch der erneute Upload auf den Server entfällt:


1. Klickfolge:

Backend Menü Erweiterungen (1)  -> Reiter "Überprüfen" (2) -> Button "Überprüfen" (3) klicken
nun sollte das Template in der Liste der Erweiterungen angezeigt werden.

Fehler: Template ist installiert, wird aber im Backend nicht angezeigt

 

2. Klickfolge:

Jetzt sollte das Template im Template-Manager erscheinen und kann aktiviert werden
Nun das Template markieren (Haken links setzen) und den Button Installieren (4) klicken

 

 

 

Sie benötigen professionelle Ünterstützung bei Joomla? Schreiben Sie mir einfach und ich berate Sie gerne!

 

Joomla Tipp: BreezingForms Mailback mit PDF-Anhang unter Joomla 2.5

Veröffentlicht in Joomla 2.5

Mal wieder habe ich für einen Webdesign-Kunden einen PDF-Anhang für die Email-Benachrichtigung nach dem Abschicken eines BreezingForms Formulares erstellt. Unter Joomla 2.5 kommt hier inzwischen die BreezingForms-Version 1.7.5 (die kostenpflichtige Variante in Version 1.8) zum Einsatz, in der sich, was den PDF-Anhang betrifft, nur wenig verändert hat.

 

So gelten für die Erstellung und Formatierung des PDF-Templates die gleichen Aussagen wie unter Joomla 1.5 aus meinem Artikel Joomla-Tipp: BreezingForms Mailback mit PDF-Anhang. Geändert hat sich allerdings der Ort, an dem das PDF-Template liegt: Unter dem bereits bekannten Pfad:

JoomlaRoot/administrator/components/com_breezingforms/pdftpl/

sind zwar immer noch das entsprechende Verzeichnis sowie Dateien vorhanden, verwendet wird aber die Template-Datei im Verzeichnis media:

JoomlaRoot/media/breezingforms/pdftpl/pdf_attachment.php.

 

 

 

Sie benötigen professionelle Ünterstützung bei Joomla? Schreiben Sie mir einfach und ich berate Sie gerne!