как автоматически загружать мобильные шаблоны по агенту в codeigniter? - PullRequest
3 голосов
/ 02 июня 2011
dir:
application
 -controllers 
 -models
 -views
 -mobile_views

Как автоматически загружать шаблоны на mobile_views, когда я использую $this->load->view и просматривать с помощью iphone или другого мобильного телефона?

Ответы [ 3 ]

1 голос
/ 02 июня 2011

Отметьте это

Вы можете сделать это двумя способами.Способ 1: это очень просто.В ответе выше (ссылка, которую я дал) добавьте следующую строку в конце MyController function

$this->load->_ci_view_path  . = $this->view_type .'/';

Все готово.Вы можете просто загрузить представление как обычную загрузку представления.

Способ 2: Для автоматической загрузки представления, основанного на пользовательском агенте, я думаю, что вы можете реализовать его с помощью хуков.Для реализации этой ловушки необходимо выполнить следующие шаги

  1. Автозагрузка библиотеки пользовательских агентов в autoload.php

    $ autoload ['library'] = array ('user_agent');

  2. Включить хуки в config.php

    $ config ['enable_hooks'] = TRUE;

  3. Не реализованозацепляет post_controller_constructor.Добавьте следующие коды в hooks.php

    $ hook ['post_controller_constructor'] [] = array ('class' => 'Loadview', 'function' => 'load', 'filename' => 'loadview.php ',' filepath '=>' hooks ');

  4. Теперь создайте страницу с именем loadview.php в каталоге hooks, имеющую следующий код

class Loadview
{

    public static $MOBILE_PLATFORM = 'mobile';
    public static $DEFAULT_PLATFORM = 'default';

    public function load(){
        $this->CI =& get_instance();
        $view_type = $this->CI->agent->is_mobile() ? self::$MOBILE_PLATFORM : self::$DEFAULT_PLATFORM;
        $this->CI->load->_ci_view_path = $this->CI->load->_ci_view_path . $view_type .'/';
    }

}
Вы закончили.Вы можете просто загрузить вид как обычный вид загрузки.
0 голосов
/ 02 июня 2011

Я делаю это в моем контроллере:

public function index()
{   
    if($this->agent->is_mobile())
    {
        $this->load_mobile();   
    }   
    else
    {
        $this->load_web();
    }
}

public function load_mobile()
{
    $this->load->view('mobile/home');
}

public function load_web()
{
    $this->load->view('web/home');
}

Таким образом я могу добавлять разные данные на мобильные и веб-страницы.

Я также расширяю контроллер по умолчанию и добавляю некоторые полезныедополнительные функции:

  • Включает использование главной страницы / шаблонов.
  • Может добавлять файлы CSS и JavaScript.
  • Использует метод _output для управления выводом контроллеров.
  • Может загружать относительный контент в виде модулей (представлений)

Так что я могу лучше управлять различными страницами.

Пока !!

0 голосов
/ 02 июня 2011

для загрузки просмотров из другого каталога, кроме "views", я нашел эту тему форума полезной

http://codeigniter.com/forums/viewthread/132960/

function external_view($path, $view, $vars = array(), $return = FALSE)
    {
        $full_path = $path.$view.'.php';
        if (file_exists($full_path)) 
        {
            return $this->_ci_load(array('_ci_path' => $full_path, '_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));
        }
        else
        {
            show_error('Unable to load the requested module template file: '.$view);
        }
    } 

, а остальное вы можете работать с контроллера.

...