Page 1 of 1

aktuellen Style einem (Modul) Link übergeben

Posted: 25. March 2013 12:05
by Heiko
Deine Portal Version: 2.0.1
Typ Deines phpBB Forums: Standard phpBB3
MODs installiert: Nein
Dein Wissensstand: Einsteiger

Was hast Du gemacht, bevor das Problem aufgetreten ist?


Was hast Du bereits versucht um das Problem zu lösen?
habe das Modul Links umgeschrieben, um eine Link variable (für Bild-url) erweitert und das ein template für die mittlere Spalte genommen.
Leider funktioniert das Linkmodul in der mittleren Spalte nicht und wenn man es dafür freischaltet, kommt beim Aufruf der Seite nur eine Fehlermeldung.

habe Tante Google bemüht m herauszufinden wie ich Links und Bilder in der mittleren Spalte verwalten kann und leider nichts gefunden.


Fehlerbeschreibung und Nachricht
Hallo,

Habe in der mittleren Spalte das Modul "eigenen Block" hinzugefügt.
Darin hab ich den BB code deaktiviert und in html einen kleinen Content eingefügt. Dieser enthält neben Bildern auch links, welche auf interne Forenseiten verweisen. Mein Problem, das aktuelle Template wird nciht übergeben, sondern man landet im Standarttemplate.
So weit ich das gesehen habe, konnte ich da auch keine Foren-Variablen benutzen.
Weiss jemand eine Lösung dafür? link.php?style='aktuelles Template'
Viele Grüße
Heiko

Re: aktuellen Style einem (Modul) Link übergeben

Posted: 25. March 2013 14:31
by Kirk
Hi
Heiko wrote:Leider funktioniert das Linkmodul in der mittleren Spalte nicht und wenn man es dafür freischaltet, kommt beim Aufruf der Seite nur eine Fehlermeldung.
Was kommt da fü eine Fehlermeldung?
Ein Link zu deinem Board währe hilfreich.

Re: aktuellen Style einem (Modul) Link übergeben

Posted: 25. March 2013 17:27
by Heiko
Kirk wrote:Hi
Heiko wrote:Leider funktioniert das Linkmodul in der mittleren Spalte nicht und wenn man es dafür freischaltet, kommt beim Aufruf der Seite nur eine Fehlermeldung.
Was kommt da fü eine Fehlermeldung?
Ein Link zu deinem Board währe hilfreich.
Hallo,

also da kommt:

Fatal error: Call to undefined method portal_links_module::get_template_center() in /www/htdocs/w0102f8a/bb/portal.php on line 103

wenn man in dem Modul: Links

Code: Select all

/**
    * Allowed columns: Just sum up your options (Exp: left + right = 10)
    * top        1
    * left        2
    * center    4
    * right        8
    * bottom    16
    */
    var $columns = 14;  
einstellt, dann kann man ja auch das in der mittlere Spalte anwählen. Dafür scheint das Linkmodul nicht gemacht zu sein, auch wenn man in der template-seite die css Styles nimmt, die auch andere Module in der mittleren Spalte nutzen.

ach ja ein Link zum Forum; es ist noch in der Testphase und ich helfe da beim einrichten ;)

http://www.hexenzirkel.info

in der Mitte ist ein eigener Block mit teilweise internen Links, erstellt mit dem vorgegeben html Editor. Wenn man nicht den Standart-Style nutzt, lande ich aber nach Aktivierung eines solchen Links wieder im Standart-Style.
ja, soweit erst mal,
Viele Grüße
Heiko

Re: aktuellen Style einem (Modul) Link übergeben

Posted: 25. March 2013 18:48
by Kirk
Das Link Modul ist normalerweise nicht für die Mitte bestimmt, aber das kann so ändern:
Öffne: root/portal/modules/portal_links.php
Finde:

Code: Select all

	/**
	* Allowed columns: Just sum up your options (Exp: left + right = 10)
	* top		1
	* left		2
	* center	4
	* right		8
	* bottom	16
	*/
	public $columns = 10;
Ersetzen mit:

Code: Select all

	/**
	* Allowed columns: Just sum up your options (Exp: left + right = 10)
	* top		1
	* left		2
	* center	4
	* right		8
	* bottom	16
	*/
	public $columns = 31;

Finde:

Code: Select all

public function get_template_acp($module_id)
Davor einfügen:

Code: Select all

	public function get_template_center($module_id)
	{
		global $config, $template, $phpEx, $phpbb_root_path, $user, $db;

		$links = array();
		$portal_config = obtain_portal_config();
		
		$links = $this->utf_unserialize($portal_config['board3_links_array_' . $module_id]);
		
		// get user's groups
		$sql = 'SELECT group_id
				FROM ' . USER_GROUP_TABLE . '
				WHERE user_id = ' . (int) $user->data['user_id'] . '
				ORDER BY group_id ASC';
		$result = $db->sql_query($sql);
		while($row = $db->sql_fetchrow($result))
		{
			$groups_ary[] = $row['group_id'];
		}
		$db->sql_freeresult($result);
		
		
		for ($i = 0; $i < sizeof($links); $i++)
		{
			if($links[$i]['type'] == self::LINK_INT)
			{
				$links[$i]['url'] = str_replace('&', '&', $links[$i]['url']); // we need to do this in order to prevent XHTML validation errors
				$cur_url = append_sid($phpbb_root_path . $links[$i]['url']); // the user should know what kind of file it is
			}
			else
			{
				$cur_url = $links[$i]['url'];
			}
			
			$cur_permissions = explode(',', $links[$i]['permission']);
			$permission_check = array_intersect($groups_ary, $cur_permissions);
			
			if(!empty($permission_check) || $links[$i]['permission'] == '')
			{
				$template->assign_block_vars('portallinks', array(
					'LINK_TITLE'		=> (isset($user->lang[$links[$i]['title']])) ? $user->lang[$links[$i]['title']] : $links[$i]['title'],
					'LINK_URL'			=> $cur_url,
					'MODULE_ID'			=> $module_id,
					'NEW_WINDOW'		=> ($links[$i]['type'] != self::LINK_INT && $config['board3_links_url_new_window_' . $module_id]) ? true : false,
				));
			}
		}

		return 'links_center.html';
	}
Dieser Code oben ist für den Mittleren Block.

Erstelle eine Datei mit den Namen links_center.html mit folgenden Inhalt:

Code: Select all

{$C_BLOCK_H_L}{$TITLE}{$C_BLOCK_H_R}
	<div class="portal-navigation">
			<ul>
			<!-- BEGIN portallinks -->
				<!-- IF $MODULE_ID eq portallinks.MODULE_ID --><li><a href="{portallinks.LINK_URL}" title="{portallinks.LINK_TITLE}" <!-- IF portallinks.NEW_WINDOW -->onclick="window.open('{portallinks.LINK_URL}'); return false;"<!-- ENDIF -->>{portallinks.LINK_TITLE}</a></li><!-- ENDIF -->
			<!-- BEGINELSE -->
				<span style="float:left;" class="gensmall"><strong>{L_LINKS_NO_LINKS}</strong></span><br />
			<!-- END portallinks -->
			</ul>
	</div>
{$C_BLOCK_F_L}{$C_BLOCK_F_R}
Diesen lädst du nach root/styles/[stylename]/template/portal/modules

Somit lässt sich der Block in alle Seiten verschieben.

Anmerkung:
Dieses ist jetzt für den Standard Link Block, deine Veränderungen musst du ggf. wieder hinzufügen.


Was den eigenen Block angeht, der Link im bild verweist ja auf

Code: Select all

<a href="http://www.hexenzirkel.info/bb/use_me/tageskarte/tageskarte.php
was dem Standard Style entspricht, das lässt sich so nicht ändern weil zb. wenn man den Style Astro wählt
aus http://www.hexenzirkel.info/bb/portal.php das hier wird http://www.hexenzirkel.info/bb/portal.php?style=12
Es wird immer die Style ID drangehängt.

Re: aktuellen Style einem (Modul) Link übergeben

Posted: 25. March 2013 20:40
by Heiko
Hallo Udo,

Vielen vielen Dank, es hat funktioniert, ich kann ein Link Modul mittig generieren.
meine Variable für ein Bildlink wird zwar noch nicht übergeben, aber daran bastle ich noch ein wenig.

Vielen Dank noch mal für die schnelle Hilfe.
Viele Grüße
Heiko

Re: aktuellen Style einem (Modul) Link übergeben

Posted: 25. March 2013 21:55
by Heiko
ich noch mal,
mit der Bildurl übergeben das klappt jetzt auch, super *freu* :D
vielen Dank noch mal,
Viele Grüße
Heiko

Re: aktuellen Style einem (Modul) Link übergeben

Posted: 26. March 2013 09:24
by Kirk
Freut mich das es geklappt hat.
Es währe schön wenn du allen hier mitteilen würdest was du verändert hast.

Re: aktuellen Style einem (Modul) Link übergeben

Posted: 26. March 2013 11:36
by Heiko
Kirk wrote:Freut mich das es geklappt hat.
Es währe schön wenn du allen hier mitteilen würdest was du verändert hast.
oh sorry, natürlich,

es ging "nur" darum, in der mittleren Spalte ein paar Bildlinks unterzubringen, welche ich im ACP verwalten kann.
also ich habe eine copie des Links Modul angelegt und die Dateinamen auf ...links_center.*** umbenannt.
Was zu beachten ist, wenn man module bearbeitet hab ich hier gefunden:
knowledge/kb_show.php?id=58
bzw.:
welche Dateien betroffen sind:
knowledge/kb_show.php?id=55


in: root/portal/modules/portal_links_center.php hab ich die Dateinamen angepasst:

Code: Select all

/**
	* Default modulename
	*/
	public $name = 'PORTAL_LINKS_CENTER';

	/**
	* Default module-image:
	* file must be in "{T_THEME_PATH}/images/portal/"
	*/
	public $image_src = '';

	/**
	* module-language file
	* file must be in "language/{$user->lang}/mods/portal/"
	*/
	public $language = 'portal_links_center_module';
	
	/**
	* custom acp template
	* file must be in "adm/style/portal/"
	*/
	public $custom_acp_tpl = 'acp_portal_links_center';
also immer das "_center" angefügt.

überall wo die variable link_url auftauchte, habe ich diese kopiert und eine Zeile mit link_img als variable eingefügt,
was nicht funktionierte, .... mit dem Code insgesammt bin ich total überfordert, um ihn zu verstehen,
also dachte ich, ich brauch "nur" eine Textzeile um einen Bildlink weiterzugeben, also hab ich überall die variable "link_title" kopiert und "title" überall mit "img" ersetzt ein Beispiel:

Code: Select all

			if(!empty($permission_check) || $links[$i]['permission'] == '')
			{
				$template->assign_block_vars('portallinks', array(
					'LINK_TITLE'		=> (isset($user->lang[$links[$i]['title']])) ? $user->lang[$links[$i]['title']] : $links[$i]['title'],
					'LINK_URL'			=> $cur_url,
					'LINK_IMG'			=> (isset($user->lang[$links[$i]['img']])) ? $user->lang[$links[$i]['img']] : $links[$i]['img'],
					'MODULE_ID'			=> $module_id,
					'NEW_WINDOW'		=> ($links[$i]['type'] != self::LINK_INT && $config['board3_links_url_new_window_' . $module_id]) ? true : false,
				));
			}
unter 'LINK_URL' hab ich eine Zeile mit 'LINK_IMG' eingefügt die genau so behandelt wird wie die LINK_TITLE variable,
oder hier:

Code: Select all

foreach($links_urls as $i => $url)
		{
			$links[] = array(
				'title' 		=> $links_titles[$i],
				'url'			=> $links_urls[$i],
				'img'			=> $links_img[$i],
				'type'			=> $links_types[$i],
				'permission'	=> $links_permissions[$i],
			);
		}
also nur eingefügt: " 'img' => $links_img[$i], "

