Как сделать мобильную версию сайта на битрикс?

80
20 сентября 2019, 18:10

Адаптив не предлагать. Есть задача сделать отдельную мобильную версию сайта на поддомене ( m.site.ru ) и чтобы посетитель мог с мобильной версии переходить на полную версию и обратно. Как это правильно осуществить? Я создал поддомен с названием m.site.ru и нагуглил два варианта:

  1. Создал папку в корне сайта с названием "m" скопировал весь проект и даже папку "bitrix", но не htaccess, и перекинул туда (чтобы потом через htaccess корневой папки редиректить человека который зашёл , и чтобы там уже править стили и структуру сайта под мобильную версию. Но конечно возникли проблемы так как index.php направляет все подключения header, footer и тд не в папку "m" , а директорией выше то есть в корень проекта. Отсюда вопрос как сделать чтобы стили и структура HTML брались из папки "m", но чтобы например товары которые создаются для десктопной версии появлялись и в мобильной и вообще правильно ли так делать?

  2. Второй вариант (это связано с type pda и php выражением) когда один шаблон, где лежит все и header и footer и тд , и лежит он в папке битрикс, просто копируешь его и переименовываешь и через php код выясняешь с какого устройств зашёл посетитель. Тут все просто если один шаблон и там идут все подключения , но у меня все разбросано по разным папкам и несколько шаблонов и лежат они в папке local/templates и ещё непонятно где. Как все это правильно организовать ? Может есть ещё какие нибудь варианты ? Подскажите правильный путь .

Answer 1

Перекидывать весь проект это нарушение лицензионного соглашения :) а самое главное совершенно не нужное действие утяжеляющее дальнейшую поддержку. Раз уж адаптив не предлагать то отсается два варианта реализации: 1. Непосредственно мобильная версия сайта. Битрикс позволяет использовать разные шаблоны сайтов. В админке их список доступен, и их можно дополнять. Распологаются они в специальном каталоге Точнее возможно в двух: - /bitrix/templates/ - раньше там размещали, также туда ставятся шаблоны устанавливаемые из маркетплейса и из коробки битрикс - /local/templates/ - рекомендуемое место размещения своих шаблонов сайтов.

Таким образом вам необходимо создать новый шаблон для мобильной версии. Как вариант скопировать текущий и доработать.

Тут стоит обратить внимание на шаблоны отдельных компонентов. Обычно они располагаются (если не стандартные шаблоны из поставки битрикс) в каталоге /путь_шаблона_сайта/components/разработчик/имя_компонента/имя_шаблона_компонента/. Если для отдельного компонента у вас используется один общий шаблон для всех шаблонов сайта, то его стоит перенести в общий каталог /local/templates/.default/components/разработчик/имя_компонента/имя_шаблона_компонента/ (именно перенести, а не копировать)

Далее необходимо создать функцию определяющую устройство в init.php. можно воспользоваться функцией АПИ. Вот пример.

function is_mobile() {
    CModule::IncludeModule("fileman");
    return CLightHTMLEditor::IsMobileDevice();
}

далее в Админке в настройках сайта, добавить мобильный шаблон в список шаблонов (до основного) и указать тип условия "Выражение PHP" занчение условия "is_mobile()"

  1. Создать мобильное приложение. Правда на это необходима отдельная лицензия.

Но нужно учитывать, что определение мобильного устройства, по сути идет по косвенным признакам, и вполне возможна ситуация, когда устройство не определиться как мобильное. По-этому лично я рекомендую своим клиентам адаптив. (да и долгосрочная стоимость поддержки дешевле)

READ ALSO
RedBeanPHP не создает таблицу

RedBeanPHP не создает таблицу

Только начал разбираться с RedBeanPHP, и на текущий момент не могу создать вторую таблицу посредством запроса R::dispense

109
Ошибка при регистрации. Ссылка устарела

Ошибка при регистрации. Ссылка устарела

Здравствуйте дорогие знатоки) Нужна помощьЕсть сайт ( соц сеть) при регистрации приходит ссылка на email по которой нужно перейти, но часто пишет...

76
Многоуровневая ajax-форма Drupal 8

Многоуровневая ajax-форма Drupal 8

Начал изучать сие чудо (Drupal 8) и не могу найти нормальную информацию как писать сложные модули на нёмНачал писать модуль в виде формы

87
Codeigniter Fatal error: Class 'CI_Controller' not found

Codeigniter Fatal error: Class 'CI_Controller' not found

Пытаюсь вызвать session или модель в system/core/Commonphp Для этого мне сначала необходимо загрузить экземпляр класса CI_Controller

99