Frage

Ich poste dies für Kommentare zum Fehler und um jedem zu helfen, der das gleiche Problem hat. (Antwort von mir selbst gepostet)

Wenn Sie den WYSIWYG -Editor verwenden und Bilder einfügen, zeigt der Image Manager die Miniaturbilder nicht an.

Betrachten Sie die von Magento erzeugte Bild -URL Ich kann sehen, dass der URL das / wysiwyg / portion fehlt

http: //site.domain/media//.thumbs/ex_logo_sm.jpg? rand = 1392103618

Es sieht nur fehlend aus, wie vom Doppel // in der URL zur Kenntnis genommen wird

War es hilfreich?

Lösung

Wenn ich den Code verfolgt, sieht es mir aus, dass in der Helferroutine in der Helfer -Routine fehlt Mage_Cms_Helper_Wysiwyg_Images::getBaseUrl()

Die Routine ist als solche:

public function getBaseUrl()
    {
        return Mage::getBaseUrl('media') . '/';
    }

und die Änderung zu

public function getBaseUrl()
    {
        return Mage::getBaseUrl('media') . Mage_Cms_Model_Wysiwyg_Config::IMAGE_DIRECTORY . '/';
    }

Behebt das Problem.

Dies wird von genannt Mage_Cms_Model_Wysiwyg_Images_Storage::getThumbnailUrl()

return str_replace('\\', '/', $this->getHelper()->getBaseUrl() . $thumbSuffix) . $randomIndex;

was eindeutig die falsche URL ohne die Konstante ausgibt.

Andere Tipps

Wir hatten das gleiche Problem auf einer Kundenwebsite, es gab tatsächlich einige Elemente im Spiel, und ich kann wahrscheinlich eine Erklärung darüber geben, wie das nicht existierende Bildproblem triggte, obwohl es anscheinend nicht möglich sein sollte:

  1. Das Problem, wie oben beschrieben media/wysiwyg/.thumbs/image.jpg, im Gegensatz zum richtigen Ort von media/wysiwyg/.thumbs/wysiwyg/image.jpg, und wenn vorhanden ein Link zur falschen URL von angezeigt wird http://example.com/media//wysiwyg/.thumbs/image.jpg FD

  2. Wir hatten AppSec-212 installiert, was die Verwendung von eingeführte realpath() Um ein Sicherheitsproblem zu entfernen, die Kombination von dieser und die Verwendung eines Symlinks auf unserem media Verzeichnis verursachte Mage_Cms_Model_Wysiwyg_Images_Storage::getThumbsPath() ein Verzeichnis von zurücksenden media/wysiwyg/.thumbs, im Gegensatz zu media/wysiwyg/.thumbs/wysiwyg - Der Grund dafür ist, dass diese Methode eine bedingte Überprüfung durchführt realpath() und als solche kehrte nicht 0 für die zurück strpos() Überprüfen Sie die folgende Überprüfung, Zeile 6:

    public function getThumbsPath($filePath = false)
    {
        $mediaRootDir = Mage::getConfig()->getOptions()->getMediaDir();
        $thumbnailDir = $this->getThumbnailRoot();
    
        if ($filePath && strpos($filePath, $mediaRootDir) === 0) {
            $thumbnailDir .= DS . dirname(substr($filePath, strlen($mediaRootDir)));
        }
    
        return $thumbnailDir;
    }
    
  3. Dies ist für uns einzig Alles in .thumbs

Das Problem, das wir erlebt haben, besteht immer noch in 1.9.1.0 (die neueste Version zum Zeitpunkt des Schreibens) - ich werde niemanden annehmen .thumbs Verzeichnis, es war nur mit der Einführung von AppSec-212, kombiniert mit einem symlyten media Verzeichnis, das dazu führte, dass die Daumendateien an dem falschen Ort generiert wurden, wodurch der fälschlicherweise überprüfte Pfad die Rückgabe von True und für uns anschließend 404 auf unseren Bildern angezeigt wurde.

Lustigerweise hätte AppSec-212 das Problem behoben media Verzeichnis.

Hier sind übrigens unsere Modifikationen:

In App/Code/Core/Mage/CMS/Helper/Wysiwyg/Images.php:

@@ -89,7 +89,7 @@ public function getStorageRoot()
      */
     public function getBaseUrl()
     {
-        return Mage::getBaseUrl('media') . '/';
+        return Mage::getBaseUrl('media') . '/' . Mage_Cms_Model_Wysiwyg_Config::IMAGE_DIRECTORY . '/';
     }

     /**

In App/Code/Core/Mage/CMS/Modell/Wysiwyg/Images/Storage.php:

@@ -336,7 +336,7 @@ public function getThumbnailUrl($filePath, $checkFile = false)
         $mediaRootDir = $this->getHelper()->getStorageRoot();

         if (strpos($filePath, $mediaRootDir) === 0) {
-            $thumbSuffix = self::THUMBS_DIRECTORY_NAME . DS . substr($filePath, strlen($mediaRootDir));
+            $thumbSuffix = self::THUMBS_DIRECTORY_NAME . DS . substr($filePath, strlen(realpath(Mage::getConfig()->getOptions()->getMediaDir())));

             if (! $checkFile || is_readable($mediaRootDir . $thumbSuffix)) {
                 $randomIndex = '?rand=' . time();
@@ -405,8 +405,8 @@ public function resizeOnTheFly($filename)
      */
     public function getThumbsPath($filePath = false)
     {
-        $mediaRootDir = Mage::getConfig()->getOptions()->getMediaDir();
-        $thumbnailDir = $this->getThumbnailRoot();
+        $mediaRootDir = realpath(Mage::getConfig()->getOptions()->getMediaDir());
+        $thumbnailDir = realpath($this->getThumbnailRoot());

         if ($filePath && strpos($filePath, $mediaRootDir) === 0) {
             $thumbnailDir .= DS . dirname(substr($filePath, strlen($mediaRootDir)));

Es kommen tatsächlich mehrere Fehler zusammen.

Standardmäßig scheint Magento die Daumen im Verzeichnis zu retten media/wysiwyg/.thumbs/wysiwyg/. Aber Mage_Cms_Model_Wysiwyg_Images_Storage::getThumbnailUrl() sucht nach dem Daumen in media/wysiwyg/.thumbs/.

Der Fehler wird nur ausgelöst, wenn sich ein Daumen befindet media/wysiwyg/.thumbs/. Ich konnte nicht herausfinden, unter welchen Bedingungen ein Daumen im falschen Verzeichnis gerettet wird. Aber zumindest erklärt es, warum nur einige Server dieses Problem zeigen.

Zusätzlich zu dem, was Proxiblue sagte, Sie müssen sich ändern Mage_Cms_Model_Wysiwyg_Images_Storage::getThumbnailUrl() aus

public function getThumbnailUrl($filePath, $checkFile = false)
{
    $mediaRootDir = $this->getHelper()->getStorageRoot();

    if (strpos($filePath, $mediaRootDir) === 0) {
        $thumbSuffix = self::THUMBS_DIRECTORY_NAME . DS . substr($filePath, strlen($mediaRootDir));

        if (! $checkFile || is_readable($mediaRootDir . $thumbSuffix)) {
            $randomIndex = '?rand=' . time();
            return str_replace('\\', '/', $this->getHelper()->getBaseUrl() . $thumbSuffix) . $randomIndex;
        }
    }

    return false;
}

zu

public function getThumbnailUrl($filePath, $checkFile = false)
{
    $mediaRootDir = Mage::getConfig()->getOptions()->getMediaDir() . DS;

    if (strpos($filePath, $mediaRootDir) === 0) {
        $thumbSuffix = self::THUMBS_DIRECTORY_NAME . DS . substr($filePath, strlen($mediaRootDir));

        if (! $checkFile || is_readable($this->getHelper()->getStorageRoot() . $thumbSuffix)) {
            $randomIndex = '?rand=' . time();
            return str_replace('\\', '/', $this->getHelper()->getBaseUrl() . $thumbSuffix) . $randomIndex;
        }
    }

    return false;
}

Vorzugsweise durch Einrichten eines Moduls und nicht durch Überschreiben der Kerndatei.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top