Page 2 of 2

Re: Blöcke nur für Gruppe sichbar machen

Posted: 11. March 2009 16:41
by Marc
Setze deine Funktion mal nach dem Session management ein:

Code: Select all

    <?php

    /**
    *
    * @package - Board3portal
    * @version $Id: portal.php 325 2008-08-17 18:59:40Z kevin74 $
    * @copyright (c) kevin / saint ( www.board3.de/ ), (c) Ice, (c) nickvergessen ( www.flying-bits.org/ ), (c) redbull254 ( www.digitalfotografie-foren.de ), (c) Christian_N ( www.phpbb-projekt.de )
    * @based on: phpBB3 Portal by Sevdin Filiz, www.phpbb3portal.com
    * @license http://opensource.org/licenses/gpl-license.php GNU Public License
    *
    */


    define('IN_PHPBB', true);
    define('IN_PORTAL', true);

    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';

    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    include($phpbb_root_path . 'common.' . $phpEx);
    include($phpbb_root_path . 'portal/includes/functions.'.$phpEx);
    include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);

    $portal_config = obtain_portal_config();

    // Start session management
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup('mods/lang_portal');

        // zu überprüfende Gruppen ID ( Beispiel Gruppen ID 5 )
        $gruppen_id = 5;

        // zu überprüfender User ( Beispiel: Der User, der diese Seite aufgerufen hat )
        $benutzer_id = $user->data['user_id'];

        // Nun erfolgt die eigentliche Prüfung:
        $is_in_group = group_memberships($gruppen_id, $benutzer_id , true);


    *Haufen CODE*

    $template->assign_vars(array(
       'PORTAL_LEFT_COLUMN'    => $portal_config['portal_left_column_width'],
       'PORTAL_RIGHT_COLUMN'    => $portal_config['portal_right_column_width'],
    ));

        if ($is_in_group == true)
        {
            // Teile dem Template System mit, das die Variable "S_IN_GROUP" den Wert TRUE bekommt
           $template->assign_var('S_IN_GROUP', true);
        }

    page_header($user->lang['PORTAL']);

    $template->set_filenames(array(
       'body' => '/portal/portal_body.html'
    ));


    make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));

    page_footer();

    ?>
Beim HTML-Code evtl. mal rumprobieren ob es so nicht besser funktioniert:

Code: Select all

          <!-- IF $S_IN_GROUP -->
          <!-- IF S_DISPLAY_POLL -->
             <!-- INCLUDE portal/block/poll.html -->
          <!-- ENDIF -->
          <!-- ENDIF -->
Wenn du das ganze auch in der portalview.php benutzen willst, dann musst du das natürlich auch dort einbinden.

Re: Blöcke nur für Gruppe sichbar machen

Posted: 11. March 2009 16:54
by Christian_N
Ok, war doch richtig der Code so:

Code: Select all

// zu überprüfende Gruppen ID ( Beispiel Gruppen ID 5 )
$gruppen_id = 5;

// zu überprüfender User ( Beispiel: Der User, der diese Seite aufgerufen hat )
$benutzer_id = $user->data['user_id'];

// Nun erfolgt die eigentliche Prüfung:
$is_in_group = group_memberships($gruppen_id, $benutzer_id , true); 
Der ist nur an der Falsche stelle eingefügt wurde :oops:

Also so funktioniert es:
Öffnen: portal.php
Finde:

Code: Select all

include($phpbb_root_path . 'portal/includes/functions.'.$phpEx); 
Danach einfügen:

Code: Select all

include($phpbb_root_path . 'includes/functions_user.' . $phpEx); 
Kommentar: Wenn aus einer Gruppe geprüft werden soll.
Finde:

Code: Select all

$user->setup('mods/lang_portal');

$load_center = true; 
Danach einfügen:

Code: Select all

// zu überprüfende Gruppen ID ( Beispiel Gruppen ID 5 )
$gruppen_id = 5;

// zu überprüfender User ( Beispiel: Der User, der diese Seite aufgerufen hat )
$benutzer_id = $user->data['user_id'];

// Nun erfolgt die eigentliche Prüfung:
$is_in_group = group_memberships($gruppen_id, $benutzer_id , true); 
Kommentar: Wenn aus mehren Gruppen geprüft werden soll.
Finde:

Code: Select all

$user->setup('mods/lang_portal');

$load_center = true; 
Danach einfügen:

Code: Select all

// zu überprüfende Gruppen IDs ( Beispiel Gruppen ID 5, 10, 12, 15 )
// Hinweis: Bei mehreren Gruppen muss es ein array() sein!
$gruppen_id = array(5,10,12,15);

// zu überprüfender User ( Beispiel: Der User, der diese Seite aufgerufen hat )
$benutzer_id = $user->data['user_id'];

