Magento 2 get product gallery images – resized (gallery.phtml)

Der folgende Beispielcode zeigt, wie man die Galeriebilder von einem Produkt direkt auslesen und anzeigen kann. Die entsprechende Größe der Bilder wird über die Datei „MeinTemplate/etc/view.xml“ definiert.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php $_imagehelper = $this->helper('Magento\Catalog\Helper\Image'); ?>
<?php $product = $block->getProduct() ?>
<?php $images = $product->getMediaGalleryImages(); ?>
<?php
foreach ($images as $image) {
    $image->setData(
        'small_image_url',
        $_imagehelper->init($product, 'product_page_image_small')
            ->setImageFile($image->getFile())
            ->getUrl()
    );
    $image->setData(
        'medium_image_url',
        $_imagehelper->init($product, 'product_page_image_medium')
            ->constrainOnly(true)->keepAspectRatio(true)->keepFrame(false)
            ->setImageFile($image->getFile())
            ->getUrl()
    );
    $image->setData(
        'large_image_url',
        $_imagehelper->init($product, 'product_page_image_large')
            ->constrainOnly(true)->keepAspectRatio(true)->keepFrame(false)
            ->setImageFile($image->getFile())
            ->getUrl()
    );
    $image->setData(
        'is_default_image',
        ($image->getFile()==$product->getImage()) ? 1 : 0
    );
}
?>
 
<?php foreach ($images as $image): ?>
    <?php $item = $image->getData(); ?>
    <? print_r($item); ?>
    <img src="<?php echo $item['medium_image_url'] ?>" alt="<?php echo ($image->getLabel()!='') ? $image->getLabel() : $product->getName() ?>" />
<?php endforeach ?>

Magento 2 + Domainfactory – Manuelles System Update und Composer Installation

Composer Installation für Domainfactory Server

Um ein manuelles Systemupdate von Magento 2 durchführen zu können, benötigen wir den Bash Befehl „composer“. Wird nach der Eingabe von „composer“ – “ command not found“ angezeigt, geben Sie die folgenden Befehle (Für PHP 7.0) in die Bash ein:

1
2
3
4
5
mkdir ~/composer
cd ~/composer
curl -s http://getcomposer.org/installer | php7
alias php7cli='/usr/local/bin/php7-70LATEST-CLI -c /etc/php.ini/7/332502/2107480/php.ini'
alias composer='php7cli ~/composer/composer.phar'

Rufen Sie nun den Befehl „composer“ auf, dann kann der composer für das Update von Magento2 verwendet werden.

Manuelles Service Update von Magento

In meinem Beispiel update ich Magento 2.1.3 auf 2.1.4. Die Versionsnummer muss natürlich individuell angepasst werden:

1
2
composer require magento/product-community-edition 2.1.4 --no-update
composer update

Wird nach einem Login und Passwort gefragt, dann geben Sie hier Ihren Magento „Public Key“ als Login und den „Private Key“ als Passwort ein.
Diese Keys erhält/generiert man auf magento.com im Kundenaccount.

1
2
3
rm -rf var/di var/generation var/view_preprocessed var/cache var/page_cache
/usr/local/bin/php7-70LATEST-CLI bin/magento cache:flush
/usr/local/bin/php7-70LATEST-CLI bin/magento setup:upgrade

Nun beginnt das Update. Bekommen Sie folgende Meldung „Database user does not have enough privileges.“ dann öffnen Sie die Datei „./setup/src/Magento/Setup/Validator/DbValidator.php“ und setzen in der Funktion „checkDatabasePrivileges“ ein „return true;“. Danach führen Sie den Befehl erneut aus.

Erhalten Sie die Meldung „Please re-run Magento compile command“ dann dann starten Sie die Compilierung mit folgendem Befehl „/usr/local/bin/php7-70LATEST-CLI -d memory_limit=1024M bin/magento setup:di:compile“ und fahren fort.

