Лучший способ настроить мой сайт при просмотре через фреймы? - PullRequest
0 голосов
/ 18 июня 2011

У меня есть сайт, на котором пользователям необходимо получить доступ к нашему материалу двумя способами:

  1. с самого сайта
  2. из фреймов, встроенных в другой сайт

Мой сайт очень хорошо справляется с задачей № 1, и сейчас я пытаюсь расширить его функциональность до встроенных фреймов.По сути, мне нужно избавиться от верхнего колонтитула сайта и нижнего колонтитула сайта, а также изменить некоторые CSS для каждой страницы, отображаемой в iframe (пользователи должны иметь возможность перемещаться по нескольким страницам с помощью этого iframe).

При попытке использования тега <iframe> мой сайт отображается так, как обычно, с отображением строки заголовка, нижнего колонтитула и т. Д. Внутри iframe.

Каков наилучший способ предоставления пользователям возможности навигациимой сайт при изменении макета и CSS?

Ответы [ 2 ]

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

Вы можете определить, просматривается ли страница из iframe через Javascript, добавив это в событие "domready" (зависит от фреймворка):

var isInIFrame = (window.location != window.parent.location) ? true : false;

Оберните поврежденные области в контейнеры и display=none; вещи, которые вы хотели бы скрыть при доступе через iframe.

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

Я бы сделал другой макет для страниц iframe, например, app/views/layouts/iframe.html.erb, который не имеет ваших обычных верхних и нижних колонтитулов, может иметь другой CSS и т. Д.

Тогда вам просто нужно заставить действия контроллера использовать этот макет при рендеринге, в зависимости от ситуации. Вы можете сделать это, если вы вызываете render явно, например:

render "show", :layout => "iframe"

Но, вероятно, проще установить его на уровне контроллера:

class SomeController < ApplicationController
    layout "iframe", :only => "show"
end

Вы также можете поместить свою логику для выбора правильного макета (что бы это ни было - я предполагаю, что это не главное в вопросе) в метод:

class SomeController < ApplicationController
    layout :current_layout

private
    def current_layout
        # Return the correct layout for the current request.
        params[:iframe] ? "iframe" : "application"
    end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...