ক্যাশে ইউআরএল থেকে আসল চিত্র ফাইলটি পান


33

এমন কোনও ফাংশন আছে যা ক্যাশে চিত্রের পণ্যের ফাইলটিকে আসলটি ফেরত দেয়?

উদাহরণ:

=> ক্যাশে ইউআরএল:

{BASEURL}/media/catalog/product/cache/2/image/9df78eab33525d08d6e5fb8d27136e95/a/l/IMAGE.jpg

=> পছন্দসই ফলাফল:

BASEURL/media/catalog/product/a/l/IMAGE.jpg

উত্তর:


74

আপনি যে চিত্রটির URL দিয়েছেন তা ম্যাগেন্টো স্টোরের সাথে থাকা অসম্ভব। আমি অনুমান করছি আপনি এটি নিরবচ্ছিন্ন হতে চেয়েছিলেন, কিন্তু এটি করার ক্ষেত্রে উত্তর দেওয়া অসম্ভব হয়ে পড়েছে।

আপনি অন্য কোনও ওয়েবসাইটকে ওয়েব-স্ক্র্যাপিং না করা পর্যন্ত চিত্রের পথটি নির্মান করার কোনও কারণ আমি ভাবতে পারি না, অন্যথায়, আপনার কাছে পণ্য মডেলটিতে সরাসরি অ্যাক্সেস থাকতে পারে এবং সরাসরি এই তথ্যটি আনতে পারতেন।

তবুও, একটি বাস্তব উদাহরণ ব্যবহার করে। যেমন

/media/catalog/product/cache/1/image/9df78eab33525d08d6e5fb8d27136e95/m/e/me-d1_2.jpg

ক্যাশে চিত্রের পাথ নির্মাণ করছে

/media/catalog/product/cache/1/image/9df78eab33525d08d6e5fb8d27136e95/m/e/me-d1_2.jpg
|___________________________|_|_____|________________________________|_|_|__________|
             |               |   |                  |                 | |     |
       Cache Directory       |   |                  |                 | |     |
Mage/Catalog/Model/Product/Media/Config.php         |                 | |     |
getBaseMediaPath()           |   |                  |                 | |     |
                             |   |                  |                 | |     |
                             |   |                  |                 | |     |
                          Store ID                  |                 | |     |
                          Mage::app()->getStore()->getId()            | |     |
                                 |                  |                 | |     |
                                 |                  |                 | |     |
                            Subdirectory            |                 | |     |
                            Mage/Catalog/Model/Product/Image.php      | |     |
                            getDestinationSubdir()  |                 | |     |
                                                    |                 | |     |
                                                    |                 | |     |
                                              MD5 of Image Params     | |     |
                                              See below               | |     |
                                              Mage/Catalog/Model/Product/Image.php
                                              Line +324               | |     |
                                                                      | |     |
                                                                      | |     |
                                                          First letter of Image Name
                                                                        |     |
                                                                        |     |
                                                          Second letter of Image Name
                                                                              |
                                                                              |
                                                                     Original Image Name

মূল চিত্রটি সনাক্ত করা হচ্ছে

যদি ম্যাজেন্টো প্রশাসকের মাধ্যমে আপলোড করা হয় তবে মূল চিত্রটি এখানে অবস্থিত,

/media/catalog/product/m/e/me-d1_2.jpg

সুতরাং মূল URL পাওয়া খুব সহজ, কেবল ক্যাশে ডিরেক্টরি পথ এবং হ্যাশ সরিয়ে দিন।

অর্থাৎ। অপসারণcache/1/image/9df78eab33525d08d6e5fb8d27136e95/

সুতরাং

/media/catalog/product/cache/1/image/9df78eab33525d08d6e5fb8d27136e95/m/e/me-d1_2.jpg

হয়ে

/media/catalog/product/m/e/me-d1_2.jpg

যদি ডেটাফ্লো / আমদানির মাধ্যমে আপলোড করা হয় তবে মূল চিত্রটি এর মধ্যে অবস্থিত

/ মিডিয়া / আমদানি

তবে এর বাইরে অনুমান করা হবে। তবে লোকে আমদানির জন্য তাদের আপলোড ডিআইআরটি ফর্ম্যাট করতে চায় তাদের উপর নির্ভর করে এবং চিত্রগুলি যে সাব-ডাইরেক্টরিতে থাকে তা সত্যিই প্রাসঙ্গিক নয় - কারণ তারা আপলোড করার সময় চিত্রটির আপেক্ষিক পথ সরবরাহ করে।

এমডি 5 হ্যাশ সম্পর্কে কিছুটা

($this->_keepAspectRatio  ? '' : 'non') . 'proportional',
($this->_keepFrame        ? '' : 'no')  . 'frame',
($this->_keepTransparency ? '' : 'no')  . 'transparency',
($this->_constrainOnly ? 'do' : 'not')  . 'constrainonly',
$this->_rgbToString($this->_backgroundColor),
'angle' . $this->_angle,
'quality' . $this->_quality,

জলছবি থাকলে Oচ্ছিক আরোগুলি

$this->getWatermarkFile(),
$this->getWatermarkImageOpacity(),
$this->getWatermarkPosition(),
$this->getWatermarkWidth(),
$this->getWatermarkHeigth()

md5(implode('_', $miscParams));

উদাহরণস্বরূপ, খেলাপি সঙ্গে

md5('non_no_no_not_ffffff_0_90')

md5হ্যাশ সমগ্র সাইট জুড়ে একই হতে পারে - প্রতি ইমেজ জন্য, কিন্তু আপনি তা থেকে তৈরী করা মান জিনিসটা করার প্রয়োজন হবে। আপনি এটি তুলনামূলকভাবে সহজে জোর করতে পারে।

এটি হ্যাশের জন্য ডিফল্ট ম্যাজেন্টো মান

9df78eab33525d08d6e5fb8d27136e95

বৈশিষ্ট্য: Sonassi.com


3
অবশ্যই আপনার কাছে
অসি

6
এলএল - আমি কাউকে আসকি শিল্পের বিষয়ে মন্তব্য করার জন্য অপেক্ষা করছিলাম :) এটি সার্থক করে তোলে যে এটি আঁকতে / টাইপ করতে 10 মিনিট সময় নেয়! স্পষ্টতই আমরা বেসরকারীভাবে Magento-1 ডকুমেন্টেশন উত্তরটি উত্তর দিয়ে পোস্ট করছি।
বেন লেসানী - সোনাসি

1
সোনাসি, আমার ধারণা নেই, আপনার সময়টি কোথা থেকে এসেছে তবে আপনি সম্প্রদায় এবং আমাদের সকলের জন্য একটি বড় জয় are
ফ্যাবিয়ান ব্ল্যাচসমিড

এটি আমার পক্ষে খুব কার্যকর ছিল এবং আমি যা পড়েছি তার মধ্যে অন্যতম সেরা উত্তর। ধন্যবাদ!
LeCodeur

8

সংক্ষিপ্ত উত্তর - না। ক্যাশে চিত্র url এর উপর ভিত্তি করে বেস চিত্রটি ফেরত দেওয়ার কোনও পদ্ধতি নেই। তবে, আপনি যদি ক্যাশে ফোল্ডার এবং হ্যাশটি সরিয়ে ফেলেন তবে URL টি কী হবে তা অনুধাবন করতে সক্ষম হওয়া উচিত, যেমন:

 http://www.mysite.com/media/catalog/product/cache/1/image/109x298/9df78eab33525d08d6e5fb8d27136e95/u/t/uti001_2.jpg

উপসর্গ ত্রি পর্যন্ত পণ্য পরে সমস্ত অপসারণ (এই ক্ষেত্রে, অপসারণ cache/1/image/109x298/9df78eab33525d08d6e5fb8d27136e95/:

 http://www.mysite.com/media/catalog/product/u/t/uti001_2.jpg

সম্ভবত এটির সাথে সম্পর্কিত আরও ভাল উপায় হ'ল অবজেক্ট মডেলটি ব্যবহার করা:

$product = Mage::getModel('catalog/product')->load(42);
echo $product->getImage();
echo $product->getThumbnail();

5

এইটা কাজ করে

   $r = explode('/' ,$imagesCachePath);

   unset($r[6]);
   unset($r[7]);
   unset($r[8]);
   unset($r[9]);

   $r = implode('/',$r);

এটি সম্ভবত সেরা পদ্ধতির নয় তবে এটি কাজ করে। ডাউনভোট কেন?
ফ্রেগ

যদি ফাইলনেমে চিত্রের মাত্রা থাকে তবে এটি সূচকগুলি অফসেট করে দেবে না, তবে এটি কি অসঙ্গতিপূর্ণ ফলাফল তৈরি করবে না?
এরিক সাস্টার্যান্ড

4

ইন list.phtml, এটি আমার পক্ষে কাজ করেছিল:

echo Mage::getModel('catalog/product_media_config')->getMediaUrl( $_product->getSmallImage()); 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.