1
2
3
/usr/local/bin/php7-70LATEST-CLI bin/magento setup:static-content:deploy
/usr/local/bin/php7-70LATEST-CLI bin/magento setup:static-content:deploy de_DE
/usr/local/bin/php7-70LATEST-CLI bin/magento indexer:reindex

Damit sollte Ihr System nun auf dem gewünschten Stand sein.

Magento 2 + Domainfactory – CronJob erstellen und System Upgrade (Cron script readiness check passed.)

Den CronJob könnt ihr einfach über eine sh starten und müsst das nicht zwingend in die Crontab eintragen, wie es von Magento vorgegeben ist. Dies muss gemacht werden, um die Prüfungen für ein System Update aus dem Backend zu bestehen. Außerdem leistet der CronJob wichtige Dienste für euren Onlineshop, wie das Bereinigen von Daten.

CronJob erstellen um den Web-Setup-Assistenten von Magento2 aufrufen zu können

1. anmelden über SSH
2. aufrufen des Verszeichnispfades wo die Magentoinstallation lieg
3. sh Datei erstellen und darauf die Rechte zum ausführen geben (bsp 751)

Die sh sollte folgenden Inhalt haben:

1
2
3
4
#!/bin/sh
/usr/local/bin/php7-70LATEST-CLI -d memory_limit=1024M {{ABSOLUTER MAGENTO PFAD}}/bin/magento cron:run | grep -v "Ran jobs by schedule" >> {{ABSOLUTER MAGENTO PFAD}}/var/log/magento.cron.log
/usr/local/bin/php7-70LATEST-CLI -d memory_limit=1024M {{ABSOLUTER MAGENTO PFAD}}/update/cron.php >> {{ABSOLUTER MAGENTO PFAD}}/var/log/update.cron.log
/usr/local/bin/php7-70LATEST-CLI -d memory_limit=1024M {{ABSOLUTER MAGENTO PFAD}}/bin/magento setup:cron:run >> {{ABSOLUTER MAGENTO PFAD}}/var/log/setup.cron.log

4. das ganze einmal aufrufen:

1
./cron.sh

5. am Besten gleich einen CronJob im DF Menü auf die Datei erstellen und nun läuft der Test für das System Upgrade auch problemlos durch.

Beim Starten der cron.sh wird eine Datei erstellt „var/.setup_cronjob_status“ diese Datei beinhaltet die Information, die zur Prüfung der „Readiness Check“ benötigt werden. Sollten Fehler aufgetreten sein, werden diese durch den Cron in dieser Datei hinterlegt. Daher steht der Cron und das Update Modul in direktem Zusammenhang.

Zur Info: In einem zweiten Beitrag im Blog zeige ich, wie man auch manuell Updates durchführen kann.

Magento 2 – Notice: SessionHandler::gc(): ps_files_cleanup_dir: opendir(/tmp) failed: Permission denied (13)

Dieser Fehler kann auftreten, wenn Magento nicht im „/tmp“ Dateien suchen kann oder auf Dateien zugreifen möchte, deren Namen nicht bekannt sind. Aus Sicherheitsgründen ist das oft gesperrt. Eine Lösung ist die Sessiondaten in das tmp Verzeichnis von Magento „var/tmp“ speichern zu lassen. Dazu muss in der PHP.ini folgender Wert angepasst werden:

1
session.save_path = 'LINK_ZU_MAGENTO2/var/tmp"

Den Link zur Magentoinstallation erhält man z.B. über eine kleine php-Datei:

Test.php

1
<? phpinfo() ?>

Domainfactory und Magento 2.0 Installation

Domainfactory und Magento 2.0 Installation

Die Installation von Magento 2.0 ist nicht ganz so einfach, wie die bei der ersten Version. Daher gibt es hier eine kurze und knackige Anleitung für Domainfactory Server.

1. Vorbereitung:

Es sollte eine leere DB erstellt werden und ein Verzeichnis für die Dateien existieren.
Die Domain sollte auf dieses Verzeichnis zeigen, was im Grunde Standard für jedes Projekt ist.

2. Magento herunterlade und zu DF hochladen:

Auf der Magentoseite einfach das Paket herunterladen.
Das Paket wird dann zu Domainfactory hochgeladen und per unzip oder tar entpackt.

3. Servereinstellungen:

Die Domain sollte mindestens auf die PHP Version 7.0 gestellt werden. Wählt hier am besten eine FastCGI Version, sollte die Installation nicht durchlaufen und bei einer Prozentzahl stehen bleiben, dann wählt eine andere Versionsnummer mit FastCGI (ich nutze 7.0.13 mit aktiviertem FastCGI).
Zusätzlich müssen folgende Änderungen an der ini vorgenommen werden (PHP.ini editieren):

1
2
3
4
5
6
- allow_url_fopen -> aktivieren
- extension_dir -> auf die PHP Version anpassen (bei mir 7.7): /usr/local/lib/php_modules/7-70STABLE
- memory_limit = 2048M
- max_execution_time = 600000 (muss nicht so extrem hoch sein, aber muss erhöht werden)
Im Textfeld unter "[PHP]" folgenden Eintrag hinzufügen:
  extension = "intl.so"

Dann alles abspeichern.

4. Dateien bearbeiten:

Am besten ihr prüft vor dem Starten der Installation mit dem Befehl „phpinfo()“ ob wirklich die Werte so übernommen sind, sonst bleibt die Installation oft mitten im Prozess stehen.
Die Dateien sollten bereits Extrahiert sein und müssen wie folgt bearbeitet werden:

.htaccess

1
2
    php_value memory_limit 768M
    php_value max_execution_time 18000

2x anpassen auf (IfModule mod_php7.c und IfModule mod_php5.c):

1
2
    php_value memory_limit 2048M
    php_value max_execution_time 600000

Zeile hinzufügen unter:

1
    RewriteEngine on

in:

1
2
    RewriteEngine on
    RewriteBase /

.user.ini

1
2
    memory_limit = 768M
    max_execution_time = 18000

in:

1
2
    memory_limit = 2048M
    max_execution_time = 600000

./setup/src/Magento/Setup/Validator/DbValidator.php

Um den Fehler „Database user does not have enough privileges.“ zu vermeiden, in die Funktion „checkDatabasePrivileges“ ein „return true“ einfügen:

