Magento: Magento kortingen (catalogrules) verdwijnen

Dit is nogal een vervelend probleem in Magento, maar het is wel op te lossen.

Een veel gehoord probleem is dat iemand zijn korting instelt op de shop, maar na een dag zijn de kortingen weg. De reden hiervoor is vaak dat er geen cronjob is ingesteld. Om Magento goed te laten functioneren moet er een cron worden ingesteld. Dit is een taak die draait op de server en ervoor zorgt dat er allerlei dingen worden bijgewerkt. Dit zorgt voor het goed functioneren van nieuwsbrieven, catalogrules (kortingen) en nog meer dingen op Magento.

Een groot probleem is natuurlijk soms dat je geen toegang tot de server hebt. Als dat zo is, moet je je provider vragen om een cronjob in te stellen. Of nog beter:  verhuizen naar een andere provider. Magento vereist nu eenmaal meer dan de gemiddelde shop/website.

De volgende regel moet aan de cronjob worden toegevoegd(voorbeeld is mijn shop www.beleefalmelo.nl):

#run cron.php (elke 15 minuten)

*/15 * * * * php -f /var/www/beleefalmelo.nl/web/cron.php > /dev/null 2>&1

Uiteraard moet je je eigen domeinnaam invullen en ook het pad even controleren, want dat verschilt per installatie/Linuxversie.

Meer info over het instellen van een cronjob vindt je in het volgende artikel.

 

 

PDF Magento: en andere afbeeldingstypes in Magento invoegen

PDF en andere bestandstypes: Hoe andere bestandstypen toe te voegen aan Magento:

Ik wilde graag een PDF bestand toevoegen aan een product, maar Magento staat alleen jpg, gif en png toe. Hoe pas je dit aan?

Core Files

Kijk naar het bestand: /app/code/Core/Mage/Cms/etc/config.xml

We willen geen core-bestanden aanpassen, dus maak dezelfde directory structuur onder /app/local/…
Let op: 
het aanpassen van systeembestanden van Magento is niet verstandig. Bij een update gaan de wijzigingen verloren. Zoals bij alle CMS systemen is het belangrijk om de updates van bestanden gescheiden te houden van de oorspronkelijke bestanden.

Zo zorgen we dat het update proof is.

Voor de goede orde nog even een opsomming van de mappenstructuur:
Lees meer

Magento: probleem bij shipment (verzenden)

Na upgrade Magento van 1.4.2 –> 1.6.2 komt er een foutmelding bij verzenden order

De melding is: Fatal error: Call to a member function isShippingLabelsAvailable() on a non-object in /code/core/Mage/Adminhtml/Block/Sales/Order/Shipment/Create/Items.php on line 132

Gelukkig is de oplossing redelijk eenvoudig.

Hoewel we normaal geen core bestanden aanpassen, maken we nu even een uitzondering, omdat het een duidelijke bug is. Hopelijk wordt deze in toekomstige upgrades van Magento opgelost.

Verander regel 1213 van app/code/core/Mage/Sales/Model/Order.php van

$shippingMethod parent::getShippingMethod();

Naar

$shippingMethod $this->getData('shipping_method');

Probleem opgelost!

Magento: Ideal erg traag

Ideal werkt erg traag, en soms helemaal niet

Dit is helaas een veel voorkomend probleem. En hoewel het niet altijd makkelijk op te lossen is, hierbij een mogelijke oplossing uit de dagelijkse praktijk.

Na verhuizing van een webshop bleken Ideal betalingen te mislukken. Dit zonder een duidelijke reden. Frustrerend is dat sommige testbetalingen wel gewoon lukten…

Het probleem bleek te zitten in de cache en de session map. Hoewel deze mappen gewoon bestonden bleken de gegevens wel een maand oud te zijn. Reden: de webserver had geen schrijfrechten op de mappen. Vooral de session map is hierbij belangrijk, want deze is nodig voor de Ideal betaling. Na verloop van tijd geeft de server een time-out (afhankelijk van de serverinstellingen kan dat wel 3 minuten duren) en gaat naar het Ideal betalingscherm. Helaas hebben veel klanten dan al afgehaakt, er vanuit gaand dat de betaling gewoon niet functioneert (doet ie eigenlijk ook  niet). De oplossing: zorg dat de mappen /var/session en /var/cache schrijfbaar zijn.

Dus (in het geval van mijn webserver) chmod 777 /var/session en chown www-data:www-data /var/session

Hetzelfde doe je voor de map /var/cache. Hierna kunnen de sessies gewoon worden weggeschreven en was de wachttijd van 3 minuten naar 6 seconden gegaan.
 

Natuurlijk begrijp ik dat er meer redenen zijn voor een slecht functionerende betaalmodule, dus mocht ik nog andere oplossingen tegenkomen, dan vermeld ik het op mijn website.

Magento: prijs verdwenen op product detailpagina na upgrade

Na upgrade Magento 1.4.0.1 naar 1.6.2 is de prijs verdwenen in de product detailpage

