Magento auto-rename image labels
Bij het toevoegen van producten aan je Magento Webshop is het toevoegen en labelen van afbeeldingen een enorm rot karwei.
SEO, zoekmachine optimalisatie, technisch gezien is het toevoegen van de juiste labels een van de vele verbeteringen die je kunt doen om beter gevonden te worden.
Klinkt leuk, maar je producten veranderen wel eens van omschrijving, of van naam en dan kun je weer de labels ook aan gaan passen. Terwijl als de labels hetzelfde zouden zijn als de naam van het product dan zou dat al dat werk schelen.
Je kunt het aanpassen in de template van je Magento installatie, maar dan zit je er ook aan vast en kun je geen uitzonderingen meer maken.
Ik heb een klein PHP scripje geschreven waarmee je de labels van al je producten in de shop kunt overschrijven met de actuele waarde van de producten.
Het is buiten de API van Magento om dat zou een chiquere manier zijn…
Gebruik van de code is uiteraard op eigen risico
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | <?php /* * Make sure to create a backup of your installation first! * * No guarantees! * */ $galleryAttributeId = 65; // Overwrite the image label with this attribute_id's value of the product $attributeVarchar = array('105','106','107'); // There are different labels for the overview page etc. /* * Connect to database * * Settings can be fount in /app/etc/local.xml */ $sqlUsername = "username"; $sqlPassword = "password"; $sqlDb = "database"; $sqlHost = "localhost"; $error = "Error connecting to database"; $server = mysql_connect($sqlHost, $sqlUsername, $sqlPassword)or die("$error"); $db = mysql_select_db($sqlDb, $server)or die("$error"); /* * Select products */ $q1 = mysql_query("SELECT entity_id FROM catalog_product_entity"); if(mysql_num_rows($q1) != 0){ while($r1 = mysql_fetch_array($q1)){ /* * Select value_id of the product */ $entity_id = $r1['entity_id']; $q2 = mysql_query("SELECT value_id FROM catalog_product_entity_media_gallery WHERE entity_id = '".$entity_id."'"); if(mysql_num_rows($q2) != 0){ while($r2 = mysql_fetch_array($q2)){ /* * Select name of product */ $value_id = $r2['value_id']; $q3 = mysql_query("SELECT value FROM catalog_product_entity_varchar WHERE entity_id = '".$entity_id."' AND attribute_id = '".$galleryAttributeId."' LIMIT 1"); if(mysql_num_rows($q3) != 0){ $r3 = mysql_fetch_array($q3); $value = $r3['value']; /* * Echo status updates */ echo "Changing: ".$entity_id." - ".$value."<br/-->"; /* * Perform update */ mysql_query("UPDATE catalog_product_entity_media_gallery_value SET label = '".mysql_real_escape_string($value)."' WHERE value_id = '".$value_id."'"); foreach($attributeVarchar as $attribute){ mysql_query("UPDATE catalog_product_entity_varchar SET value = '".mysql_real_escape_string($value)."' WHERE entity_id = '".$entity_id."' AND attribute_id = '".$attribute."'"); } } } } } } ?> |
Na het script niet vergeten je cache leeg te gooien.