// Nun erfolgt die eigentliche Prüfung:
$is_in_group = group_memberships($gruppen_id, $benutzer_id , true);  
Finde:

Code: Select all

$template->assign_vars(array(
    'PORTAL_LEFT_COLUMN'     => $portal_config['portal_left_column_width'],
    'PORTAL_RIGHT_COLUMN'     => $portal_config['portal_right_column_width'],
)); 
Danach einfügen:

Code: Select all

if ($is_in_group == true)
{
    // Teile dem Template System mit, das die Variable "S_IN_GROUP" den Wert TRUE bekommt
    $template->assign_var('S_IN_GROUP', true);
} 
Und schon kannst in der portal_body.html die IF-Bedinung <!-- IF S_IN_GROUP --> bzw. <!-- IF not S_IN_GROUP --> benutzen. :)
Für die Portalview sollte es regulär so ähnlich sein, falls den Block nicht nur auf dem Portal ausblenden möchtest.

Re: Blöcke nur für Gruppe sichbar machen

Posted: 11. March 2009 17:43
by megran
Vielen Dank! Funktioniert einwandfrei! :D

Jetz brauch ich noch den Block der ausgeblendet werden muss. Aber das ist ein anderes Thema... ;)

Re: Blöcke nur für Gruppe sichbar machen

Posted: 10. November 2010 21:06
by archivar
Diese Anleitung sollte mit Board3Portal v.1.0.5 und v.1.0.6 funktionieren:
Mit dieser Anleitung ist es nur möglich für eine- oder mehrere Gruppen Blöcke sichtbar zu machen und alle anderen sehen diese Blöcke dann nicht.
Christian_N wrote: Also so funktioniert es:
Öffnen: portal.php
Finde:

Code: Select all

include($phpbb_root_path . 'portal/includes/functions.'.$phpEx);   
Danach einfügen:

Code: Select all

include($phpbb_root_path . 'includes/functions_user.' . $phpEx);   
Kommentar: Wenn aus einer Gruppe geprüft werden soll.
Finde:

Code: Select all

$load_center = true;   
Danach einfügen:

Code: Select all

// zu überprüfende Gruppen ID ( Beispiel Gruppen ID 5 )
$gruppen_id = 5;

// zu überprüfender User ( Beispiel: Der User, der diese Seite aufgerufen hat )
$benutzer_id = $user->data['user_id'];

// Nun erfolgt die eigentliche Prüfung:
$is_in_group = group_memberships($gruppen_id, $benutzer_id , true);   
Kommentar: Wenn aus mehren Gruppen geprüft werden soll.
Finde:

Code: Select all

$load_center = true;   
Danach einfügen:

Code: Select all

// zu überprüfende Gruppen IDs ( Beispiel Gruppen ID 5, 10, 12, 15 )
// Hinweis: Bei mehreren Gruppen muss es ein array() sein!
$gruppen_id = array(5,10,12,15);

// zu überprüfender User ( Beispiel: Der User, der diese Seite aufgerufen hat )
$benutzer_id = $user->data['user_id'];

// Nun erfolgt die eigentliche Prüfung:
$is_in_group = group_memberships($gruppen_id, $benutzer_id , true);    
Finde:

Code: Select all

$template->assign_vars(array(
    'PORTAL_LEFT_COLUMN'     => $portal_config['portal_left_column_width'],
    'PORTAL_RIGHT_COLUMN'     => $portal_config['portal_right_column_width'],
));   
Danach einfügen:

Code: Select all

if ($is_in_group == true)
{
    // Teile dem Template System mit, das die Variable "S_IN_GROUP" den Wert TRUE bekommt
    $template->assign_var('S_IN_GROUP', true);
}   
In diesen Dateien kannst Du Blöcke:
enthält Standard-Blöcke:
root/styles/deinstyle/template/portal/portal_center.html
root/styles/deinstyle/template/portal/portal_left.html
root/styles/deinstyle/template/portal/portal_right.html

enthält Zusatz-Blöcke:
root/styles/deinstyle/template/portal/block/additional_blocks_center.html
root/styles/deinstyle/template/portal/block/additional_blocks_left.html
root/styles/deinstyle/template/portal/block/additional_blocks_right.html

- mit diesem Code versehen:
über dem Block-Code:

Code: Select all

<!-- IF S_IN_GROUP -->
unter dem Block-Code:

Code: Select all

<!-- ENDIF -->
zum Beispiel:
Marc wrote:

Code: Select all

          <!-- IF S_IN_GROUP -->
          <!-- IF S_DISPLAY_POLL -->
             <!-- INCLUDE portal/block/poll.html -->
          <!-- ENDIF -->
          <!-- ENDIF -->
Und hier noch eine Alternative:
Hiermit hast Du die Möglichkeit einzelnen und/oder mehren Gruppen bestimmte Blöcke sichtbar zumachen