MySQL Server benötigt zu viel Platz

Der MySQL Server legt in der Standard-Konfiguration fleißig mysql-bin.xxxx. Dateien unter /var/lib/mysql die mitunter bei sehr vielen Transaktionen sehr groß werden können. In meinem Fall benötigten diese über 60 GB. Da diese nach einer gewissen Zeit nicht mehr gebraucht werden, musste ich folgende Einstellung in die my.cnf eintragen und sie wurden automatisch gelöscht. Ich habe die Grenze auf 100 Tage gesetzt:

expire_logs_days = 100

Magento: Get resized catalog thumbnail image

My solution for generating a resized thumbnail image is to overwrite the  model class of catalog. Here my xml file:

<?xml version="1.0"?>
<config>
  <global>
    <models>
      <catalog>
        <rewrite>
           <category>YOURMODULE_SUBMODULE_Model_Catalog_Category</category>
        </rewrite>
      </catalog>
    </models>
  </global>
</config>

The class (/app/code/local/YOURMODULE/SUBMODULE/Model/Catalog/Category.php):

class YOURMODULE_SUBMODULE_Model_Catalog_Category extends Mage_Catalog_Model_Category
{
  public function getResizedThumbnail($width = 130, $height = 130) {

    if (! $this->getThumbnail()) return false;

    $imageUrl = Mage::getBaseDir ( 'media' ) .DS .  "catalog" . DS . "category" . DS . $this->getThumbnail();
    if (! is_file ( $imageUrl )) return false;

    $imageResized = Mage::getBaseDir ( 'media' ) .DS . "catalog" . DS . "category" . DS . "cache" . DS . "cat_resized" . DS . $this->getThumbnail();

    if (! file_exists ( $imageResized ) && file_exists ( $imageUrl ) || file_exists($imageUrl) && filemtime($imageUrl) > filemtime($imageResized)) :

      $imageObj = new Varien_Image($imageUrl);
      $imageObj->constrainOnly ( true );
      $imageObj->keepAspectRatio ( true );
      $imageObj->keepFrame( false );
      $imageObj->quality( $quality );
      $imageObj->resize( $width, $height );
      $imageObj->save( $imageResized );
    endif;

    if(file_exists($imageResized)){
      return Mage::getBaseUrl( 'media' ) . "catalog" . DS . "category" . DS . "cache" . DS . "cat_resized" . DS . $this->getThumbnail();
    }else{
      return $this->getThumbnail();
    }
  }
}

Now you can call the the method $category->getResizedThumbnail() in your view.phtml

Eduroam Verbindungsabbrüche unter Linux beheben

Falls es zu ständigen Verbindungsabbrüchen unter Linux während einer Verbindung mit Eduroam kommt, kann dies durch Abschalten den n-Bandes behoben werden. Unter  /etc/modprobe.d/iwlagn.conf die Variable iwlagn 11n_disable auf 1 setzen.

TYPO3: Spamschutz bei Emails abschalten

Manch Kunde wünscht sich, dass die Email-Adressen ganz normal ausgegeben werden und einfach kopiert werden können. So wird der Schutz wieder abgeschaltet. Im setup Bereich des Templates folgendes eintragen:

config.spamProtectEmailAddresses = 0
config.spamProtectEmailAddresses_atSubst = @
config.spamProtectEmailAddresses_dotSubst = .

Magento: Add block to content area of home page

Go over the main menu to CMS -> Pages and open the home page. Then go to the tab “Design” and edit the code. The following example adds a block at the end of the content area.

<reference name="content">
  <block type="core/template" name="cms_name_of_the_block" template="page/widget/2columns.phtml">
  </block>
</reference>

Magento: Resize image

The original path is: path/to/magento/media/blog/<imagename>
The path of the resized image is: path/to/magento/media/blog/resized/<imagename>

public function resizeImg($fileName, $width, $height = null)
{

	$folderURL = Mage::getBaseDir(Mage_Core_Model_Store::URL_TYPE_MEDIA). DS .'blog'. DS;
	$basePath = $folderURL . $fileName;
	$newPath = $folderURL. 'resized' . DS . $fileName;
	$resizedURL = Mage::getBaseUrl('media') . 'blog' . DS . $fileName;;

	//if width empty then return original size image's URL
	if ($width != '') {
		//if image has already resized then just return URL
		if (file_exists($basePath) && is_file($basePath) && !file_exists($newPath)) {
			$imageObj = new Varien_Image($basePath);
			$imageObj->constrainOnly(TRUE);
			$imageObj->keepAspectRatio(FALSE);
			$imageObj->keepFrame(FALSE);
			$imageObj->resize($width, $height);
			$imageObj->save($newPath);
		}
		$resizedURL = Mage::getBaseUrl('media') . 'blog' . DS . "resized" . DS . $fileName;
	}
	return $resizedURL;
}

Magento: Spezielle JavaScript- oder CSS-Datei in einem bestimmten Store View laden

In seiner layout update xml Datei kann man folgende Tags verwenden. mm steht hierbei für den Store View Code:

<?xml version="1.0" encoding="UTF-8"?>
<layout>
    <default>
        ....
    </default>
    <STORE_mm>
      <reference name="head">
	<action method="addJs"><script>pfad/zur/datei-mm.js</script></action>
      </reference>
    </STORE_mm>
</layout>

Magento: Breadcrumb auf Home-Seite abschalten

magento_breadcrumbsDie Breadcrumb kann man auf einer bestimmten Seite, beispielsweise auf der Home-Seite, bequem mit folgendem Code im Seitenlayout abschalten:

<remove name="breadcrumbs" />

TYPO3: Weiße Seite

Sollte man mal nach einem Update des Kerns oder einer Extension vor dem Problem stehen, dass nur noch eine weiße Seite erscheint, dann IMMER in die log-Dateien des Servers schauen. Das gilt auch grundsätzlich für jedes PHP Programm. Immer wieder fragen Leute in Foren, was sie machen sollen. Nun, da Raten nun mal wenig Spaß macht, weil es unnötig Zeit benötigt ist es wesentlich effizienter einfach in die PHP Error Log zu schauen. Ihr Hoster hilft Ihnen da sicherlich weiter, wo diese zu finden ist.

Unter TYPO3 können Sie auch die Fehlerausgabe einschalten. Folgendes einfach in die typo3conf/localconf.php eintragen:

$TYPO3_CONF_VARS['SYS']['displayErrors'] = '1';

Oder ab TYPO3 Version 6.0 in der typo3conf/LocalConfiguration.php im SYS Bereich:

'displayErrors' => '1',

TYPO3 Formhandler: Vorname und Nachname zu einem Wert in der Email zusammenfügen

Werte von mehreren Feldern kann man bei der formhandler Extension mit den saveInterceptors. In meinem Beispiel gibt es zwei Felder mit den Keys “name” und “prename”. Folgenden Code auf die Ebene des validators einfügen:

saveInterceptors.1 {
  class = Interceptor_CombineFields
  config {
    combineFields {
      fullname {
        fields.1 = prename
        fields.2 = name
      }
    }
  }
}

Dann kann man auf das virtuelle Feld “fullname” zugreifen:

1.class = Finisher_Mail
1.config {
  checkBinaryCrLf = message
  admin {
    templateFile = TEXT
    templateFile.value = {$.....rootPath}/html/email-admin.html
    sender_email = ..........
    sender_name = fullname
    to_email = ........
    subject = TEXT
    subject.value = Kontakt via Website
  }
}