K2 е много мощен компонент, но при по-сложни проекти все пак се достигат и неговите границите. Това е един такъв случай.
K2 разполага с няколко plugin events в item view:
- onK2PrepareContent
- onK2AfterDisplay
- onK2BeforeDisplay
- onK2AfterDisplayTitle
- onK2BeforeDisplayContent
- onK2AfterDisplayContent
Това ни позволява да поставим плъгина, който искаме да се зареди почти навсякъде.
За разлика от item view, category view разполага само с един event(onK2CategoryDisplay). Ако искаме да зарадим 2 плъгина в преглед на категория, един преди съдържанието и един след него, това няма как да стане. За това трябва да направим следното:
1. Отваряме category.php и там където искаме да създадем нов event добавяме:
<?php
$db = & JFactory::getDBO();
$query = "SELECT plugins FROM #__k2_categories WHERE id=".(int)$item->catid;
$db->setQuery($query, 0, 1);
$category = $db->loadObject(plugins);
$dispatcher = &JDispatcher::getInstance();
JPluginHelper::importPlugin ('content');
JPluginHelper::importPlugin ( 'k2' );
$results = $dispatcher->trigger('onK2CategoryDisplay2', array ( & $category, &$params, $limitstart));
echo $results [0];
?>
2. Трябва да променим и плъгина, който искаме да се зарежда при новия event. За целта отваряме php файла на плъгина и заместваме същесвуващия event на onK2CategoryDisplay2