View Full Version : блоки
соник, не подскажешь, как сделать так, чтобы левый и правый блоки были только на первой странице. так как тема на этом сайте.
показываю на примере темы 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";
}
Большое спаси, а не мог бы объяснить на примере DeepBlue, а то что не получается.
Заранее большой сенк.
Сделал вот так, а не получается,
global $module_name;
if (!$home) {
blocks(left);
}
echo "</td><td>\n";
global $module_name;
if (!$home) {
blocks(right);
Erixon а что имеенно не получаеться?
Вот у меня такая же проблема, только мне нужно, чтоб в зависимости от открытого модуля появлялись то левые, то правые блоки и причем разные. Т.е. суть задачи в следующем. Например у меня на главной странице вообще нету ни правых ни левых блоков. Они есть как бы, но они в админке отключены. На главной есть 2 ссылки "Модуль1" и "Модуль 2". Так вот если я например нажимаю на ссылку 1, то у меня грузится МОДУЛЬ1 и появляется например слева блок 1, а если я например нажимаю на ссылку 2, то у меня грузится другой модуль, но уже с левым и правым блоком 2 и 3. Обратите внимания, все блоки разные....например block1.php block2.php block3.php.
Как решить такой ребус?
Demon изучайте php и все получиться!
Хорошо, 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
Вот и все....будут вопросы задавайте.!!!!
а как сделать так что бы правые блоки отображались всегда?
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 где и содержится код о фоне.
почемуто игнорируется файл 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
у меня такой вопрос. я создал блок через админ панель и расположил его по центру в верху. этот блок отображается только на главной странице. как сделать так чтобы этот блок отображался на всех страницах сайта а не только на главной?
http://forum.mynuke.ru/showthread.php?t=1963
MyNuke.ru