Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Работа с фреймами.

00 голосов
6
На сайте есть два плавающих фрейма.
Один - новости.
Вопрос: нужно сделать файл
(например: news.php) который будет выводить только список последних новостей (или какой-нибудь информ-блок). Так как он в плавающем фрейме, то хэдер и футэр ему не нужен.

Ответы типа: "Не использовать плавающие фреймы" не надо. я знаю как это сделать без фреймов.
спросил 23 Окт, 13 от Abezian (120 баллов)

6 Ответы

00 голосов
Мы в принципе не против. :D

А в чем возникли сложности ?
ответил 20 Ноя, 13 от Kania (5,180 баллов)
00 голосов
:) Быстро работаете. Воскресение все-таки:)
Вообщем дело такое:
Я в /bitrix/php_interface/ru/ сделал свои prolog_main.php and epilog_main.php.

Ок. Теперь у меня в /ru/ есть index.php.
Смотрим в него:
<?
# $id: /ru/index.php

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

define("IS_MAIN_PAGE", "Y");

$APPLICATION->SetTitle("Some title");

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_after.php");

?><!-- вот тут контент страницы. Здесь стоят плавающие фреймы. --><iframe scrolling="auto" width="100%" height="100%" frameborder="0"

src="/<?=LANG?>/gallery.php"

marginheight="0" marginwidth="0" ></iframe>

<?
if(!$USER->IsAuthorized()) require($_SERVER["DOCUMENT_ROOT"].LANG_DIR."auth_hint.php");
//require($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/ru/catalog/main_include.php");
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog.php");
?>

И если я сделаю в gallery.php так:
<?
#
# $id: gallery.php
#
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/ru/prolog_simple.php"); // вот это вот я хочу включить простой хедер, но в prolog_before.php все объявления классов.

define("IS_MAIN_PAGE", "N");

//$APPLICATION->SetTitle("Пробная версия продукта «Битрикс: Управление сайтом 3.x»");

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_after.php");
?>
<!-- Контент -->
<?
if(!$USER->IsAuthorized()) require($_SERVER["DOCUMENT_ROOT"].LANG_DIR."auth_hint.php");
//require($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/ru/catalog/main_include.php");
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog.php");
?>

то у меня конечно же появятся хедер и футер основного сайта.

И вот вопрос:в триал версии файл /bitrix/modules/main/include/prolog_before.php зашифрован. И я не могу сделать простой хедер.

Вообщем. Что можно сделать с gallery.php
ответил 28 Фев, 14 от Abezian (120 баллов)
00 голосов
Весь HTML дизайна лежит тут:

Код
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/incl ude/prolog.php");

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/incl ude/epilog.php");


Каждый из этих файлов делится на
prolog.php:
1) prolog_before.php (классы, функции и т.п.)
2) prolog_after.php (HTML)

epilog.php:
1) epilog_before.php (HTML)
2) epilog_after.php (отправка почты, компрессия и т.п.)

Таким образом страница состоит из:
prolog_before.php (классы, функции и т.п.)
prolog_after.php (HTML)
<содержимое страницы>
epilog_before.php (HTML)
epilog_after.php (отправка почты, компрессия и т.п.)

В вашем случае нужно заменить prolog_after.php и epilog_before.php на свои конкретные файлы с дизайном фреймов. При этом оставив prolog_before.php и epilog_after.php.
ответил 20 Июнь, 14 от Kania (5,180 баллов)
00 голосов
Спасибо:)
Попробую сделать. Про результаты расскажу.

А вообще меня появился вопрос:
почему не применяется какая-нибудь система шаблонов?

хотя я понимаю что чем сложнее система тем больше ошибок. Но мне кажется (и что я хочу впоследствии доказать конкретными разработками), что применение движка шаблонов, намного упростит интеграцию дизайна.
Лично я применяю Smarty (smarty.php.net) и попробую скрестить вашу систему со Смарти. (после того как стану партнером и получу исходные кода).

с другой стороны, может быть так и проще. вообщем - пока не попробую не узнаю.
ответил 19 Окт, 14 от Abezian (120 баллов)
00 голосов
Цитата
Михаил Бевз пишет:
А вообще меня появился вопрос:
почему не применяется какая-нибудь система шаблонов?


А что именно вы подразумеваете под системой шаблонов ? Если речь идет о конструкциях вида #news_list#, которые после дополнительного парсинга (и соответственно дополнительно потраченных на это ресурсов) заменяются на готовый HTML, то абсолютно не отличается от include("news_list.php"); При это не съедаются ресурсы на доп. парсинг и можно передавать переменные.
Вообще система шаблонов может подразумевать что угодно. И прежде чем ответить на этот вопрос надо знать что именно.
ответил 18 Фев, 15 от Kania (5,180 баллов)
00 голосов
Я для примера приводил Smarty (smarty.php.net)
Хотя аргумент, что съедает ресурсы весомый - система и так тяжеловесная.
Предлагаю вам ознакомиться с его возможностями (это не реклама :)) и потом представить агрументы почему не стоит использовать. Или стоит :) Или третий вариант. Это не просто спор на принцип ("вот надо использовать и все тут!"), а поиск истины :)

В чем прелесть того же смарти так это полное отделение пхп от хтмл, и наличие простого языка, который позволяет очень просто выводить:
а. Переменные
б. Фрагменты в цикле (очень юзабельная штука)
в. обращаться к объектам из шаблона
г. Включать другие шаблоны (например {include file="drugoy_template.tpl"} )
Это самое главное. Есть еще куча других фич. Но главное - Смарти шаблоны не парсит каждый раз, а компилирует один раз в пхп (что прозрачно для разработчика и пользователя проиходит). Правда выигрыш от этого при частом обновлении (раз в минуту, например) сомнителен, но если страница обновляется хотя бы 1 раз в день, то целый день будет показываться компилированный шаблон.

Хотя вот написал. и сам уже сомневаюсь. надо попробовать.

Вот заодно список фич Смарти.
Some of Smarty's features:
It is extremely fast.
It is efficient since the PHP parser does the dirty work.
No template parsing overhead, only compiles once.
It is smart about recompiling only the template files that have changed.
You can make custom functions and custom variable modifiers, so the template language is extremely extensible.
Configurable template delimiter tag syntax, so you can use {}, {{}}, <!--{}-->, etc.
The if/elseif/else/endif constructs are passed to the PHP parser, so the {if ...} expression syntax can be as simple or as complex as you like.
Unlimited nesting of sections, ifs, etc. allowed.
It is possible to embed PHP code right in your template files, although this may not be needed (nor recommended) since the engine is so customizable.
Built-in caching support
Arbitrary template sources
Custom cache handling functions
Plugin architecture
ответил 29 Май, 15 от Abezian (120 баллов)

Похожие вопросы

0 голосов
1 ответ
спросил 12 Авг, 16 от fomix (120 баллов)
0 голосов
2 ответов
спросил 04 Май, 14 от Nub8507 (100 баллов)
0 голосов
0 ответов
спросил 10 Март, 14 от lordonka (120 баллов)
0 голосов
4 ответов
спросил 28 Янв, 14 от ZeroZ (100 баллов)
0 голосов
3 ответов
спросил 31 Дек, 13 от Keis (160 баллов)