Москва
(495)240-82-20
Ростов-на-Дону
(863)219-77-00
   

Разработчикам: Макеты дизайна в CMS NetCat. Проблема экранирования кавычек и подсветки синтаксиса

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
Разработчикам: Макеты дизайна в CMS NetCat. Проблема экранирования кавычек и подсветки синтаксиса
 
CMS NetCat достаточно простая и удобная система. Но в ней есть свои особенности, которые надо учитывать разработчикам.
Рассмотрим макеты дизайна для этой CMS.
Они находятся в админке (панель управления), в разделе "Разработка" -> "Макеты дизайна".
Каждый макет дизайна состоит из нескольких частей:
  • Шаблоны вывода навигации
  • Верхняя часть страницы (Header)
  • Нижняя часть страницы (Footer)
  • Настройки отображения макета дизайна в разделе.
    Вы увидите данное поле если ваша версия NetCat не сильно устарела.
  • Таблица стилей
Нас интересуют поля "Шаблоны вывода навигации", "Верхняя часть страницы (Header)" и "Нижняя часть страницы (Footer)". Сам код макетА хранится в БД и редактируется прямо из админки. Проблема в том, что в Header и Footer нужно экранировать символ двойной кавычки ". Связанно это с тем, что текст в этих полях в дальнейшем представляется строковой переменой php.
В итоге нужно учитывать двойные кавычки и вставку php кода делать в виде: ".s_browse_level(0,$browse_sub[0]).". Для более сложного кода нужно "закрыть вывод стоки" вписать php код и опять открыть вывод строки:
Код
";
// php код
echo "

Пример части Header'a взятый с демо версии:
Код
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional\">
<html>
<head>
<meta http-equiv='content-type' content='text/html; charset=windows-1251' />
<link type='text/css' rel='stylesheet' href='$SUB_FOLDER/images/template1/css/main.css' />
<link type='text/css' rel='stylesheet' href='$SUB_FOLDER/images/template1/css/template_".$template_settings[ColorScheme].".css' />
".( $current_sub[Description] ? "<meta name='Description' content='$current_sub[Description]'>\n" : "" )
.( $current_sub[Keywords] ? "<meta name='Keywords' content='$current_sub[Keywords]'>" : "" )."
<title>".strip_tags($f_browse_path=s_browse_path($browse_path))."</title>
<style>%CSS</style>
<script defer type='text/javascript' src='$SUB_FOLDER/images/template1/css/png.js'></script>
".nc_set_calendar()."
</head>

<body>

<div class='logotype'>".($current_catalogue[Title_Sub_ID]==$sub ? "<img src='$SUB_FOLDER/images/template1/i/layer/logotype.png' alt='Ваша 

компания' />" : "<a href='$SUB_FOLDER/'><img src='$SUB_FOLDER/images/template1/i/layer/logotype.png' alt='Ваша компания' /></a>")."</div>

<!-- MENU -->
".s_browse_level(0,$browse_sub[0])."
<!-- End MENU -->

Для многих разработчиков такой подход окажется неудобным.
Нет нужного функционала как в любимом редакторе.
Для вставки php нужно применять меры и заморочки с двойными кавычками. Есть конечно плюс, что можно редактировать макет без подлючения по ФТП прямо с админки. Но он не перекрывает недостатков.
Какой выход? А выход есть!
Вместо прямой вставки кода в Header и Footer подключать файл с этим кодом.
Код
";
include $DOCUMENT_ROOT.'/template/1/header.php';
echo "

$DOCUMENT_ROOT - переменная NetCat, содержащая путь к корню сайта.
/template/ - папка в которой храним файлы макета.
/1/ - номер макета (ID).
header.php - собственно сам файл, содержащий верхнюю часть макета.
Для поля Footer будет соответственно свой файл - footer.php
Код
";
include $DOCUMENT_ROOT.'/template/1/footer.php';
echo "


Сам файл файл header.php будет выглядеть так:
Код
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional">
<html>
<head>
<meta http-equiv='content-type' content='text/html; charset=windows-1251' />
<link type='text/css' rel='stylesheet' href='<?=$SUB_FOLDER?>/images/template1/css/main.css' />
<link type='text/css' rel='stylesheet' href='<?=$SUB_FOLDER?>/images/template1/css/template_<?=$template_settings[ColorScheme]?>.css' />
<?=( $current_sub[Description] ? "<meta name='Description' content='".$current_sub[Description]."'>\n" : "" )
.( $current_sub[Keywords] ? "<meta name='Keywords' content='".$current_sub[Keywords]."'>" : "" )?>
<title><?=strip_tags($f_browse_path=s_browse_path($browse_path))?></title>
<style>%CSS</style>
<script defer type='text/javascript' src='<?=$SUB_FOLDER?>/images/template1/css/png.js'></script>
<?=nc_set_calendar()?>
</head>

<body>

<div class='logotype'><?=($current_catalogue[Title_Sub_ID]==$sub ? "<img src='".$SUB_FOLDER."/images/template1/i/layer/logotype.png' alt='Ваша 

компания' />" : "<a href='".$SUB_FOLDER."/'><img src='".$SUB_FOLDER."/images/template1/i/layer/logotype.png' alt='Ваша компания' 

/></a>")?></div>

<!-- MENU -->
<?=s_browse_level(0,$browse_sub[0])?>
<!-- End MENU -->


Аналогично можно подключить файл для поля "Шаблоны вывода навигации".
Код
include $DOCUMENT_ROOT.'/template/1/navigation.php';

Обратите внимание, что для этого поля не надо закрывать строку "; перед include. Это поле рассматривается NetCat'ом как код php.
В итоге получаем удобное редактирование файлов макета в привычном текстовом редакторе с подсветкой синтаксиса. Вставкой php кода привычными тегами <? ?>.
Даже при необходимости что то быстро поменять в шаблоне макета, не используя фтп, остается, благодаря встроенному в NetCat файл-менеджеру.

P.S.
В последних версиях NetCat появилась возможность включать подсветку синтаксиса прямо в админке, но это все равно не сравнится с удобством, скоростью обработки и возможностями полноценного текстового редактора.
Использовать такой подход для макетов или нет решает разработчик, делая так, как ему удобно.
 
При таком подходе, в папку template стоит положить файлик .htaccess с содержимым

Код
deny from all


Чтоб через адресную строку нельзя было открыть ваши скрипты :o
 
Цитата
Coder пишет:
При таком подходе, в папку template стоит положить файлик .htaccess с содержимым
Код
deny from all


Чтоб через адресную строку нельзя было открыть ваши скрипты
В таком случае запустить эти файлы из адресной строки браузера будет нельзя, но так же не будут доступны статические файлы (картинки, стили, яваскрипт) в этой папке. Так что рациональней, в начало каждого файла вставлять проверку на "подключение файлов из CMS".
 
Описанная в теме проблема устранена разработчиками NetCat в 5-ой версии продукта.
Огромное им за это спасибо!
Страницы: 1
Читают тему (гостей: 1)
Смотрите также: