4.6.2 aus Modul eine Template Datei überschreiben?


#1

Hallo,

ich muss eine .tpl aus einem Modul heraus überschreiben: links.tpl
( out/azure/tpl/page/info/ )

Die Variante wie hier von vanilla thunder beschrieben: AW: Mit Modul Template überschreiben - Oxid 4.7
ging bei mir in 4.6.2 in diesem Fall nicht. (Liegt vielleicht nichtmal an der Version.)

Die Klasse Links(views/links.php) selbst konnte ich zwar um eine Testfunktion erfolgreich erweitern, jedoch den Pfad

protected $_sThisTemplate = 'page/info/links.tpl';

nicht auf mein Modul beziehen

$_sThisTemplate = 'vendor/mymod/out/admin/tpl/my_links.tpl'

egal was ich machte er fing immer an ab /www/shop/out/azure/tpl/ zu suchen. Habe verschiedene Varianten ausprobiert von ‘my_links.tpl’ bis zum kopierten Pfad-Baum in der Mod (out/azure/…).

Also Klasse erweitern: ja
.tpl Pfad finden: nein

Liegt der Fehler in der Metadata? Einträge sehen so aus:


'extend'       	=> array(
		'links' => 'vendor/mymod/views/my_links',
	),
'files'       	=> array(
		'my_links.tpl' => 'vendor/mymod/out/azure/tpl/page/info/my_links.tpl',
	),
'templates'    	=> array(
		'my_links.tpl' => 'vendor/mymod/out/azure/tpl/page/info/my_links.tpl',
	),

Oder ist das “hardcoded” in den settings/htaccess?
Da ich das nur über eine Mod realisieren kann ist es mir nicht möglich schon vorhandene Shop Dateien wie .htaccess oder ähnliche von Hand ändern zu lassen damit die Mod überhaupt funktioniert. - Mit Blocks wär das Prima, die funktionieren… leider hat die .tpl keine Blocks. Oder würde das etwa über Komponenten klappen(hab noch nie was mit cmps gemacht)? Habe da vom Namen her keine passende gesehen oder ist es egal welche ich dafür erweitere?

Die Mod funktioniert soweit, nur im Frontend kommt so nix an. Über Hilfe / Alternativen würde ich mich riesig freuen, danke!


#2

[QUOTE=loockm;186359]ging bei mir […] nicht. (Liegt vielleicht nichtmal an der Version.)[/QUOTE]
Dann möchtest du also sagen, dass ich lüge und fehlerhaften Code hier verbreite?

Vergleiche mal aufmerksam deinen Code:

$_sThisTemplate = 'vendor/mymod/out/admin/tpl/my_links.tpl'

und meinen Code:

protected $_sThisTemplate = 'newsletter_lol.tpl';

(der übrigens genau so gut in 4.6 und für links.php funktioniert. Habe gerade extra einen 4.6er Shop neu aufgesetzt, um das zu testen.)

Fällt dir besonders beim Pfad irgendwas auf?

und auch das hier sieht nicht richtig aus:

'files'       	=> array(
		'my_links.tpl' => 'vendor/mymod/out/azure/tpl/page/info/my_links.tpl',
	),

Der Abschnitt “files” in metadata.php ist für php Dateien und an dieser Stelle gar nicht nötig.

Guck dir meinen Code nochmal aufmerksam an und ersetze einfach überall “newsletter” durch “links” (auch in Dateinamen)


#3

Danke für die schnelle Antwort. War jetzt leider einen Tag in der Berufsschule, daher nun meine späte Antwort.

[QUOTE=vanilla thunder;186362]Dann möchtest du also sagen, dass ich lüge und fehlerhaften Code hier verbreite?[/QUOTE]
Nein.

[QUOTE=vanilla thunder;186362]Guck dir meinen Code nochmal aufmerksam an und ersetze einfach überall “newsletter” durch “links” (auch in Dateinamen)[/QUOTE]
War tatsächlich das erste was ich tat, vor nun 10 Tagen. Gab eine weiße Seite. Heute nochmal als alleinstehendes Modul aktiviert: selbes Ergebnis.

