magic blog

категории
Етикети
  1. 2 pages are tagged with 11gR2
  2. 2 pages are tagged with database
  3. 4 pages are tagged with oracle
  4. 3 pages are tagged with ucm
  5. 1 page is tagged with web

АБОНИРАЙ СЕ ЗА ТОЗИ БЛОГ

Как се преизползва кодът в Contribution Mode на Oracle UCM?

Автор: Инж. Илиан Илиев

В Меджик много харесваме Oracle Universal Content Management (Oracle UCM), особено за големи корпоративни сайтове и решихме да споделим опита си за преизползване на код в Уеб редакторски режим. Инж. Илиан Илиев разказва, как става това.

Във всеки сайт съществуват елементи, към които могат да се отнесат следните изисквания:

  • Отговарящите за съдържанието (редакторите) на сайта трабва да могат да ги добавят или премахват лесно
  • Елементите да бъдат еднотипни (смяната на визията на елемента да афектира върху всичките му инстанции)

Ако съдържанието на тези елементи е статично (еднакво за всички страници) съществуват 2 метода за решаване на проблема.

1. Динамична конверсия на документ и вмъкване на готово парче HTML код.

При първия използваме автоматичното конвертиране на различни документи към HTML формат, използвайки следния код:

		    
	

където "document_id" е идентификаторът на документа, който искаме да конвертираме. Този метод позволява на потребителите лесно да редактират елемента, но не е подходящ за по-сложни елементи, които изискват по-комплексен HTML код за постигане на търсената визия.

2. Предварително подготвен код в XML файл

При втория вариант се използва предварително подготвен HTML код вграден в XML файл, което позволява комбинирането на няколко елемента в един файл (един вид библиотека), като същевременно всеки от тях се извиква независимо от останалите. Особеното тук е, че в HTML кода, който се вгражда трябва скобите на таговете да бъдат заместени с техните еквиваленти (< и >). Пример:

HTML:
		
XML:
		 		    <item name="part_1"> 		        &lt;div class="link"&gt; 		            &lt;a class="descrition" href="#"&gt;Пълно описание&lt;/a&gt; 		            &lt;a class="view_more" href="#"&gt;&lt;span&gt;вижте повече &lt;img src="/common/images/01_ico.gif" alt="ico"/&gt;&lt;/span&gt;&lt;/a&gt; 		        &lt;/div&gt; 		    </item> 	

Примерен код за използване на елемента:

[!--$ssIncludeXml('document_id', 'root/item[@name="part_1"]/text()')--]

Тук първият параметър на функцията ssIncludeXml указва идентификатора на документа, а вторият е XPATH израз, указващ пътя до съответния елемент.

По същия начин може да се използват и фрагменти, тъй като библиотеките, които ги съдържат също са XML-документи, което прави редакцията на кода доста по-удобна.

Описание:
  • TEST_FRAGMENTS_LIBRARY - id-то на библиотеката с фрагментите;
  • test_fragm - id-то на самият фрагмент
  • simple - името на снипета които искаме да визуализираме.

Всеки IDoc скрипт, който е част от XML-a ще бъде изпълнен.

Това позволява извежданото съдържание да бъде динамично. Всички предварително дефинирани в темплейта променливи(дефинирани преди мястото на извикване на региона) са на разположение. Важно е да не се забравя, че всяко действие върху променливите в рамките на вмъкнатия код се отразява глобално, а не само в рамките на въпросният код.

Съдържание на темплейта на страницата:
		
		<!--$my_var3 = 'Това е променлива номер 3' -->
		 
		<!-- SS_BEGIN_OPENREGIONMARKER(region1)--><!--$SS_REGIONID="region1"--><!--$include ss_open_region_definition --><!-- SS_END_OPENREGIONMARKER(region1)-->
		 
		    <!--SS_BEGIN_ELEMENT(region1_element1)--><!--$ssIncludeXml(SS_DATAFILE,region1_element1 & "/node()")--><!--SS_END_ELEMENT(region1_element1)-->
		 
		<!-- SS_BEGIN_CLOSEREGIONMARKER(region1)--><!--$include ss_close_region_definition --><!-- SS_END_CLOSEREGIONMARKER(region1)-->
		 
		<!--$my_var2 = 'Това е променлива номер 2' -->
		<p>Променлива номер 3: <!--$my_var3--></p>
	
Съдържание на редактируемия елемент(region1_element1):
Съдържание на фрагмента
(library: "TEST_FRAGMENTS_LIBRARY", fragment: "test_fragm", snippet: "simple"):
		

ID-то на текущата секция е:

<p>Променлива номер 1: <!--$my_var--></p> <p>Променлива номер 2: <!--$my_var2--></p> <!--$my_var3="Презаписвам променлива номер 3"-->

Резултат:

		

ID-то на текущата секция е: xyz

<p>Променлива номер 1: Това е променлива номер 1</p> <!-- Показва съдържанието на променлива номер 1 --> <p>Променлива номер 2: </p> <!-- Съдържанието е празно тъй като променлива номер 2 все още не е дефинирана -->  <p>Променлива номер 3: Презаписвам променлива номер 3</p><!-- Стойността на променлива номер 3 е променено във фрагмента-->

Лично аз, въпреки малко по-голямата комплексност на кода залагам на варианта с фрагментите. При него възможността да използваме съдържанието на други елементи от региона, като променливи във фрагмента, позволява създаването на динамично и лесно за редактиране съдържание.

Добави в Svejo.net Добави в Svejo.net empty span
Коментари
Cialis 08 March 2010 00:49 UTC

QzFOkZ Excellent article, I will take note. Many thanks for the story!






Ние сме ..... Solutions (required)


empty span