Как изменить тему или добавить свой код? Как изменить тему или добавить свой код?
 

News:

CPG Release 1.6.26
Correct PHP8.2 issues with user and language managers.
Additional fixes for PHP 8.2
Correct PHP8 error with SMF 2.0 bridge.
Correct IPTC supplimental category parsing.
Download and info HERE

Main Menu

Как изменить тему или добавить свой код?

Started by banzai, May 09, 2007, 06:52:48 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

banzai

Подскажите пожалста как создать блоки с навигацией справа и слева (например для счётчиков, рекламы) в пустующих местах галереи а сама галерея была что б по центру http://fotofases.ru/displayimage.php?album=2&pos=0

Makc666

Quote from: banzai on May 09, 2007, 06:52:48 PM
Подскажите пожалста как создать блоки с навигацией справа и слева (например для счётчиков, рекламы) в пустующих местах галереи а сама галерея была что б по центру http://fotofases.ru/displayimage.php?album=2&pos=0

Рассказываю первый и последний раз как всё устроено в общих чертах.

Есть главный файл для всех тем:
include/themes.inc.php
В нём описаны все составляющие переменные.

1.
Если Вы хотите какую-то часть отображения изменить, нужно пойти в файл:
include/themes.inc.php

2.
Найти там эту часть кода.

3.
Этот кусок кода нужно без "управляющих" строк скопировать в файл:
themes/ИМЯ_ТЕМЫ/theme.php

Но! Важно! Чтобы этого куска кода без "управляющих" строк там уже НЕ БЫЛО!!!
Т.е. это не значит что кусок кода без "управляющих" строк из файла themes/ИМЯ_ТЕМЫ/theme.php будет на 100% похож на тот кусок кода из include/themes.inc.php.
На примере ниже объясню.

4.
Уже скопированный или найденый кусок кода в файл(е) themes/ИМЯ_ТЕМЫ/theme.php Вы и изменяете.

ПРИМЕР

Попросили нас вставить рекламу в тему Mac ox x.

01.
Открываем файл:
include/themes.inc.php

2.
Ищем нужный нам кусок кода.

В нашем случае это будет:
if (!function_exists('theme_display_image')) {  //{THEMES}
function theme_display_image($nav_menu, $picture, $votes, $pic_info, $comments, $film_strip)
{
    global $CONFIG;

    $width = $CONFIG['picture_table_width'];

    starttable();
    echo $nav_menu;
    endtable();

    starttable();
    echo $picture;
    endtable();
    if ($CONFIG['display_film_strip'] == 1) {
        echo $film_strip;
    }


    echo $votes;



    $picinfo = isset($_COOKIE['picinfo']) ? $_COOKIE['picinfo'] : ($CONFIG['display_pic_info'] ? 'block' : 'none');
    echo "<div id=\"picinfo\" style=\"display: $picinfo;\">\n";
    starttable();
    echo $pic_info;
    endtable();
    echo "</div>\n";

    echo "<div id=\"comments\">\n";
        echo $comments;
        echo "</div>\n";

}
}  //{THEMES}


3.
В нашем примере, мы не должны копировать первую строку данного куска кода:
if (!function_exists('theme_display_image')) {  //{THEMES}

И последнюю строку:
}  //{THEMES}

