Forum. MyNuke.ru

Forum. MyNuke.ru (http://forum.mynuke.ru/index.php)
-   Темы оформления phpNuke (http://forum.mynuke.ru/forumdisplay.php?f=12)
-   -   блоки (http://forum.mynuke.ru/showthread.php?t=1395)

Erixon 27.02.2006 01:51

блоки
 
соник, не подскажешь, как сделать так, чтобы левый и правый блоки были только на первой странице. так как тема на этом сайте.

Soniks 27.02.2006 04:10

показываю на примере темы RusNuke2003
находим:
PHP код:
 if ($module_name == "Forums") {
    echo 
"<tr><td width=\"100%\" valign=\"top\">\n";
    }
    else {
    echo 
"<tr><td width=\"160\" valign=\"top\">\n";
     
blocks(left);
    echo 
"<br><img border=\"0\" src=\"themes/RusNuke2003/images/pixel.gif\" width=\"160\" height=\"1\">";
    echo 
"</td><td><img border=\"0\" src=\"themes/RusNuke2003/images/pixel.gif\" width=\"10\" height=\"1\"></td><td valign=\"top\" width=\"90%\">";
    } 

Заменяем на:
PHP код:
 global $home;
    if (!
$home) {
    echo 
"<tr><td width=\"100%\" valign=\"top\">\n";
    }
    else {
    echo 
"<tr><td width=\"160\" valign=\"top\">\n";
     
blocks(left);
    echo 
"<br><img border=\"0\" src=\"themes/RusNuke2003/images/pixel.gif\" width=\"160\" height=\"1\">";
    echo 
"</td><td><img border=\"0\" src=\"themes/RusNuke2003/images/pixel.gif\" width=\"10\" height=\"1\"></td><td valign=\"top\" width=\"90%\">";
    } 

и аналогично:
PHP код:
 if (($module_name == "Forums") OR ($index != 1)) {
    echo 
"</td></tr></table>\n";
}
else {
    echo 
"</td><td><img border=\"0\" src=\"themes/RusNuke2003/images/pixel.gif\" width=\"10\" height=\"1\"></td><td valign=\"top\" width=\"160\">";
    
blocks(right);
    echo 
"<br><img border=\"0\" src=\"themes/RusNuke2003/images/pixel.gif\" width=\"160\" height=\"1\"></td></tr></table>\n";


на:
PHP код:
 global $home;
if (!
$home) {
    echo 
"</td></tr></table>\n";
}
else {
    echo 
"</td><td><img border=\"0\" src=\"themes/RusNuke2003/images/pixel.gif\" width=\"10\" height=\"1\"></td><td valign=\"top\" width=\"160\">";
    
blocks(right);
    echo 
"<br><img border=\"0\" src=\"themes/RusNuke2003/images/pixel.gif\" width=\"160\" height=\"1\"></td></tr></table>\n";


Erixon 01.03.2006 01:35

Большое спаси, а не мог бы объяснить на примере DeepBlue, а то что не получается.
Заранее большой сенк.

Erixon 01.03.2006 13:47

Сделал вот так, а не получается,

PHP код:
 global $module_name;
 if (!
$home) {
     
blocks(left);
 } 
    echo 
"</td><td>\n";
 global 
$module_name;
 if (!
$home) {
     
blocks(right); 

Soniks 02.03.2006 15:25

Erixon а что имеенно не получаеться?

Demon 30.03.2006 10:05

Вот у меня такая же проблема, только мне нужно, чтоб в зависимости от открытого модуля появлялись то левые, то правые блоки и причем разные. Т.е. суть задачи в следующем. Например у меня на главной странице вообще нету ни правых ни левых блоков. Они есть как бы, но они в админке отключены. На главной есть 2 ссылки "Модуль1" и "Модуль 2". Так вот если я например нажимаю на ссылку 1, то у меня грузится МОДУЛЬ1 и появляется например слева блок 1, а если я например нажимаю на ссылку 2, то у меня грузится другой модуль, но уже с левым и правым блоком 2 и 3. Обратите внимания, все блоки разные....например block1.php block2.php block3.php.

Как решить такой ребус?

Soniks 31.03.2006 22:01

Demon изучайте php и все получиться!

Demon 06.04.2006 13:05

Хорошо, Soniks, я изучил PHP и мне помог MihaHard c www.phpnuke.ru - за что ему огромное спасибо, а раз тебе трудно подсказать, тогда подскажу я, потому что мало ли кому-нибудь да понадобится.

!!!!ВНИМАНИЕ!!! Этот вариант для моего случая (читайте посты выше)!!!!! Если Вы внесете изменения как здесь указано, то на главной странице у вас не будет блоков!!!!!


1. Заходим в файл theme.php
ищем функцию theme_header();
в ней в globals прописываем еще одну переменную, например $noblocks
далее в этой же функции ищем вот такую вещь blocks(left); - далее аккуратно удаляем вместе с "точкой с запятой" и в это же место вставляем вот такое чудо

PHP код:
 if ($noblocks ==1) {
echo 
"";
} else {
 
blocks(left); 


Теперь в этом же файле опускаемся ниже до функции theme_footer()
так же прописываем переменную в globals
так же ищем вот такую вещь blocks(right);
так же удаляем и вставляем
PHP код:
 if ($noblocks ==1) {
echo 
"";
} else {
 
blocks(right); 


Здесь ничего сложного....делов на 30 сек.....Идем далее


2. Заходим в "корне сайта" в файл index.php и после вот этих строк
PHP код:
 require_once("mainfile.php");
global 
$prefix$db$admin_file
пишем

$noblocks=1;

У нас должно получиться
PHP код:
 require_once("mainfile.php");
global 
$prefix$db$admin_file;
$noblocks=1


Тоже делов на 10 секунд.....

3. Заходим в модуль, который у Вас включен для главной странице (например News..ну у всех он разный) и в файле index.php этого модуля прописываем
$noblocks=1;

Подведем небольшой итог, что у нас получилось?
Когда мы загружаем главную страницу, то у нас правые и левые блоки отключаются с помощью переменной $noblocks=1; которую мы прописали......Далее, нам нужно реализовать такую проверку, при которой в зависимости от определеннного загруженного модуля будет показываться то левый, то правый блок, а иногда и все вместе причем!!! разные!!!!.

4. Самое главное

заходим в файл mainfile.php
ищем функцию
PHP код:
 function blocks($side

в ней в globals добавляем переменную $module_name;
далее в этой же функции ищем вот это
PHP код:
 $action substr($action0,1); 

Ниже строчкой пишем
PHP код:
 if( (($dig == "14") AND ($module_name != 'Modul1')) ) {
$action "0"



"Что здесь написано?" - спросите Вы. А здесь как раз то и прописано условие для отображения блоков. ...просто вставляйте этот код к себе и вместо Modul1 пишите название модуля, который у вас....а где цифра 14 - это ID вашего блока....Его можно узнать зайдя в Админ панель --> Блоки --> Выбрать нужный блок --> Редактировать и в строке браузера у вас отобразится ссылка, в конце которой и будет ID блока

Например:

http://localhost/admin.php?op=BlocksEdit&bid=29

Вот и все....будут вопросы задавайте.!!!!

Soniks 06.04.2006 14:31

респект!:wink:

pea 24.04.2007 13:23

а как сделать так что бы правые блоки отображались всегда?

Soniks 24.04.2007 19:29

pea убрать условие if() в теме там где идет вызов blocks(right);

Click-beetle 26.04.2007 22:46

Соник я делал тему по твоему видео уроку и с помощья шаблона. Весь код разбросал по файлам.Главная страница отобразилась нормально со всемы блоками, но в некоторых разделах у меня пробадает правый блок вместе с задним планом, просмотрев код я понял что он в некоторых местах не читает файл center_right.html можешь помочь?

Click-beetle 27.04.2007 18:13

Я нашел вроде ответ что для версий с патчам 3.1 нужно менять од в theme.php я поменял но мне не помогло. Ах и версия php PHP-NUKE-7.6_rus_patched_3.0_phpbb_2.0.19 -скачал с этого сайта.

Spiker86 30.04.2007 20:04

У меня тоже вопросик. У меня стояла тема Fashion, блоки отображались нормально. А сегодня установил тему BlackW. На главной странице отображаются только левые блоки, на остальных и левые, и правые. Где, что изменить необходимо?
Все темы скачены с Вашего сайта.


------------------
все, уже исправил.

Click-beetle 02.05.2007 18:08

Немного разобрался в сути проблемы. На тех раздлах сайта где не отображаются правые блоки вместе с фоном в коде почемуто игнорируется файл center_right.html где и содержится код о фоне.

Astrix 02.05.2007 19:43

Цитата: Сообщение от Click-beetle
почемуто игнорируется файл center_right.html где и содержится код о фоне.

Он игнорируется по жестко заданному условию и в определенных модулях. Просто измените как надо условие и все будет нормально отображаться.

ЗЫ
Ковырять themefooter функцию в файле theme.php

Click-beetle 02.05.2007 21:53

А ты не мог бы сказать где именно а то я не знаю языка php, знаю только html
Вот текст файла, что изменить,чтобы отображалась на всех страницах? :smile:

PHP код:
 themefooter() {
    global 
$index$foot1$foot2$foot3$copyright$totaltime$ThemeSel;
    if (
$index == 1) {
    
$tmpl_file "themes/$ThemeSel/center_right.html";
    
$thefile implode(""file($tmpl_file));
    
$thefile addslashes($thefile);
    
$thefile "\$r_file=\"".$thefile."\";";
    eval(
$thefile);
    print 
$r_file;
    
blocks(right);
    
    }
    
$footer_message "$foot1$foot2$foot3$copyright<br>$totaltime";
    
$tmpl_file "themes/$ThemeSel/footer.html";
    
$thefile implode(""file($tmpl_file));
    
$thefile addslashes($thefile);
    
$thefile "\$r_file=\"".$thefile."\";";
    eval(
$thefile);
    print 
$r_file;



а вот ссылка на сайт можешь глянуть как он игнорируется http://www.gwfru.jino-net.ru

Paravoz 21.10.2007 20:21

у меня такой вопрос. я создал блок через админ панель и расположил его по центру в верху. этот блок отображается только на главной странице. как сделать так чтобы этот блок отображался на всех страницах сайта а не только на главной?

Soniks 25.10.2007 15:21

http://forum.mynuke.ru/showthread.php?t=1963


Часовой пояс GMT +4, время: 14:32.

Copyright © 2005 by Soniks