1
2
3
4
    private function checkDatabasePrivileges(\Magento\Framework\DB\Adapter\AdapterInterface $connection, $dbName)
    {
        return true;
        $requiredPrivileges = [

5. Installation:

Nun die Domain aufrufen und die Installation sollte problemlos durchlaufen.

6. Können nach der Installation keine CSS oder JS Dateien gefunden werden im Frontend und Admin oder es erscheinen viele 404 Fehler für fehlende Dateien:

Schritt 1:
CMD Shell Aufrufen und in den Installationspfad springen

Schritt 2:
Sprache muss eventuell angepasst werden. Der folgende Befehl erstellt die nötigen Dateien.

1
/usr/local/bin/php7-70LATEST-CLI bin/magento setup:static-content:deploy de_DE

Bei Problemen im Adminbereich:

1
/usr/local/bin/php7-70LATEST-CLI bin/magento setup:static-content:deploy

Schritt 3:

1
/usr/local/bin/php7-70LATEST-CLI bin/magento indexer:reindex

Schritt 4:

1
2
cd var/cache/
rm -rf *

Schritt 5:
Nun einmal Testen ob die Seite korrekt angezeigt wird.

Schritt 6:
Geht es immer noch nicht dann müssen wir noch die Versionsnummer aus dem Pfad entfernen.

vendor\magento\module-theme\etc\config.xml

1
2
3
4
5
6
7
        <dev>
            <static>
                <sign>1</sign>
            </static>
        </dev>
    </default>
</config>

ändern in:

1
2
3
4
5
6
7
        <dev>
            <static>
                <sign>0</sign>
            </static>
        </dev>
    </default>
</config>

Schritt 7:
in der Shell:

1
/usr/local/bin/php7-70LATEST-CLI bin/magento indexer:reindex

Schritt 8:

1
2
cd var/cache/
rm -rf *

Und noch mal Testen, nun sollte die Versionsnummer aus dem Pfad verschwunden sein.

LAMELLEN, INSEKTENSCHUTZ, ROLLOS, DOPPELROLLOS, MARKISEN, JALOUSIEN – 5% Rabatt Code

Sonnenschutz vom Experten mit einem super Preis-Leistungsverhältnis. Persönlich bin ich von den Produkten von Sonnenschutz-Riese überzeugt und möchte daher einen 5% Gutschein zur Verfügung stellen.

Produkte:
Lamellen, Insektenschutz, Rollos, Doppelrollos, Markisen, Jalousien und Plissees

Gutschein:

1
Rabattcode (im Warenkorb eingeben): riesigsparen

Shop:
www.sonnenschutz-riese.de

Plissee Gutschein über 10% bei Plissee-Riese.de

Ich habe mich länger mit dem Thema Sonnenschutz befasst und habe nahezu alle Fenster mit passenden Plissees ausgestattet. Dabei bin ich bei Plissee-Riese auf einen Dienstleister mit hervorragenden Preis-Leistungsverhältnis gestoßen. Ich kann diesen Anbieter nur empfehlen möchte folgend einen 10% Gutschein zur Verfügung stellen:

1
Rabattcode (im Warenkorb eingeben): RIESIGE10%

Shop: www.plissees-riese.de

Magento Grid show only one page (use group or groupByAttribute)

Verwendet man bei einem Grid group, so wird oft nur eine Seite bzw. ein Eintrag angezeigt. Um alle Einträge angezeigt zu bekommen sowie die Seiten, muss folgende Datei angepasst werden:

lib/Varien/Data/Collection/Db.php

Funktion wie folgt abändern:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
    public function getSize()
    {
        if (is_null($this->_totalRecords)) {
            $sql = $this->getSelectCountSql();
 
            $result = $this->getConnection()->fetchAll($sql, $this->_bindParams);;
 
            foreach ($result as $row) {
                $this->_totalRecords += reset($row);
            }
 
        }
        return intval($this->_totalRecords);
    }

Magento kein Login im Frontend möglich (2 frontend session cookies)

Wenn das einloggen im Frontend nicht möglich ist und dabei keine Fehlermeldung erscheint, kann das den Grund haben, das es zwei frontend sessions gibt, da die Domain nicht auf „www.“ läuft.

Szenario:
– Kunde geht auf Shop (der ohne www. in der Base-Url konfiguriert ist)
– Loggt sich ein
– schließt den Browser ohne Abmeldung
– öffnet den Browser neu
– versucht sich neu anzumelden und das besagte Problem besteht

Problem:
Magento erstellt zwei Frontend Cookies für „.example.de“ und „example.de“

Lösung:

Konfiguration umstellen:
Admin -> System -> Konfiguration -> Web -> Tab: Sitzungscookie Verwaltung

Dort die „Cookie Lebensdauer“ definieren, dann läuft erst mal die Session nur eine gewisse Zeit und das ist auch eine Sicherheitsfrage.
Unter „Cookie Domain“ die Domain definieren

Ist das Problem dadurch noch nicht gelöst, empfiehlt sich die Basis-URL auf „www.example.de“ umzustellen und in der „Cookie Domain“ „www.example.de“ anzugeben.

Aus SEO-Gründen sollten aber alle „ohne www“ Aufrufe auf „mit www“ umgeleitet werden:

1
2
3
4
5
6
RewriteEngine on
 
# non www to www
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

.htaccess – Weiterleitung nach Domainumstellung von „ohne www“ auf „mit www“

Mit folgenden Code in der .htaccess werden nach der Umstellung einer Domain von „example.de“ auf „www.example.de“ alle Unterseiten per 301 weitergleitet, so gehen die Platzierungen in den Suchmaschinen nicht verloren und zugleich ist dieser Code für http und https gänig.

1
2
3
4
5
6
RewriteEngine on
 
# non www to www
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Posts of Current Category



Facebook: