| Форум -> Система оформления -> отображение свободного блока, как ограничить? | 
| отображение свободного блока, как ограничить? | 
|---|
| G-nom | Дата: 02.03.2008, в 22:36 | Сообщение №1 | 
|   Активный участникПользователь №: 174
 Сообщений: 227
 
 
      | | ну вот собсно создал я в шаблоне свободный блок {%BLOCKS standart,block-myblock.php%}
 в админпанели активировал и выставил "свободный блок" ...
 но вот понять не могу как сделать так чтоб он отображался только на главной?
 | 
 | 
|  | 
| Serg_pnz | Дата: 03.03.2008, в 09:34 | Сообщение №2 | 
|   АдминистраторПользователь №: 1
 Сообщений: 2243
 
 
      |  | 
|  | 
| G-nom | Дата: 03.03.2008, в 22:39 | Сообщение №3 | 
|   Активный участникПользователь №: 174
 Сообщений: 227
 
 
      | | Serg_pnz, а для какой это версии? в 2.5 при добавлении в sources.php вылетает ошбкапри обращении к сайту
 
 | Цитата |  | Parse error: syntax error, unexpected $end in C:\www\function\sources.php on line 1331 | 
 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
 Отредактированно G-nom 03.03.2008 г. в 22:39:48
 | 
 | 
|  | 
| Serg_pnz | Дата: 04.03.2008, в 08:17 | Сообщение №4 | 
|   АдминистраторПользователь №: 1
 Сообщений: 2243
 
 
      | | В принципе для любой 2.х, может что-то не так вставил? |  | Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
 "...даме водки? Это чистый спирт!" © кот Бегемот
 | 
 | 
|  | 
| G-nom | Дата: 04.03.2008, в 22:28 | Сообщение №5 | 
|   Активный участникПользователь №: 174
 Сообщений: 227
 
 
      | | Serg_pnz, да как бы даже не знаю что ответить ... открываю сорцы ... в самом конце перед
 
 вставляю хак, т.е. получается
 
 | Цитата |  | // Format captcha check function captcha_check($id="") {
 global $conf, $user;
 if (($id == 1 && !is_user($user)) || ($_POST['posttype'] == "save" && !is_user($user))) {
 session_start();
 $code = substr(hexdec(md5("".date("F j")."".$_SESSION['captcha']."".$conf['sitekey']."")), 2, 6);
 unset($_SESSION['captcha']);
 if (extension_loaded("gd") && $code != intval($_POST['check'])) {
 return 1;
 } else {
 return 0;
 }
 } else {
 return 0;
 }
 }
 
 // Format add block
 function addblocks($str) {
 global $blocks, $blocks_c, $home, $showbanners, $foot, $db, $total_time, $start_time, $time_db, $foot, $time_db_query, $variables;
 
 //начало вставки
 global $name, $home;
 //описываем правила отображения
 if ($name != "Files") {$ish[] = "{%BLOCKS, block-Login.php%}"; $rep[] = "";}
 if ($home!="1") {$ish[] = "{%BLOCKS, block-Files.php%}"; $rep[] = "";}
 //конец правил
 //производим замену, если правила есть для текущего модуля
 if (count($ish)) $str = str_replace($ish, $rep, $str);
 //конец вставки
 
 preg_match_all('#{%BLOCKS([^%]+)%}#iUs',$str,$blk);
 ?>
 | 
 а нада как-то иначе?
 | 
 | 
|  | 
| Serg_pnz | Дата: 05.03.2008, в 09:54 | Сообщение №6 | 
|   АдминистраторПользователь №: 1
 Сообщений: 2243
 
 
      | | 1. У тебя в конце файла два раза идет ?>? //в принципе к делу даже и не относится, но если два раза, то так неправильно!
 2. Зачем в конец? Нужно в function addblocks($str) сразу после их перечисления глобальных (в статье дан же кусок кода...) вставить фрагмент
 | Код |  | 1 
 | //начало вставки global $name, $home;
 //описываем правила отображения
 if ($name != "Files") {$ish[] = "{%BLOCKS, block-Login.php%}"; $rep[] = "";}
 if ($home!="1") {$ish[] = "{%BLOCKS, block-Files.php%}"; $rep[] = "";}
 //конец правил
 //производим замену, если правила есть для текущего модуля
 if (count($ish)) $str = str_replace($ish, $rep, $str);
 //конец вставки
 | 
и настроить правила отображения
 
 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
 Отредактированно Serg_pnz 05.03.2008 г. в 09:55:29
 |  | Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
 "...даме водки? Это чистый спирт!" © кот Бегемот
 | 
 | 
|  | 
| G-nom | Дата: 05.03.2008, в 13:30 | Сообщение №7 | 
|   Активный участникПользователь №: 174
 Сообщений: 227
 
 
      | | Serg_pnz, хм ... исправил, все равно не получается ... мои действия:
 1. вношу хак в сорцы
 
 | Цитата |  | // Format add block function addblocks($str) {
 global $blocks, $blocks_c, $home, $showbanners, $foot, $db, $total_time, $start_time, $time_db, $foot, $time_db_query, $variables;
 
 //начало вставки
 global $name, $home;
 //описываем правила отображения
 if ($name != "Files") {$ish[] = "{%BLOCKS, block-Login.php%}"; $rep[] = "";}
 if ($home!="1") {$ish[] = "{%BLOCKS, block-Files.php%}"; $rep[] = "";}
 //конец правил
 //производим замену, если правила есть для текущего модуля
 if (count($ish)) $str = str_replace($ish, $rep, $str);
 //конец вставки
 
 
 preg_match_all('#{%BLOCKS([^%]+)%}#iUs',$str,$blk);
 $ci = sizeof($blk[1]);
 | 
2. добавляю новый блок через админку
 3. ставлю отображение: *свободный блок *только главная
 
 при сохранение правило *свободный блок сбрасывается, при этом блок отображается во всех модулях ... распиши плз по шагам как чего делать нада .)
 | 
 | 
|  | 
| Serg_pnz | Дата: 07.03.2008, в 16:47 | Сообщение №8 | 
|   АдминистраторПользователь №: 1
 Сообщений: 2243
 
 
      | | Протестил на 2.5 на локалке - работает. На примере block-Files.php 
 1. Создаем файл блока по адресу blocks/block-Files.php
 2. Создаем блок в админке, сказав ему "Свободный"
 3. В шаблон (в индекс темы) внедряем код
 {%BLOCKS, block-Files.php%}
 По условию нашего хака блок отобразится везде, кроме главной
 if ($home!="1") ...
 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
 Отредактированно Serg_pnz 07.03.2008 г. в 16:47:29
 |  | Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
 "...даме водки? Это чистый спирт!" © кот Бегемот
 | 
 | 
|  | 
| G-nom | Дата: 07.03.2008, в 21:49 | Сообщение №9 | 
|   Активный участникПользователь №: 174
 Сообщений: 227
 
 
      | | Serg_pnz, а не мог бы ты написать правило для свободного блока SSDForums чтоб он отображался только на главной .?) | 
 | 
|  | 
|  | 
| Вы не можете ответить в тему анонимно, пожалуйста, войдите или зарегистрируйтесь!
 
 
 |