opencart画像読み込み処理時にlazylaod jqueryプラグインを使用したいのですが
Webサイトのフロントエンドは表示されるのですが、バックグラウンドで読み込みを行うと2つ見つかり、バックグラウンドで編集した商品の画像が表示されません。表示されます。
バックグラウンドで手動で商品を追加することなく、クローラーを使用して自動的に商品を入力しているためです。つまり、画像を表示するためのlazyload処理を行う際に、src data-data-original width height属性が一括生成されるため、背景表示は見えませんが、review要素は見えます。
PHPはこんな感じで追加すると以下のように再現できます:
<code>foreach (xx as x){ $imgs.='<img src="image/catalog/lazyload_grey.gif" data-original='.$tmp.'image/catalog/product/'.$id."/".$value.' width="800" height='800'>'; } </code>
その時、バックグラウンドのコントローラーの正規表現を置き換えれば良いのではないかと思い試してみたところうまくいきました。ただし、製品がアップデートされると上書きされます。
よく考えてみると、jsやob関数を使ってフロント経由で処理した方が良いです。
私はこれら 2 つのどちらにも対処したことがありませんが、今でも自分のアイデアを記録し、Web サイトに本当に最適化が必要になるまで待ってから具体的な行動を起こします。
以下は ob 関数の小さな例です:
<code><?php ob_start(); echo '13712345678'; echo 'another content<br>'; $result=ob_get_contents(); echo '<hr>'; ob_clean(); if(preg_match('/\d{11,}/', $result,$match)){ echo str_replace(substr($match[0],-4),'****',$match[0]); }else{ echo 'no match'; } ob_end_flush(); // result:1371234**** </code>
私はこれに対処したことがなく、どちらの方法もあまり良くないと感じています。画像の遅延読み込みなどの遅延読み込みが発生したときに、フロントエンドとバックエンドが一貫して表示されない問題に対処するための方法やアイデアをさらに提供していただければ幸いです。
参考サイト:
ob関数がlazyloadを処理する
lazyload
以上、obstart のちょっとした使い方を内容も含めて紹介しましたが、PHP チュートリアルに興味のある友人の参考になれば幸いです。