das hab ich mit dem ganzen Dokument gemacht.

Code: Select all

       /**
       * Allowed columns: Just sum up your options (Exp: left + right = 10)
       * top      1
       * left      2
       * center   4
       * right      8
       * bottom   16
       */
       public $columns = 31;


da hatte ich erst 14, weil ich dachte: links und rechts 10, + 4 für mitte,
wurde dann auch in der Mitte aufgeführt, was jedoch beim Seitenaufruf zum php-Error führte, den ich oben aufgeführt habe.
hab dann den Wert nach Deiner Anleitung auf 31 verändert.

in language/de/mods/portal/portal_links_center_module.php

Zeile 35:

Code: Select all

'PORTAL_LINKS_CENTER'		=> 'Links mit Bild',
Zeile 48:
'ACP_PORTAL_LINK_IMG_EXP' => 'Bildlink URL',
Zeile 57:

Code: Select all

'NO_LINK_IMG'					=> 'Du musst ein Bildlink eingeben.',
in: styles/[akt.template]/template/portal/modules/links_center.html

Code: Select all

{$C_BLOCK_H_L}{$TITLE}{$C_BLOCK_H_R}
<div class="panel bg1" style="margin-bottom: 0px">
		<div class="inner"><span class="portal-corners-top-inner"></span>
			<div class="postbody" style="width: 100%">
				<div class="content" style="min-height: 1em;">
				  <table width="100%" border="0" cellspacing="2" cellpadding="0">
  <tr>
  <!-- BEGIN portallinks -->
				<!-- IF $MODULE_ID eq portallinks.MODULE_ID --><td align="center"><a href="{portallinks.LINK_URL}" title="{portallinks.LINK_TITLE}" <!-- IF portallinks.NEW_WINDOW -->onclick="window.open('{portallinks.LINK_URL}'); return false;"<!-- ENDIF -->><img src="{portallinks.LINK_IMG}" height="100" /><br />{portallinks.LINK_TITLE}</a></td><!-- ENDIF -->
			<!-- BEGINELSE -->
				<span style="float:left;" class="gensmall"><strong>{L_LINKS_NO_LINKS}</strong></span>
			<!-- END portallinks -->
   
  </tr>
</table>

				</div>
			</div>
		<span class="portal-corners-bottom-inner"></span></div>
	</div>
{$C_BLOCK_F_L}{$C_BLOCK_F_R}
okay, eine Tabelle ist vom code her net sauber, man könnte die Bildlinks auch mit <div> anordnen, aber es sind nur 4 -5 Links, die mittig ausgerichtet werden sollten und dafür reicht es.

damit sich der Bildlink im Adminmenü eingeben lässt:
adm/styles/portal/acp_portal_links_center.html
nach:

Code: Select all

<dl>
		<dt>
			<label for="link_url">{L_ACP_PORTAL_LINK_URL}:</label><br />
			<span>{L_ACP_PORTAL_LINK_URL_EXP}</span>
		</dt>
		<dd><input name="link_url" type="text" id="link_url" value="{LINK_URL}" maxlength="255" /></dd>
	</dl>
eingefügt:

Code: Select all

 <dl>
		<dt>
			<label for="link_img">{L_ACP_PORTAL_LINK_IMG}:</label><br />
			<span>{L_ACP_PORTAL_LINK_IMG_EXP}</span>
		</dt>
		<dd><input name="link_img" type="text" id="link_img" value="{LINK_IMG}" maxlength="255" /></dd>
	</dl>
okay, danach kam wie gesagt der Fehler und dann hast Du mir hier glücklicherweise weiterhelfen können, als Du gepostet hast, wie die portal_links.php ergänzt werden muss, damit sie auch in der mittleren Spalte funktioniert.

Sorry wenn ich vielleicht nicht korrekt dokumentiert hab wie ich vorgegangen bin; bin eher Laie auf dem Gebiet; der größte Teil des Codes ist für mich kaum nachvollziehbar :oops:
ich hoffe es war nicht zu konfus
Viele Grüße
Heiko