Парочка идей для тех, кто не знает как их воплотить :)

6 views
Skip to first unread message

ButscH

unread,
Feb 22, 2008, 2:32:04 AM2/22/08
to Open Constructor
Первая Keywords и description для гибридного документа (Если вы хотите
для каждого документа свои)
В моем случае нету маршрутизации виртуальных URL

Заходим в раздел данных -> Гибридные документы, ищем документ в
котором нам нужно добавить эти поля.
Создаем поле примитивного типа -> text ID: keywords Название по
желанию
Создаем поле примитивного типа -> text ID: description Название по
желанию

Идем в объекты -> гибридный документ, ищем наш документ где мы создали
поля и ставим галочки в "Запрашиваемые поля документа" на "keywords" и
"description", сохраняем.

Смотрим на Идентификатор документа (в моем случае item)

Если у вас в карте сайта для этого раздела заполнены поля в META
информация, то их надо удалить.

Последнее действие, заходим в шаблоны->сайт->страница-> выбираем
шаблон использующийся этим гибридным документом. и добавляем в нем в
верху в <head> следующее:

{if isset($smarty.get.item)}
<meta name="Keywords" content=" {$ctx->getParam('.item.keywords')}">
<meta name="Description" content="{$ctx-
>getParam('.item.description')}">

{elseif isset($smarty.get.item1)}
<meta name="Keywords" content=" {$ctx->getParam('.item1.keywords')} ">
<meta name="Description" content="{$ctx-
>getParam('.item1.description')} ">
...
...
...
{else}
{/if}

Небольшое пояснение:
{if isset($smarty.get.item)} - означает, что если страница имеет в
ссылке /items/?item=.... то будут выводится -> {$ctx-
>getParam('.item.keywords')} - параметр объекта item имеющий ID:
keywords.
{elseif isset($smarty.get.item1)} - если у вас имеется другой
документ, в котором вы хотите вставить ключевые слова.
{else} - если документ нчиего не найдет похожего на верхние значения,
то он выдаст пустое значение. (т.к в поле else ничего не указанно)
Вот вроде и все. Думаю этот пример поможет понять как вользоваться и
условием и некоторыми вещами OC

ButscH

unread,
Feb 22, 2008, 2:56:05 AM2/22/08
to Open Constructor
Для тех кому хочется поменять редактор HTML текста, если ему не
хватает функций:

Качаем редактор tiny_mce , он пока что единственный кто без особых
глюков работает. http://tinymce.moxiecode.com/
Нам нужна версия stable
Скачав распаковываем и папку находящуюся в папке jscripts (tiny_mce)
кидаем в \openconstructor\lib\js

Далее идем в \openconstructor\data\hybrid -> edit.php (предварительно
сохранив копию на случай возврата к старой версии)

Переходм на строку 393 <legend>HTML Fields</legend>
Перед ней вставляем скрипт

<script language="javascript" type="text/javascript" src="<?=WCHOME?>/
lib/js/tiny_mce/tiny_mce.js"></script>
<script language="javascript" type="text/javascript">
tinyMCE.init({
//mode : "exact" - менять не стоит, т.к. заменяться все поля, в
которых будет печататься текст
mode : "exact",
//Эллементы сайта, поля которых будут заменяться на редактор
elements : "<?php foreach($html as $key=>$type) { echo $key.',';} ?
>,",
theme : "advanced",
// Example content CSS (should be your site CSS)

plugins :
"safari,style,layer,table,save,advhr,advimage,advlink,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,pagebreak,imagemanager",
theme_advanced_buttons1_add_before : "save,newdocument,separator",
theme_advanced_buttons1_add : "fontsizeselect",
theme_advanced_buttons2_add :
"separator,insertdate,inserttime,preview,separator,forecolor,backcolor",
theme_advanced_buttons2_add_before:
"cut,copy,paste,pastetext,pasteword,separator,search,replace,separator",
theme_advanced_buttons3_add_before : "tablecontrols,separator",
theme_advanced_buttons3_add :
"iespell,media,advhr,separator,print,separator,ltr,rtl,separator,fullscreen",
theme_advanced_buttons4 :
"insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,blockquote,pagebreak,|,insertimage",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "bottom",
plugin_insertdate_dateFormat : "%Y-%m-%d",
plugin_insertdate_timeFormat : "%H:%M:%S",
//content_css - путь, к css файлу, который будет использоваться
редактором
content_css : "/css/content.css",
apply_source_formatting : true
});
</script>

Далее то, что в строке 397 (этот номер строки до вставления скрпта),
все что является между <?php ?> меняем на следующее
<?php
foreach($html as $key=>$type){
echo '<div id="d.'.$key.'">';
echo '<textarea name="'.$key.'" id="'.$key.'" style="width:100%;
height: 400px;border-color: red; display:none">'.htmlspecialchars($doc-
>fields[$key], ENT_COMPAT, 'UTF-8').'</textarea>';
echo '<iframe id="iframe.'.$key.'" style="width:100%; height: 1px;"></
iframe>';
echo '</div>';
}
?>
iframe - если поле по высоте поставить больше 1пикс, то будет в нем
виден повторно текст, что является минусом несомненно, но этот тег
удалять нельзя, т.к пропадут вкладки в в поле html текст гибридного
документа

Далее есть еще одна весчь, можно прикрутить модуль для вставления
картитнок в текст и загрузку их на сервер в нужную вам папку.
Делается след образом
Берете модуль для редактора под названием MCImageManager
В нем есть папка imagemanager, кидаем ее в папку plugins нашего
редактора.
Заходим в нее и ищем там config.php
Находим 35 строку ($mcImageManagerConfig['filesystem.rootpath']) и
ставим в ней абсолютный путь к дерриктории папки где будут хранится
картинки.
в моем случае это '/home/domain/www/images/';

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

ButscH

unread,
Feb 22, 2008, 3:19:33 AM2/22/08
to Open Constructor
Если кому то захочется разобраться со стандартным редактором гибридных
документов (добавить новых функций по мере своих возможностей) то вот
некая информация.
Редактор представляет собой js скрипт и лежит тут \openconstructor\lib
\js\wysiwyg.js
Кнопочки и привязка кнопочек к функциям скрипта лежит тут
\openconstructor\include\toolbar._wc
Картинки кнопок должны лежать тут \openconstructor\i\default\e
Названия кнопок лежат тут \openconstructor\lib\languagesets\rus
\editors._wс

Ну теперь непосредственно к главному.
Покажу самый простой пример:
Нам надо добавить кнопочку новую, скажем нижнее подчеркивание текста.
Все стандартные комманды лежат по адресу http://javascript.itsoft.ru/execcom/execCommands.html

Итак, открываем фаил wysiwyg.js
ищем там строку
AbstractWYSIWYGController.prototype.cut = function() {
this.exec('cut',null,null);
}
Копируем и вставляем ниже. Слово cut меняем на Underline, получаем
AbstractWYSIWYGController.prototype.underline = function() {
this.exec('underline',null,null);
}

Далее открываем фаил
toolbar._wc
ищем в нем стоку, например
BTN_CUT=>array('pic'=>'cut','action'=>'cut()'),
И также заменяем слово cut на Underline.

Разберем что тут что:
BTN_CUT - будет выводить название кнопки, которое будет записанно в
\languagesets\rus\editors._wс
'pic'=>'cut', - будет искать gif фаил с названием cut.gif
'action'=>'cut() будет искать в wysiwyg.js этот параметр

Так, осталось только в папку с картинками создать иконку 24х24 пикс с
прозрачным фоном с назавнием underline.gif
Зайти в фаил \openconstructor\lib\languagesets\rus\editors._wс и
добавить строку
define('BTN_UNDERLINE','Нижнее подчеркивание');

Вот и все и у вас добавится новая кнопочка.
так же можно сделать кнопку размер шрифта, вот пример :

AbstractWYSIWYGController.prototype.fontsize10pt = function() {
this.exec('fontsize',null,'1');
}
Значение 1 будет означать размер шрифта равный вроде 10 пунктов
( значение может быть от 1 до 7)
Также можно слделать в виде массива и вставить в виде
<select><option></option></select>

BTN_10PT=>array('pic'=>'10pt','action'=>'fontsize10pt()'),

define('BTN_BTN_10PT,'Размер шрифта 10pt');
Ну и картинку не забудте :)
Reply all
Reply to author
Forward
0 new messages