Добавление контента в статические файлы (страницы) - PullRequest
0 голосов
/ 26 ноября 2010

У меня есть несколько статических файлов (страниц), которые в основном являются копиями исходного кода страниц моего сайта, с измененным содержимым.

Эти файлы поддерживают мой веб-сайт (в одном и том же формате) различными способами.

Например, часть меню: -

<body>

<div id="menu">

<ul class="level1" id="root">
etc
etc. until
</ul>
    </div>

К сожалению, каждый месяц или около того меняется строка меню, и мне приходится обновлять каждый статический файл вручную. Поскольку у каждого из моих статических файлов есть то же самое меню.

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

Я планирую иметь еще несколько статических файлов. Так что это было бы очень полезно, если бы кто-то мог подсказать, как этого добиться.

Ответы [ 3 ]

0 голосов
/ 26 ноября 2010

Одним из решений может быть использование паука (wget --recursive) для загрузки сгенерированных страниц прямо из вашего приложения.Одна команда, и у вас есть полная копия вашего сайта.(просто добавьте несколько полезных опций, например, --convert-links).

Другой вариант может заключаться в записи after_filter в ваш контроллер и записи сгенерированного контента в файл (не всегда, нонапример, когда вы добавляете параметр? refresh_copy = 1).Может быть, было бы целесообразно просто включить кэширование страниц?Но проблема будет в том, что вы не сможете так легко запустить действие контроллера.

Если вы не хотите, чтобы весь сайт копировался, просто добавьте несколько определенных маршрутов или контроллеров (/ mirrorable / ...) и запустите на них паука или просто получите к ним доступ вручную (чтобы активировать сохранение содержимого в файлах).

0 голосов
/ 01 декабря 2010

В итоге я создал один контроллер без модели.

 rails g controller staticpages

Затем я создал файл макета, который импортировал отдельные изменения в макет через «yield», связанный с «content_for» в файлах представления (статические файлы (страницы) в «представлении статических страниц» (например, сокращения , об этом и т. д.).

Остальная часть статического файла загружается с обычным «yield» в макете. Работает угощение. Больше не нужно обновлять строку меню, все делается автоматически.

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

match 'static/:static_page_name'=> 'staticpages#show' (or in rails 2.x:-
map.connect 'static/:static_page_name', :controller=> "staticpages", :action=> "show"

Переменная «static_page_name» приняла что-либо после «/ static /» в URL и передала его в контроллер «staticpages», в котором я настроил действие show, содержащее: -

def show
 @static_page_name = params[:static_page_name]
 allowed_pages = %w(abbreviations aboutthissite etc, etc,)
 if allowed_pages.include?(@static_page_name)
   render @static_page_name
 else
   redirect_to '/'                      #redirects to homepage if link does not exists
 end

конец

Мне тогда оставалось только изменить ссылки на сайте. (например, <% = link_to "Об этом сайте", "/ static / aboutthissite"%>)

и альт! все работает.

0 голосов
/ 26 ноября 2010

О да. Используйте магию javascript для загрузки строки меню при загрузке страницы и сохранения ее в menu.html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...