Een vreemd probleem. Dit viel mij eigenlijk pas op, toen ik op een Google Shopping link klikte van Beadles.nl om de kralen van de webshop van mijn vrouw te bekijken. Google Shopping liet prijzen zien, maar op de webshop stond niets meer. Ai, dat is natuurlijk niet goed voor de verkoop. De oplossing is gelukkig niet moeilijk.

Het heeft te maken met de manier waarop Magento de prijsgegevens afhandelt in de nieuwe versie.

Oplossing: zoek de catalog.xml op van je webshop. Deze staat onder de layout van je template. Hier vind je het volgende:

<block type="catalog/product_view_type_simple" name="product.info.simple" as="product_type_data" template="catalog/product/view/type/simple.phtml">

<block type="core/text_list" name="product.info.simple.extra" as="product_type_data_extra" translate="label">

<label>Product Extra Info</label>

</block>

 simple.phtml moet gewijzigd worden in default.phtml

Hierna is het probleem opgelost.

Magento: totaalprijs toevoegen aan cart

Vaak wordt standaard alleen het aantal items weergegeven. Het is mooi om ook de totaalprijs te laten zien. Dat doe je als volgt.

zoek even de template van je cart op. Deze heet mycart.phtml oid. Daarin moet je het volgende toevoegen om de totaalprijs te zien:

<span class=”totaalprijs”>totaalprijs:  <?php echo $this->helper(‘checkout’)->formatPrice(Mage::getSingleton(‘checkout/cart’)->getQuote()->getGrandTotal()); ?></span>

Even een class toegevoegd voor het stylen en klaar!

 

Magento: verlanglijst (whishlist) werkt niet meer na upgrade

Na een upgrade van Magento werkt soms de whishlist niet meer

Dat wordt opgelost door de whishlist.xml aan te passen. Let op: kopieer deze eerst naar de layout map van je thema als hij nog niet bestaat. Maak dan de volgende aanpassing:

Verander de code:

<reference name=”top.links”>

<block type=”wishlist/links” name=”wishlist_link”/>

<action method=”addLinkBlock”><blockName>wishlist_link</blockName></action>

</reference>

Vervang het met:

<reference name=”top.links”>

<action method=”addLink” translate=”label title” module=”wishlist”><label>Wishlist</label><url helper=”wishlist/getListUrl”/><title>Wishlist</title><prepare/><urlParams/><position>5</position></action>

</reference>

 

Hierna werkt de whishlist link weer gewoon

Magento: indexeren werkt niet meer

Herindexeren in Magento werkt niet meer: oplossing

Soms lukt het niet meer om te herindexeren in Magento. In de admin blijft de melding herindexeren staan en de artikelen worden niet meer geupdate. Dat is een vervelend probleem, maar gelukkig is er een oplossing voor.

Om te beginnen is het handig om te kijken waar het probleem ontstaat. Dat kun je het beste doen door te indexeren via de commandprompt. Uiteraard heb je dan wel SSH toegang nodig.

In de root map van je Magento installatie typ je dan in:

php shell/indexer.php reindexall

Je kunt dan goed zien welke foutmeldingen er ontstaan.
Geeft hij aan dat er dubbele foreign keys zijn, dan kun je het volgende doen:

Leegmaken (truncate)  van tables catalog_product_flat_1 en catalog_product_flat_2(indien aanwezig).

Let er wel op dat je alleen deze tabel leegmaakt! Maak eerst even een database backup via mysqldump -u USER -p PASSWORD DATABASE > backup.sql

Als de tabel is leeggemaakt kun je opnieuw indexeren en wordt de tabel weer automatisch gevuld.

Optie 2 is het gebruiken van de database repair tool. Deze is te downloaden via deze link.

Magento: block verwijderen van homepage

Stel je voor dat je een bepaald blok niet overal wilt zien. Laten we bijvoorbeeld de winkelwagen verwijderen van het rechterblok op de homepage.

Om te beginnen moet je even de template hints aanzetten, zodat je kunt zien waar het blok staat en hoe het wordt aangeroepen.

Je ziet dan bijvoorbeeld dit:

Het is niet helemaal leesbaar zo, maar we zoeken /app/design/frontend/default/THEMA/chechout/cart/sidebar.phtml
Moeten we alleen nog even kijken hoe deze wordt aangeroepen.

Onder /app/design/frontend/default/THEMA/layout vinden we catalog.xml. Hierin worden blokken gedefinieerd. We vinden daarin ook de referentie naar sidebar.phtml. We zijn opzoek naar de naam:

Om ervoor te zorgen dat deze wordt uitgeschakeld in de homepage. Gaan we naar de backend. En in CMS–>Pages–>Homepage–>Ontwerp–>Layout Update XML

plaatsen we het volgende:

<reference name="right">
            <remove name="cart_sidebar"/>
        </reference>

 

Hierna is het blok met de winkelwagen verdwenen van de homepage.