0

私のサイト「site.xyz.com」は、クライアントのメイン Web サイト「abc.com」に iframe されています。クライアントは、iframe に読み込まれる私のサイトのモバイル バージョンを持ちたいと考えており、サイトのモバイル バージョンを表示する必要があるユーザーを決定したいと考えているため、site.xyz.com/mobile のようなリンクを要求しました。モバイル サイトを読み込みます。

私のサイトはすでに CodeIgniter で構築されており、サーバーで .htaccess は許可されていません。モバイル サイトの HTML は似ていますが、サイズと画像は少し異なります。そのため、同じ MVC 構造を使用する予定ですが、モバイル サイト用に別のスタイルシートを使用する予定です。モバイル サイトかどうかは確認しませ。site.xyz.com/mobile にアクセスすると、モバイル バージョンが表示されます。

試してみ$route['mobile/(:any)'] = '$2';ましたが、使用しているコードでは、base_url()site.xyz.com/mobile/products の代わりに site.xyz.com/products がエコーされます。閲覧者がサイトのデスクトップ バージョンとモバイル バージョンのどちらを見ているかを判断することも重要です。

セッション/クッキーに依存して、これらの変数に基づいてスタイルシートを設定する予定はありません。今後の訪問が問題になる可能性があります。

非常にシンプルに見えますが、正しいアイデアが得られません...これを機能させるためのヒントはありますか?

4

2 に答える 2

1

ユーザーがモバイルサイトを表示しているかどうかを検出する独自のbase_url()関数を作成するには、そのページの表示に使用されたURLをチェックして、何uri_string()が返されるかを確認します。

内部application/helpers/url_helper.php

if ( ! function_exists('base_url'))
{
    /**
     * Base URL
     *
     * Create a local URL based on your basepath.
     * Segments can be passed in as a string or an array, same as site_url
     * or a URL to a file can be passed in, e.g. to an image file.
     *
     * @param   string
     * @return  string
     */
    function base_url($uri = '')
    {
        $currentUri = uri_string(); // Get current URI 
        $currentUri = rtrim($currentUri,'/').'/'; // make sure $uri ends in a '/'
        // If the string begins with 'mobile/', 
        // prepend it to the given array/string
        if(strpos($currentUri,'mobile/') === 0)
        {
            if(is_array($uri)))
                array_unshift($uri,'mobile');
            else
                $uri = 'mobile/'.$uri;
        }

        $CI =& get_instance();
        return $CI->config->base_url($uri);
    }
}
于 2013-03-13T19:26:59.117 に答える
0

これを行うための可能な (完全にきれいではない) 方法は、コントローラー フォルダーに「mobile」というサブフォルダーを作成することです。その後、基本的にすべてのコントローラーをそのディレクトリにコピーし、モバイル サイトに合わせてパス/ロジックを変更できます。

CodeIgniter の docsによると、コントローラーがサブフォルダーにある場合、ルートは *base_url/subfolder/controller/method* としてレンダリングされます。テンプレートを使用している場合は、通常のサイトと同じビューをロードし、mobile フォルダー内のコントローラーに mobile_template.php をロードするだけで済みます。

思っていたよりも多くの作業が必要なように思えますが、CSS ファイルを変更するだけでなく、モバイル サイトに対してさらに多くの作業を行う必要があるでしょう。

于 2013-03-13T18:17:30.013 に答える