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

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


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

Copyright © 2005 by Soniks