2012-04-15 5 views
1

私は自分の考えではなく、他のソースを書いているスクリプトを持っています。これを動作させる必要があるのは、opencartがトップクラスのWebショップ機能を処理できるようにするために、opencartインストールの最上部にdrupalトップメニューを置くことです。Drupalメニューの印刷キャッシュを助け、絶対パスへのリンクの相対パスを変換するのを助ける必要があります

問題は、スクリプトからキャッシュファイルに出力するメニューが相対URLを使用していることです。これはもちろん、メニューがサブドメイン上にあるopencartに必要な場合、パスはサブドメインのパスを示します。良くない。

EDIT:わかりました。コードがうまく動作していましたが、しばらく混乱していました。すべての$コンテンツと$コンテンツはどこにでもあります。下のコードをどのように変更するか時間間隔を1秒に変更する必要がありました。それ以外の場合、Drupalページは非常に奇妙な動作をしました。お店のメニューは変更would't以来

<?php 
    $cache_time = 1; // Time in seconds to keep a page cached 
    $cache_folder = 'cache'; // Folder to store cached files (no trailing slash) 
    $cache_filename = $cache_folder.md5($_SERVER['REQUEST_URI']); 
    // Location to lookup or store cached file 
    //Check to see if this file has already been cached 
    // If it has get and store the file creation time 
    $cache_created = (file_exists($cache_file_name)) ? filemtime($cache_filename) : 0; 

    if ((time() - $cache_created) < $cache_time) { 
    readfile($cache_filename); 
    // The cached copy is still valid, read it into the output buffer 
    die(); 
    } 
?> 

<?php ob_start(); // Turns on output buffering ?> 
<?php $contents = ob_get_contents(); ?> 
<!-- //Stores the contents of the buffer in a variable as a string --> 

<?php if ($page['header_menu']): ?> 
<div id="header-menu-wrapper"> 
<div id="header-menu"> 
<?php print render($page['header_menu']); ?> 
</div> 
</div> 
<?php endif; ?> 

<?php 
    $contents = ob_get_contents(); 
    $contents = str_replace('href="','href="http://yourdomain.com', $contents); 
    file_put_contents($cache_filename, $contents()); 
    ob_end_flush(); 
?> 

また、それ以外の場合はあまり良くないだろう、常に同じファイル名に書き込まれ、キャッシュされたファイルを取得することができることは素晴らしいことだときのDrupal変更が新しいファイル名になるので、メニューが表示されます。

Drupalと絶対パスに関して他の質問がありましたが、私は十分理解していないか、該当しません。

答えて

1

きっとあなただけのドメインを入れて、URLの問題のためにstr_replace()を使用することができます。あなたはそれを本当に技術的な取得したい場合は、スクリプトの終わりに向かって

<?php 
$content = ob_get_contents(); 
$content = str_replace('href="','href="http://yourdomain.com/', $content); 
file_put_contents($cache_filename, $content); 
ob_end_flush(); 
?> 

を持っているので、あなたがそれを行うことができます正規表現、あるいはDOM文書ではなく、キャッシュ用として

を十分です、あなたが与えてくれたような状況のために、あなただけopencarts /system/cache/フォルダにcache.unique-key.timeとして保存した後、

を呼び出す必要がありますそれは偽/空でないかどう

と印刷$menu_var、そうでない場合は発生して

+0

SWEET![OK]を、私は、コードが動作し、絶対パスを取得していました。どうもありがとうございました:)ユニークキーなどのこと、オープンカートがどこに来るのかは分かりません。キャッシュファイルはdrupalインストールのルートに保存されており、opencartで使用するテーマにキャッシュファイルが必要です。ですから、私は実際のキャッシュファイルをインポートする以外に、opencartを使って何かもっとやろうとはしていません。それで、私がする必要があるのは、それがdrupalのルートに常に同じ名前であり、それが上書きされることを確認することです。もう一度、助けのための高山:) – user1334233

+0

ああ私が参照してください。問題ない。これが解決されたら、私の答えの隣のTickをクリックしてください:) –

+0

私はクリックしましたが、私の評判は存在しないので私はそれを投票することはできません。それとも、クリックする何かを意味しましたか? – user1334233

関連する問題