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

News:

cpg1.5.48 Security release - upgrade mandatory!
The Coppermine development team is releasing a security update for Coppermine in order to counter a recently discovered vulnerability. It is important that all users who run version cpg1.5.46 or older update to this latest version as soon as possible.
[more]

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".

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