Zusätzliche Mitgliederinformationen

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
befubo
Mitglied
Beiträge: 16
Registriert: 31.07.2014 11:02

Re: Zusätzliche Mitgliederinformationen

Beitragvon befubo » 19.05.2017 15:31

Hi :)

Danke schonmal für die Antwort.
Also, ich hab jetzt versucht und versucht und versucht.
Folgenden Aufbau hab ich inzwischen:

board/ext/kv13/kv13/composer.json

Code: Alles auswählen

{
    "name" : "kv13/kv13",
    "type" : "phpbb-extension",
    "description" : "Test Erweiterung KV13",
    "version" : "1.0.0",
    "license" : "GPL-2.0",
    "require" : {
        "php" : ">=5.3.3"
    },
    "authors" : [{
        "name" : "befubo",
        "email" : "befubo@gmx.ch",
        "homepage" : "http://kampfverband-13.de",
        "role" : "Lead developer"
    }],
    "extra" : {
        "display-name" : "KV13 Erweiterung",
        "soft-require" : {
            "phpbb/phpbb" : ">=3.1.5,<3.2@dev"
        }
    }
}


board/ext/kv13/kv13/config/service.yml

Code: Alles auswählen

kv13.kv13.events.global_events:
    class: gn36\infobar\event\global_events
    arguments:
        - '@user'
        - '@template'
        - '@config'
    tags:
        - { name: event.listener }


board/ext/kv13/kv13/event/global_events.php

Code: Alles auswählen

<?php
namespace kv13\kv13\event;

class global_events implements \Symfony\Component\EventDispatcher\EventSubscriberInterface
{
        static public function getSubscribedEvents()
        {
                return array(
                        'core.viewtopic_assign_template_vars_before'    => 'kv13_erweiterung',
                        // Weitere Events
                );
        }

        /** @var \phpbb\user */
        protected $user;

        /** @var \phpbb\template\template */
        protected $template;

        /** @var \phpbb\config\config */
        protected $config;
        public function __construct(\phpbb\user $user, \phpbb\template\template $template, \phpbb\config\config $config)
        {
                $this->user = $user;
                $this->template = $template;
                $this->config = $config;
        }

        public function kv13_erweiterung($event)
        {
                //Sprachdateien in beliebigen Dateien einbinden wenn sie gerade gebraucht werden
                //$this->user->add_lang_ext('kv13/kv13', 'global');
                // Sprachdateien global einbinden
                $kv13_ary = $event['kv13_event'];
                $kv13_ary[] = array(
                        'KV13_EXT'      => 'Das ist ein Erweiterungs-Test',
                );
                $event['kv13_event'] = $kv13_ary;
        }
}
?>


board/ext/kv13/kv13/styles/we_universal_kv13/template/event/viewtopic_body_postrow_rank_before.html

Code: Alles auswählen

<p>DEBUG {KV13_EXT} TEXT</p>


Das Event, auf welches ich mich beziehe ist in der viewtopic.php:

Code: Alles auswählen

//[...]
/**
* Event to modify data before template variables are being assigned
*
* @event core.viewtopic_assign_template_vars_before
* @var   string   base_url         URL to be passed to generate pagination
* @var   int      forum_id         Forum ID
* @var   int      post_id            Post ID
* @var   array   quickmod_array      Array with quick moderation options data
* @var   int      start            Pagination information
* @var   array   topic_data         Array with topic data
* @var   int      topic_id         Topic ID
* @var   array   topic_tracking_info   Array with topic tracking data
* @var   int      total_posts         Topic total posts count
* @var   string   viewtopic_url      URL to the topic page
* @since 3.1.0-RC4
* @change 3.1.2-RC1 Added viewtopic_url
*/
$vars = array(
   'base_url',
   'forum_id',
   'post_id',
   'quickmod_array',
   'start',
   'topic_data',
   'topic_id',
   'topic_tracking_info',
   'total_posts',
   'viewtopic_url',
);
extract($phpbb_dispatcher->trigger_event('core.viewtopic_assign_template_vars_before', compact($vars)));

$pagination->generate_template_pagination($base_url, 'pagination', 'start', $total_posts, $config['posts_per_page'], $start);

// Send vars to template
$template->assign_vars(array(
   'FORUM_ID'       => $forum_id,
   'FORUM_NAME'    => $topic_data['forum_name'],
   'FORUM_DESC'   => generate_text_for_display($topic_data['forum_desc'], $topic_data['forum_desc_uid'], $topic_data['forum_desc_bitfield'], $topic_data['forum_desc_options']),
   'TOPIC_ID'       => $topic_id,
   'TOPIC_TITLE'    => $topic_data['topic_title'],
   'TOPIC_POSTER'   => $topic_data['topic_poster'],

   'TOPIC_AUTHOR_FULL'      => get_username_string('full', $topic_data['topic_poster'], $topic_data['topic_first_poster_name'], $topic_data['topic_first_poster_colour']),
   'TOPIC_AUTHOR_COLOUR'   => get_username_string('colour', $topic_data['topic_poster'], $topic_data['topic_first_poster_name'], $topic_data['topic_first_poster_colour']),
   'TOPIC_AUTHOR'         => get_username_string('username', $topic_data['topic_poster'], $topic_data['topic_first_poster_name'], $topic_data['topic_first_poster_colour']),

   'TOTAL_POSTS'   => $user->lang('VIEW_TOPIC_POSTS', (int) $total_posts),
   'U_MCP'       => ($auth->acl_get('m_', $forum_id)) ? append_sid("{$phpbb_root_path}mcp.$phpEx", "i=main&amp;mode=topic_view&amp;f=$forum_id&amp;t=$topic_id" . (($start == 0) ? '' : "&amp;start=$start") . ((strlen($u_sort_param)) ? "&amp;$u_sort_param" : ''), true, $user->session_id) : '',
   'MODERATORS'   => (isset($forum_moderators[$forum_id]) && sizeof($forum_moderators[$forum_id])) ? implode($user->lang['COMMA_SEPARATOR'], $forum_moderators[$forum_id]) : '',

   'POST_IMG'          => ($topic_data['forum_status'] == ITEM_LOCKED) ? $user->img('button_topic_locked', 'FORUM_LOCKED') : $user->img('button_topic_new', 'POST_NEW_TOPIC'),
   'QUOTE_IMG'       => $user->img('icon_post_quote', 'REPLY_WITH_QUOTE'),
   'REPLY_IMG'         => ($topic_data['forum_status'] == ITEM_LOCKED || $topic_data['topic_status'] == ITEM_LOCKED) ? $user->img('button_topic_locked', 'TOPIC_LOCKED') : $user->img('button_topic_reply', 'REPLY_TO_TOPIC'),
   'EDIT_IMG'          => $user->img('icon_post_edit', 'EDIT_POST'),
   'DELETE_IMG'       => $user->img('icon_post_delete', 'DELETE_POST'),
   'DELETED_IMG'      => $user->img('icon_topic_deleted', 'POST_DELETED_RESTORE'),
   'INFO_IMG'          => $user->img('icon_post_info', 'VIEW_INFO'),
   'PROFILE_IMG'      => $user->img('icon_user_profile', 'READ_PROFILE'),
   'SEARCH_IMG'       => $user->img('icon_user_search', 'SEARCH_USER_POSTS'),
   'PM_IMG'          => $user->img('icon_contact_pm', 'SEND_PRIVATE_MESSAGE'),
   'EMAIL_IMG'       => $user->img('icon_contact_email', 'SEND_EMAIL'),
   'JABBER_IMG'      => $user->img('icon_contact_jabber', 'JABBER') ,
   'REPORT_IMG'      => $user->img('icon_post_report', 'REPORT_POST'),
   'REPORTED_IMG'      => $user->img('icon_topic_reported', 'POST_REPORTED'),
   'UNAPPROVED_IMG'   => $user->img('icon_topic_unapproved', 'POST_UNAPPROVED'),
   'WARN_IMG'         => $user->img('icon_user_warn', 'WARN_USER'),

   'S_IS_LOCKED'         => ($topic_data['topic_status'] == ITEM_UNLOCKED && $topic_data['forum_status'] == ITEM_UNLOCKED) ? false : true,
   'S_SELECT_SORT_DIR'    => $s_sort_dir,
   'S_SELECT_SORT_KEY'    => $s_sort_key,
   'S_SELECT_SORT_DAYS'    => $s_limit_days,
   'S_SINGLE_MODERATOR'   => (!empty($forum_moderators[$forum_id]) && sizeof($forum_moderators[$forum_id]) > 1) ? false : true,
   'S_TOPIC_ACTION'       => append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&amp;t=$topic_id" . (($start == 0) ? '' : "&amp;start=$start")),
   'S_MOD_ACTION'          => $s_quickmod_action,

   'L_RETURN_TO_FORUM'      => $user->lang('RETURN_TO', $topic_data['forum_name']),
   'S_VIEWTOPIC'         => true,
   'S_UNREAD_VIEW'         => $view == 'unread',
   'S_DISPLAY_SEARCHBOX'   => ($auth->acl_get('u_search') && $auth->acl_get('f_search', $forum_id) && $config['load_search']) ? true : false,
   'S_SEARCHBOX_ACTION'   => append_sid("{$phpbb_root_path}search.$phpEx"),
   'S_SEARCH_LOCAL_HIDDEN_FIELDS'   => build_hidden_fields($s_search_hidden_fields),

   'S_DISPLAY_POST_INFO'   => ($topic_data['forum_type'] == FORUM_POST && ($auth->acl_get('f_post', $forum_id) || $user->data['user_id'] == ANONYMOUS)) ? true : false,
   'S_DISPLAY_REPLY_INFO'   => ($topic_data['forum_type'] == FORUM_POST && ($auth->acl_get('f_reply', $forum_id) || $user->data['user_id'] == ANONYMOUS)) ? true : false,
   'S_ENABLE_FEEDS_TOPIC'   => ($config['feed_topic'] && !phpbb_optionget(FORUM_OPTION_FEED_EXCLUDE, $topic_data['forum_options'])) ? true : false,

   'U_TOPIC'            => "{$server_path}viewtopic.$phpEx?f=$forum_id&amp;t=$topic_id",
   'U_FORUM'            => $server_path,
   'U_VIEW_TOPIC'          => $viewtopic_url,
   'U_CANONICAL'         => generate_board_url() . '/' . append_sid("viewtopic.$phpEx", "t=$topic_id" . (($start) ? "&amp;start=$start" : ''), true, ''),
   'U_VIEW_FORUM'          => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $forum_id),
   'U_VIEW_OLDER_TOPIC'   => append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&amp;t=$topic_id&amp;view=previous"),
   'U_VIEW_NEWER_TOPIC'   => append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&amp;t=$topic_id&amp;view=next"),
   'U_PRINT_TOPIC'         => ($auth->acl_get('f_print', $forum_id)) ? $viewtopic_url . '&amp;view=print' : '',
   'U_EMAIL_TOPIC'         => ($auth->acl_get('f_email', $forum_id) && $config['email_enable']) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=email&amp;t=$topic_id") : '',

   'U_WATCH_TOPIC'         => $s_watching_topic['link'],
   'U_WATCH_TOPIC_TOGGLE'   => $s_watching_topic['link_toggle'],
   'S_WATCH_TOPIC_TITLE'   => $s_watching_topic['title'],
   'S_WATCH_TOPIC_TOGGLE'   => $s_watching_topic['title_toggle'],
   'S_WATCHING_TOPIC'      => $s_watching_topic['is_watching'],

   'U_BOOKMARK_TOPIC'      => ($user->data['is_registered'] && $config['allow_bookmarks']) ? $viewtopic_url . '&amp;bookmark=1&amp;hash=' . generate_link_hash("topic_$topic_id") : '',
   'S_BOOKMARK_TOPIC'      => ($user->data['is_registered'] && $config['allow_bookmarks'] && $topic_data['bookmarked']) ? $user->lang['BOOKMARK_TOPIC_REMOVE'] : $user->lang['BOOKMARK_TOPIC'],
   'S_BOOKMARK_TOGGLE'      => (!$user->data['is_registered'] || !$config['allow_bookmarks'] || !$topic_data['bookmarked']) ? $user->lang['BOOKMARK_TOPIC_REMOVE'] : $user->lang['BOOKMARK_TOPIC'],
   'S_BOOKMARKED_TOPIC'   => ($user->data['is_registered'] && $config['allow_bookmarks'] && $topic_data['bookmarked']) ? true : false,

   'U_POST_NEW_TOPIC'       => ($auth->acl_get('f_post', $forum_id) || $user->data['user_id'] == ANONYMOUS) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=post&amp;f=$forum_id") : '',
   'U_POST_REPLY_TOPIC'    => ($auth->acl_get('f_reply', $forum_id) || $user->data['user_id'] == ANONYMOUS) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=reply&amp;f=$forum_id&amp;t=$topic_id") : '',
   'U_BUMP_TOPIC'         => (bump_topic_allowed($forum_id, $topic_data['topic_bumped'], $topic_data['topic_last_post_time'], $topic_data['topic_poster'], $topic_data['topic_last_poster_id'])) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=bump&amp;f=$forum_id&amp;t=$topic_id&amp;hash=" . generate_link_hash("topic_$topic_id")) : '')
);
//[...]



Ich hoffe man kann erkennen, was ich möchte:
Beim Profil links von einem Verfassten Post möchte ich jetzt über der Anzahl Beiträge testweise einfach den Satz "Das ist ein Erweiterungs-Test" einfügen lassen (Das kann ich dann ja später durch dynamischen Inhalt ersetzen).
Allerdings mach ich vermutlich alles falsch ^^
Zwar wird der Text "DEBUG TEXT" an genau der Stelle eingefügt, aber natürlich erscheint dazwischen nicht mein Testsatz.

Ausserdem versteh ich die Aufgabe von diesem Abschnitt (In der global_events.php):

Code: Alles auswählen

        public function __construct(\phpbb\user $user, \phpbb\template\template $template, \phpbb\config\config $config)
        {
                $this->user = $user;
                $this->template = $template;
                $this->config = $config;
        }


Ich steh aufm Schlauch und versuchs seit einer Woche ^^
Kann mir hier jemand mal vor Augen führen, was da noch fehlt?

Vielen Dank!
Die deutsche Community für Arma 3
Kampfverband-13
Taktik ¦ Teamplay ¦ Immersion

Benutzeravatar
gn#36
Administrator
Administrator
Beiträge: 9122
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Zusätzliche Mitgliederinformationen

Beitragvon gn#36 » 20.05.2017 00:19

Nah dran :D

Was du mit der Variablen $event anfangen kannst hängt davon ab, welches Event du verwendest. Hier versuchst du eine Templatevariable zu befüllen. Dafür brauchst du das Event eigentlich nur als Trigger und nicht um die Variablen an der Stelle im Ablauf zu manipulieren. Die Daten im Event kannst du z.B. nutzen, um nur auf bestimmte Foren oder Beiträge zu reagieren, oder den Beitragsinhalt zu manipulieren. Das brauchst du hier alles nicht, daher kannst du die Variable einfach links liegen lassen.

Um Daten ins Template zu schreiben musst du lediglich die Variable $this->template in deiner Methode kv13_erweiterung verwenden, und zwar genau so wie das auch in der phpBB Originaldatei passiert:

Code: Alles auswählen

$this->template->assign_vars(array(
'TEMPLATE_VARIABLE1' => 'textinhalt',
'KV13_EVENT' => 'Noch ein Textinhalt',
)); 
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.


Zurück zu „Extension Bastelstube“