Finar.ru
web.finar.ru
video.finar.ru
Темы для BootstrapNew!

SkyBlueCanvas CMS - использование в кириллических сайтах

весь опыт по внедрению системы в одном месте

Автор: Филипп Казаков, дата: 2010-09-01, просмотров 7491
Тэги

темы: SkyBlueCanvas

Общая информация:

Список переменных  | Обсуждение на форуме 
Перенос на localhost: переименовать .htaccess, сменить имя домена в основных настройках админки

Проблемы и решения:

Проблема с кириллической кодировкой

http://forum.skybluecanvas.com/viewtopic.php?f=23&t=252 
http://forum.skybluecanvas.com/viewtopic.php?f=19&t=223 

Заменить в /includes/xml.parser.php со строчки 147:

foreach ($obj as $k=>$v)
            {
                if ($k != 'description' &&
                     $k != 'type' &&
                     $k != 'id' &&
                     trim($k) != '')
                {
                    $indent = '';
                    if (isset($obj->id) ||
                         $i != 0)
                    {
                        $indent = str_repeat(' ', 6);
                    }
                    $xml .= $indent.$k.'="'.htmlentities($v).'"';
                    $xml .= ($i + 1) != $count ? "\r\n" : '' ;
                    $i++;
                }
            }

на

foreach ($obj as $k=>$v)
{
if ($k != 'description' &&
$k != 'type' &&
$k != 'id' &&
trim($k) != '')
{
$indent = '';
if (isset($obj->id) ||
$i != 0)
{
$indent = str_repeat(' ', 6);
}
$xml .= $indent.$k.'="'.htmlentities($v, ENT_COMPAT, "UTF-8").'"';
$xml .= ($i + 1) != $count ? "\r\n" : '' ;
$i++;
}
}

Проблема с mod_rewrite и 404

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

core.php, 331 строчка: сделать условие всегда false.

Зачем я это сделал? Затем, что хотел включить 404. Пришлось сделать это таким кодом в htaccess:

ErrorDocument 404 http://www.nightrun.ru/index.php?pid=21, где 21 - это ID-шник 404 страницы из админки.

Установка плагина FormBuilder (для создания форм регистраций) ext_formbuilder.zip

Инструкции не верны. Ставить так:

  1. Install the 'forms' Manager in /skyblue_root/managers/
  2. Install the 'forms' Fragment in /skyblue_root/data/skins/your_skin/fragments/
  3. Install the 'plugin.formbuilder.php' in /skyblue_root/data/plugins/
  4. Install the 'plugin.fragments.php' in /skyblue_root/data/plugins/

{plugin:fragment(forms,head,2)} - это в <head>
{plugin:fragment(forms,body,2)} - а это в визуальном редакторе в страницу. Остальное в соответствии с инструкциями.

Похоже, чтобы заполненная форма как-либо обрабатывалась (например, сохранялась), необходимо программировать отдельный плагин. Well, it should be researched...

Установка плагина Fragmentor (для передачи нескольких параметров включаемому фрагменту) plugin_fragmentor.zip

Инструкции не верны и не полны. Ставить так:

  1. скопировать по ФТП файл plugin.fragmentor.php в \data\plugins
  2. для вывода фрагмента внутри html-макета, использовать синтактсис <!--fragment(name=phphgallery&view=view)-->, причем директория с фрагментом не должна содержать никаких спец.символов, даже дефиса!
  3. для вывода фрагмента из контента использовать конструкцию {fragment(name=phphgallery&view=view)}, но при этом вывод контента для этой странице в ~html-макете также должен обязательно производиться через fragmentor, вот так: <!--fragment(name=page&view=view)-->, иначе код не отпарсится.

Интеграция простой бесплатной фотогалереи bolGallery

  • установите плагин Фрагментор
  • создайте в data\skins\ваш_скин\fragments\ директорию phphgallery
  • создайте в ней следующие файлы:

functions.php:

<?php
defined('SKYBLUE') or die('Bad file request');
// вытаскиваем параметы из строки вызова фрагмента:
$folder = Filter::get($params, 'folder');
$columns = Filter::get($params, 'columns');
$width = Filter::get($params, 'width');
$height = Filter::get($params, 'height');
?>

view.php:

<?php
// bolGallery for SkyBlueCanvas
// use this syntax inline: {fragment(name=phphgallery&view=view&folder=source_pic_folder&columns=5&width=160&height=120)}

defined('SKYBLUE') or die('Unauthorized file request');

include("bolGallery.php");

chdir('./bolGallery/');
bolGallery("./$folder/", "$columns", "$width", "$height", 1);
chdir('../');
?>

bolGallery.php исходник скрипта, в котором 132 и 133 строчки заменены на:

$HTML .= "\t\t<TD align=\"center\">\n\t\t\t<A href=\"/bolGallery" . substr($currentImage, 1) . "\" onClick=\"bolGalleryPopup(this.href, " . $referenceImageWidth. ", " . $referenceImageHeight . ", '" . $alt . "'); return(false);\" target=\"_blank\">\n"; // target attribute to be tested
                $HTML .= "\t\t\t\t<IMG src=\"/bolGallery" . substr($thumbnail, 1) . "\" title=\"" . $alt . "\" border=0>\n";
  • создайте директорию bolGallery в корне сайта, а в ней - по одной директории для каждой фотогалереи. Например, создайте директорию photo2010 и положите в нее фотки
  • теперь вызов галереи из контента страницы можно производить следующим кодом: {fragment(name=phphgallery&view=view&folder=photo2010&columns=5&width=160&height=120)}, где задается имя директории с картинками, число колонок в таблице, размер превьюшек.

Дальнейшую настройку bolGallery можно произвести в соответствии с документацией на http://bolgallery.free.fr/  Для использования lightbox из комплекта ext_galleria.zip окружите всю таблицу <div id=\"lightbox\"> код таблицы </div>, удалите java-скрипт перед ней, в ссылках на картинках замените вызов JS на class="lightbox"

Установка lightbox из комплекта ext_galleria.zip

Инструкции не верны и не полны. Ставить так:

  1. скачайте архив и разархивируйте
  2. скопируйте *.js файлы из директории lightbox в /skyblue_root/data/skins/your_skin/js/
  3. скопируйте *.css файл из директории lightbox в /skyblue_root/data/skins/your_skin/css/
  4. скопируйте директорию imgs-lightbox to /skyblue_root/data/skins/your_skin/images/
  5. в файле jquery.lightbox-0.4.js пропишите соответствующие пути к катинкам
  6. пропишите вызов всех скопированных файлов в заголовок html-шаблона. Примерно так:
<LINK HREF='[[site.url]][[skin.path]]css/jquery.lightbox-0.4.css' TYPE='text/css' REL='stylesheet'>
    <script type="text/javascript" src="[[site.url]][[skin.path]]js/jquery-1.2.6.min.js"></script>
    <script type="text/javascript" src="[[site.url]][[skin.path]]js/jquery.lightbox-0.4.js"></script>

Для активации lightbox, помещайте ссылку в DIV с id="lightbox", ссылке назначайте class="lightbox"


Оставить комментарий 


Ваше имя:
->