Advertisement
Guest User

nci.php - Некэшируемые вставки для CMS Битрикс

a guest
Apr 21st, 2010
1,288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.18 KB | None | 0 0
  1. <?
  2. /**
  3.  * Реализация некэшируемых вставок
  4.  * Описание и примеры использования: http://dev.1c-bitrix.ru/community/webdev/user/11350/blog/1849/
  5.  */
  6.  
  7. function nciStart ()
  8. {
  9.   ob_start ();
  10. }
  11.  
  12. function nciFinish (&$component)
  13. {
  14.     // Реализация некэшируемых вставок
  15.     $component->arResult["RESULT_HTML"] = ob_get_clean();
  16.     $component->arResult["TEMPLATE_PATH"] = $component->__template->__folder;
  17.     $component->SetResultCacheKeys (
  18.         Array ("RESULT_HTML" => "RESULT_HTML", "TEMPLATE_PATH" => "TEMPLATE_PATH"));
  19. }
  20.  
  21. function nciDisplay (&$component)
  22. {
  23.     $html = $component->arResult["RESULT_HTML"];
  24.     preg_match_all ("~<\[\#(\w+)\#\]>~", $html, $matches);
  25.    
  26.     if (is_array ($matches))
  27.     {
  28.         $template_path = $_SERVER["DOCUMENT_ROOT"].$component->arResult["TEMPLATE_PATH"];
  29.         $keys = $matches[0];
  30.         $vars = $matches[1];
  31.        
  32.         foreach ($keys as $key_index => $key_name)
  33.         {
  34.             ob_start();
  35.             include ($template_path."/".(strtolower ($vars[$key_index])).".php");
  36.             $mini_template_data = ob_get_clean ();
  37.             $html = str_replace ($key_name, $mini_template_data, $html);
  38.         }
  39.     }
  40.     return $html;
  41. }
  42. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement