Вход

View Full Version : блоки


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

Soniks
27.02.2006, 04:10
показываю на примере темы RusNuke2003
находим:

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%\">";
}

Заменяем на:

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%\">";
}

и аналогично:
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";
}

на:

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
Сделал вот так, а не получается,

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); - далее аккуратно удаляем вместе с "точкой с запятой" и в это же место вставляем вот такое чудо

if ($noblocks ==1) {
echo "";
} else {
blocks(left);

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


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


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

$noblocks=1;

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


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

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

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

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

заходим в файл mainfile.php
ищем функцию
function blocks($side)
в ней в globals добавляем переменную $module_name;
далее в этой же функции ищем вот это
$action = substr($action, 0,1);
Ниже строчкой пишем

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
почемуто игнорируется файл center_right.html где и содержится код о фоне.
Он игнорируется по жестко заданному условию и в определенных модулях. Просто измените как надо условие и все будет нормально отображаться.

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

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


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