1

Тема: Вставка php кода

Здравствуйте.
Нужно чтобы на любой странице форума выполнялся некий php-код с выводом результата в шапке. Например, чтобы вверху любой страницы был текст Hello! /исполняемый код соответственно echo “Hello!”; /
Как можно это сделать наиболее просто в версии 1.3.4?

Спасибо.

Поделиться

2

Re: Вставка php кода

Вариант 1:
Создаем php-скрипт, ложим его в каталог include/user
Добавляем в include/template/main.tpl (или в шаблон, используемый стилем) строку вида: <!-- forum_include "имя_скрипта" -->
Не требует особых знаний движка

Вариант 2:
Устанавливаем расширение anycode tool (есть в разделе расширений), создаем решение и добавляем код для различных хуков (хуки определены в ядре). Этим методом можно вставлять произвольный код практически куда угодно, а не только в шаблон, как в 1 варианте. Требует некоторого изучения движка.

Вариант 3:
Открываем исходники и вставляем свой код куда угодно. Требует некоторого изучения движка. Плохой путь, подходит для изучения.

Сайт hcs

Поделиться

3

Re: Вставка php кода

hcs, большое Вам спасибо.

Поделиться

4 (09.05.2010 05:00 отредактировано Samovarov)

Re: Вставка php кода

hcs пишет:

Вариант 1:
Создаем php-скрипт, ложим его в каталог include/user
Добавляем в include/template/main.tpl (или в шаблон, используемый стилем) строку вида: <!-- forum_include "имя_скрипта" -->
Не требует особых знаний движка

А как из своего скрипта получить доступ к хуку?
Спасибо.

Поделиться

5

Re: Вставка php кода

Samovarov пишет:

А как из своего скрипта получить доступ к хуку?
Спасибо.

Зачем?

Сайт hcs

Поделиться

6 (13.05.2010 06:02 отредактировано Samovarov)

Re: Вставка php кода

Чтобы все настройки можно было бы в скриптах прописывать.
AnyCode - супер расширение (еще раз спасибо за него), но, ИМХО, удобнее это прописать все в один файл (или в пару файлов), и положить  его, например, в template, вместе со своими шаблонами.

Я понял что надо править специальный массив, с соответствующими индексами, только не могу допереть, есть ли штатные функции для этого. И зачем кеш для хуков, тоже понять не могу, и как туда эти хуки загонять.  smile

Поделиться

7

Re: Вставка php кода

Либо я чего-то не понимаю, либо ты.
Доступа к хукам нет в принципе. Хук - это место в коде, имеющее уникальный идентификатор, где система может выполнять произвольный пользовательский код. Грубо говоря, интерпретатор php исполняет код, например viewtopic.php, доходит до сторки 241:

($hook = get_hook('vt_pre_header_load')) ? eval($hook) : null;

и пытается выполнить весь пользовательский код, доступный через идентификатор хука vt_pre_header_load.
Если ты хочешь используя хук исполнить свой код, то ты обязан сделать расширение, которое будет содержать как минимум манифест, в котором твой код назначается тому или иному хуку. Расширение anycode расширяет твои возможности - вместо создания манифеста ради одного-двух хуков, ты внедряешь свой код непосредственно через админ-интерфейс, минуя создание расширения и его инсталляцию. Фактически происходит псевдоинсталляция псевдорасширения без манифеста.
Так что если хочешь все в одном месте - делай полноценное расширение, со своими шаблонами.

Добавлено спустя 5 минут 27 секунд:

Какой массив?? Какие индексы??
Прочитай эти сообщения, они помогут понять суть:
http://punbb.ru/post22157.html#p22157
http://punbb.ru/post23124.html#p23124
А так же вот этот мануал про создание расширений:
http://punbb.informer.com/wiki/punbb13/ … evelopment
Скачай любое небольшое расширение и посмотри как оно устроено.

Сайт hcs

Поделиться

8 (13.05.2010 06:55 отредактировано Samovarov)

Re: Вставка php кода

hcs пишет:

Либо я чего-то не понимаю, либо ты.
Доступа к хукам нет в принципе. Хук - это место в коде, имеющее уникальный идентификатор, где система может выполнять произвольный пользовательский код.

Да, я это понял. Это и имел ввиду.

Думал что можно, что то типа того в файле написать

$forum_hooks['fn_forum_link_start']  = 'echo "privet"';

Пихануть этот файл по выше и наслаждаться. Только экспериментировать не стал. Решил спросить сначала.:)

Поделиться

9

Re: Вставка php кода

Ясно. Да, действительно можно переопределить массив $forum_hooks, добавив туда что либо своё.  Никогда об этом не задумывался, хотя наверное может быть очень полезным. У него довольно сложная организация:

$forum_hooks = array (
  'имя хука' => 
  array (
    0 => '$ext_info_stack[] = array(
\'id\'                => \'имя_расширения\',
\'path\'            => FORUM_ROOT.\'путь_к_расширению\',
\'url\'            => $GLOBALS[\'base_url\'].\'/путь_к_расширению\',
\'dependencies\'    => array (
)
);
$ext_info = $ext_info_stack[count($ext_info_stack) - 1];

КОД

array_pop($ext_info_stack);
$ext_info = empty($ext_info_stack) ? array() : $ext_info_stack[count($ext_info_stack) - 1];
',
  ),
);

Т.е. добавить свой код  к хуку напрямую, до вызова хука, можно как-то так:

$forum_hooks['имя_хука'][] = '$ext_info_stack[] = array(
\'id\'                => \'имя_расширения\',
\'path\'            => FORUM_ROOT.\'путь_к_расширению\',
\'url\'            => $GLOBALS[\'base_url\'].\'/путь_к_расширению\',
\'dependencies\'    => array (
)
);
$ext_info = $ext_info_stack[count($ext_info_stack) - 1];

КОД

array_pop($ext_info_stack);
$ext_info = empty($ext_info_stack) ? array() : $ext_info_stack[count($ext_info_stack) - 1];
';

Сайт hcs

Поделиться

10

Re: Вставка php кода

hcs пишет:

Т.е. добавить свой код  к хуку напрямую, до вызова хука, можно как-то так:

Оказалось что написать расширение совсем не сложно. Страшнее звучит чем делается. Спасибо, свою задачу решил, благодаря Вашей помощи.

Поделиться