4.
Смотрим, нет ли уже в файле:
themes/mac_ox_x/theme.php
куска кода, который начинается на:
function theme_display_image(

В нашем случае его нет.

Поэтому копируем этот кусок кода без первой и последней строки в файл:
themes/mac_ox_x/theme.php
Вставлять нужно в конец файла перед строкой:
?>
Если вдруг кто не знает...

А дальше начинаете менять.

То что человек хотел, выглядит примерно так:

function theme_display_image($nav_menu, $picture, $votes, $pic_info, $comments, $film_strip)
{
    global $CONFIG;

    $width = $CONFIG['picture_table_width'];

echo "<table width=100%>
<tr>
<td width=25%>PEKLAMA 1</td>
<td width=50%>";

    starttable();
    echo $nav_menu;
    endtable();

    starttable();
    echo $picture;
    endtable();
    if ($CONFIG['display_film_strip'] == 1) {
        echo $film_strip;
    }


    echo $votes;

    $picinfo = isset($_COOKIE['picinfo']) ? $_COOKIE['picinfo'] : ($CONFIG['display_pic_info'] ? 'block' : 'none');
    echo "<div id=\"picinfo\" style=\"display: $picinfo;\">\n";
    starttable();
    echo $pic_info;
    endtable();
    echo "</div>\n";

    echo "<div id=\"comments\">\n";
        echo $comments;
        echo "</div>\n";

echo "</td>
<td width=25%>PEKLAMA 2</td>
</tr>
</table>";

}


Т.е. были добавлены два блока кода в нужные места и немного ширину подогнал:

БЛОК 1
echo "<table width=100%>
<tr>
<td width=25%>PEKLAMA 1</td>
<td width=50%>";


БЛОК 2
echo "</td>
<td width=25%>PEKLAMA 2</td>
</tr>
</table>";


А дальше Вы уж сами всё подгоняете.

Makc666

Возможно второй более длинный но и правильный путь.

1.
Вместо блока 1 и блока 2 добавляется следующее:
БЛОК1
echo $reklama_left;
БЛОК2
echo $reklama_right;

2.
Конктретно для нашего примера (в других случаях может быть другой файл или вообще не быть, что не факт),
в файл:
displayimage.php

после строки:
$nav_menu = theme_html_img_nav_menu();

добавить строчки:
$reklama_left = theme_html_reklama_left();
$reklama_right = theme_html_reklama_right();


3.
В файл:
themes/mac_ox_x/theme.php

добавить два куска:
function theme_html_reklama_left()
{
<table width=100%>
<tr>
<td width=25%>PEKLAMA 1</td>
<td width=50%>
}


function theme_html_reklama_right()
{
</td>
<td width=25%>PEKLAMA 2</td>
</tr>
</table>
}


По идее это более правильный подход.

banzai

Спасибо! Разобрался с примером, но получается таким образом надо перетряхивать все файлы галереи, а не только displayimage.php
Задача изменить таким образом все страницы галереи.

banzai

Кстати по второму варианту выдаётся ошибка public_html/themes/mac_ox_x/theme.php on line 181

Makc666

Quote from: banzai on May 11, 2007, 10:05:07 PM
Кстати по в торому варианту выдаётся ошибка public_html/themes/mac_ox_x/theme.php on line 181
Да. Я там недописал function в начале первых строке.
Сообщение поправил.
Если хотите, попробуйте.
Сам я не пробовал, но по идее должно работать.

Makc666

Небольшое дополнение про файл template.html

Если открыть файл /themes/classic/template.html, то можно увидет, что в нем используются якорьки, к примеру:
{GAL_DESCRIPTION}

Дальше мы топаем в файл /include/themes.inc.php (для данного конкретного случая).

И смотрим, как формируется там {GAL_DESCRIPTION}

Формируется он в строке:
'{GAL_DESCRIPTION}' => $CONFIG['gallery_description'],

В блоке кода:
    $template_vars = array('{LANG_DIR}' => $lang_text_dir,
        '{TITLE}' => $CONFIG['gallery_name'] . ' - ' . strip_tags(bb_decode($section)),
        '{CHARSET}' => $charset,
        '{META}' => $meta,
        '{GAL_NAME}' => $CONFIG['gallery_name'],
        '{GAL_DESCRIPTION}' => $CONFIG['gallery_description'],
        '{SYS_MENU}' => theme_main_menu('sys_menu'),
        '{SUB_MENU}' => theme_main_menu('sub_menu'),
        '{ADMIN_MENU}' => theme_admin_mode_menu(),
        '{CUSTOM_HEADER}' => $custom_header,
        );


ВАЖНО!
Теперь Вы хотите добавить какой-то код в файле template.html, для чего Вам нужно создать для него якорёк.

Если Вы внимательно прочитали сообщения выше, то уже должны понимать, что...

Вам нужно взять нужный кусок кода из /include/themes.inc.php (кусок кода, в который Вы будите добавлять якорёк).

Поместить данный кусок кода в файл /themes/classic/theme.php

И в этот кусок кода добавить этот якорёк.

P.S. Для подобный действий нужно понимать, что Вы делаете и как Вы делаете.

Zyama

Можно попроще объяснить?

Мне нужно вывести последние 10 сообщений из форума на странице галереи в блоке справа.
В темплэйт, в блок справа от основной галереи, добавил {FORUM}.

В themes.inc.php, в функцию pagefooter добавил
    $template_vars = array(
        '{CUSTOM_FOOTER}' => $custom_footer,
[b]'{FORUM}' => cpg_get_custom_include_3(),[/b]
        '{SYS_MENU}' => theme_main_menu('sys_menu'),
        '{SUB_MENU}' => theme_main_menu('sub_menu'),
        '{ADMIN_MENU}' => theme_admin_mode_menu(),


и в самом конце того же файла добавил
function cpg_get_custom_include_3()
{
echo "<ul>";
include("http://www.mysite.com/forum/extern.php?action=active&show=10");
echo "$cpg_get_custom_include_3";
echo "</ul>";
}


В результате последние 10 сообщений выводятся, но не в правом блоле, а сразу после галереи. Никак не хотят в блок. Помогите решить.
Заранее благодарен.

Alex Revo

Вы сделали все немного не по инструкции, но так тоже должно работать...

Теперь попробуйте добавить в template.html между якорями {CUSTOM_FOOTER}{SYS_MENU} якорь {FORUM}

Makc666

Quote from: Zyama on September 22, 2007, 10:03:50 PM
Можно попроще объяснить?
Проще уж некуда :) Попробуйте перечитать ещё раз. А также посмотрите, как в папке themes изменялись другие темы.
Вам нужно набить руку самому, иначе вопросы будут возникать постоянно.

Я не совсем, кстати, понял, о каком блоке справа в галереи Вы говорите...
Что-то я никаких блоков справа тут не вижу -> http://coppermine-gallery.net/demo/cpg14x/index.php

RobinHoodd

Правильно ли я понял, что все страницы строятся по
themes.inc, и чтобы чтото изменить нужно
там рыться?

Например на все страницы нужно
добавить один и тотже блок.

Где это прописывать?

RobinHoodd

#11
Какой файл отвечает за вывод {GALLERY}
скажите пожалуйста. ::)

Вобщем мне это надо для того чтобы
поменять фон на котором отображаются картинки
в альбоме.

Заранее спасибо. :)

Makc666

Quote from: RobinHoodd on February 14, 2009, 11:59:13 PM
Правильно ли я понял, что все страницы строятся по
themes.inc, и чтобы чтото изменить нужно
там рыться?
То, что касается "пользовательской" части отображения галереи, то да.

Quote from: RobinHoodd on February 14, 2009, 11:59:13 PMНапример на все страницы нужно
добавить один и тотже блок.

Где это прописывать?
В Конфиге это прописывается.

  • Путь к дополнительному файлу верхней части галереи
  • Путь к дополнительному файлу нижней части страницы галереи

Quote from: RobinHoodd on February 19, 2009, 04:03:56 PM
Какой файл отвечает за вывод {GALLERY}
скажите пожалуйста. ::)

Вобщем мне это надо для того чтобы
поменять фон на котором отображаются картинки
в альбоме.

Заранее спасибо. :)
Никакой.
Это не изменяемая переменная.
Это собирательная переменная.
Об этом написано в пункте "2.3.6.5 Template tokens" файла "docs/index.htm".

В данной теме на вопрос, как поменять фон там или там Вам не ответят. Она не для этого создана.