(Vorher oxconfig in der DB zurückgesetzt)
Dateien in:
“modules/test/”

  • links_lol.php
  • links_lol.tpl
  • metadata.php

Inhalte:
metadata.php


<?php
$aModule = array(
	'id' => 'test',
	'title' => 'test',
	'version' => '1.0',
	'author' => 'vanilla thunder',
	'extend' => array(
		'links' => 'test/links_lol'
	),
	'templates' => array(
		'links_lol.tpl' => 'test/links_lol.tpl'
	)
);

links.php


<?php
class links_lol extends links_lol_parent {
  protected $_sThisTemplate = 'links_lol.tpl';
}

links_lol.tpl


[{capture append="oxidBlock_content"}]
    TESTMOD
    [{ insert name="oxid_tracker" title=$template_title }]
[{/capture}]

[{include file="layout/page.tpl" sidebar="Left"}]

Spaßenshalber danach die “links_lol.tpl” in “shop/out/azure/tpl/” kopiert und siehe da, es funktioniert. Nutzt mir nur nichts weil es ja aus dem Modul geladen werden muss.

Nachtrag: Es wird kein Eintrag im EXCEPTION_LOG.txt generiert wenn es nur die weiße Seite nach Modulaktivierung lädt.


#4

Hab’s aufgegeben :frowning:

Konnte es einfach nicht als Modul fertigstellen. Jetzt also widerwillig doch “händisch”* mit “halbem” Modul fertiggestellt da die Veröffentlichung laut Chef eh nicht gewollt war(wohl auch sinnfrei weil Version 4.6.2) und ein “alles über Modul” nur einfacher von Test- zu Live-Server zu patchen wäre. (*SQL manuell eingegeben, tpl Datei manuell in Root kopiert)

Nun kann ich erfolgreich URLs im Links Bereich mit einem Alias/Namen über das Backend versehen. Im Backend sortieren/suchen nach Alias möglich, wenn kein Alias “aktiv” wird weiterhin die URL statt Alias in den Links angezeigt.

Woran ich scheiterte:

  • Alte Shop Version(veraltete und tote Infos/Links zu Wikis oder Tutorials)
  • SQL Query aus Modul heraus(z.B. bei onActivate)
  • .tpl (ohne Blocks) vom Modul aus ersetzen

Geklappt haben:

  • SQL Query über phpmyadmin und Adminbereich
  • Admin Template erweitern(Blocks überschreiben)
  • Klassen mit Funktionen aus dem Modul erweitern(eingeben, abrufen, speichern, sortieren und suchen der neuen Inhalte im Backend)

Zumindest auch ohne OXID/PHP/SQL/smarty Kenntnisse und ohne abgeschlossenes Modul was dazugelernt.

Falls sich noch jemand erinnert: hier meine erste Hilfesuche nach 2 Monaten Selbststudium.
(Damit keiner sagen kann ich gebe schnell auf :stuck_out_tongue: )

Wünsche euch mehr Erfolg!
Einen lieben Gruß

[I]PS: Danke für dieses Forum, ohne es wär ich wohl nur Gestalter :D[/I]


#5

Hab das Problem dank diesem Beitrag:


heute gelöst, purer Zufall, dass ich darauf gestoßen bin. :hushed:

Der Bug war demnach noch in der Version mit der ich momentan arbeiten muss. Jetzt klappt auch die Test-Mod von vanilla_thunder (danke nochmal). Nun muss ich die (.tpl)Hälfte meiner Mods nicht mehr in unseren Shop “hard coden”. :heart_eyes:

Ich Zitiere die Lösung nochmal hierher (falls der Link^ irgendwann mal tot geht):


#6

= “stirbt” :smiley:


#7

Ha, das ehrt und freut mich natürlich, nach über 6 Jahren mit dem Thread noch mal helfen zu können! Das Problem hatte mich damals nervig lange und intensiv beschäftigt, um so froher war ich über die Lösung… :smiley: