Zum Inhalt springen

backPID in Detailansicht ist falsch

Erstellt am 24. Februar 2007 · 19 Antworten · letzte Antwort am 16. Februar 2008

Tags: Frage

Eros ·

Hallo,

nach dem update auf tt_products 2.5.2 wird in ###LINK_ITEM### nicht mehr die backPID zur Listenansicht (wird in der URL der Detailansicht korrekt dargestellt!), sondern die PID der Detailansicht selbst übergeben. Man kommt demzufolge nicht mehr zurück zur Listenansicht!

Hat das schon wer gehabt?

Grüsse

Eros ·

Ich habe mir selbst mal geholfen!

in der Datei class.tx_ttproducts_single_view.php kann folgendes eigentlich nicht stimmen, da die backPID auch übergeben werden soll, wenn clickIntoBasket nicht gesetzt ist!

if ($this->conf['clickIntoBasket'] && $backPID)	{
	$pid = $backPID;
} else {
	$pid = $TSFE->id;
}

Ändert man das also in:

if ($backPID) {
	$pid = $backPID;
} else {
	$pid = $TSFE->id;
}

oder:

$pid = ( $backPID ? $backPID : $TSFE->id);

...dann geht's.

Ich habe jetzt keine grossartigen Überlegungen angestellt. Wenn ich irgendwie falsch liege und das Problem anders eleganter zu lösen ist, wäre ich für einen Hinweis sehr dankbar!

Flink ·

Nein, weil die pid auch für die FORM_URL verwendet wird. Es gibt clickIntoBasket, damit man nach Einfügen eines Produktes in den Warenkorb oder auch auf die Listenansicht zurückkommt. Im Normalfall ist das aber nicht erwünscht. Man gibt Produkte in den Warenkorb, bleibt aber auf der Seite der Einzelansicht.

Man müßte ev. einen neuen Marker einführen: ###BACK_URL###

dabjoern ·

Hi auch,

also ich habe mir das mal in meinem alten Shop (Version 2.4.11) und meinem neuen Shop 2.5.2 angeschaut. Im alte Shop habe ich mit <!--###LINK_ITEM###--> im Single View ein zurück zur letzten List-View hinbekommen. Im neuen Shop (selbe Einstellungen etc.) geht das nicht mehr. Also ich fände eine derartige Funktion schon absolut sinnvoll. Also entweder über den neuen Marker ###BACK_URL### oder halt die Funktionsweise wie früher. Gibt es negative Auswirkungen, wenn ich Eros' seine Codeänderung einfüge?

Grüße
dabjoern[/url]

Flink ·
dabjoern schrieb

###BACK_URL###

Es wäre sinnvoll, einen neuen Marker einzuführen. Bei dieser Code-Änderung hätte es zur Folge, daß in der Einzelansicht nachher immer auf die Listenseite zurückgewechselt wird. Manche wollen das aber nicht.

Besser wäre wohl ein ###PID_BACK### Marker, ähnlich zu ###PID_BASKET###. Wegen der Sprache wäre noch ein ###PARAMS### notwendig. Dann könnten alle notwendigen Parameter noch ausgefüllt werden, wie z.B.

&amp;L=2&amp;tt_products_pi1[cat]=3
dabjoern ·

Hi Flink,

was denkst du? Wer könnte die Programmierung übernehmen? Ich bin nicht fit in Sachen PHP, sry. Toll fände ich die Funktionalität allerdings. Wie sieht es aus mit Sponsoring? Das Thema Sponsoring habe ich noch nicht ganz durchstiegen, fällt mir jetzt aber mal spontan ein.

Viele Grüße
dabjoern

just2b ·
dabjoern schrieb

Das Thema Sponsoring habe ich noch nicht ganz durchstiegen, fällt mir jetzt aber mal spontan ein.

du zahlst und (irgendw)er machts 😃

georg

dabjoern ·
just2b schrieb

du zahlst und (irgendw)er machts 😃

Und was sind so die typischen beträge?

grüße
dabjoern

just2b ·
dabjoern schrieb
just2b schrieb

du zahlst und (irgendw)er machts 😃

Und was sind so die typischen beträge?

nun da kommts halt drauf an was für ein art von sponsoring das ist. Für mich unterscheide ich da zwischen:
a) Ich will ein (kleines) Feature so oder so machen, hatte noch keine Zeit oder Lust und Person X gibt einen kleinen Betrag, quasi als Gefälligkeit oder Amazon-Wunschliste
b) das Feature ist mehr Arbeit, dann muss man sich halt zusammensitzen und das klären und dann ist das davon abhängig wie wichtig das Feature für mich ist und wieviel Zeit ich habe. Je weniger Zeit/je unwichtiger, desto mehr nähert sich das ganze Fall c.
c) das Feature braucht nur der Kunde und dann ist das eine ganz normale Freelancer-Arbeit, Betrag siehe Stundenlohn

aber das ganze musst du wohl mit Franz klären

georg

febo ·

Hi Leute,

das gleiche Problem mit dem "Zurück zur Produktliste" Link hatte ich auch. Meine Lösung sieht wie folgt aus.

Im Script class.tx_ttproducts_single_view.php finden wir in Zeile 227 (sollte bei nicht geändertem Script der Fall sein) folgenden Code, der den ITEM_LINK setzt.

$wrappedSubpartArray['###LINK_ITEM###'] = array('<a href="'. $this->pibase->pi_getPageLink($pid,'',$this->marker->getLinkParams('',array(),true), array('useCacheHash' => true)) .'">','</a>');

Diese Zeile kopieren wir einmal und fügen sie direkt darunter wieder ein und ändern folgendes ab:

Aus LINK_ITEM machen wir z.B. LINK_BACK und für die $pid setzen wir $backPID. Im Template kopieren wir die Zeile Zurück zur Produktliste und ändern auch hier LINK_ITEM in LINK_BACK (oder wie ihr euren Backlink Marker nennen wollt). Alles Speicher, Frontend reloaden und schauen ob der Backlink in der Single Ansicht funktioniert.

Bei mir hat es so geklappt. 😃

$wrappedSubpartArray['###LINK_BACK###'] = array('<a href="'. $this->pibase->pi_getPageLink($backPID,'',$this->marker->getLinkParams('',array(),true), array('useCacheHash' => true)) .'">','</a>');

Viel Spaß beim Ändern, schönes Wochenende und

Gruß febo

dabjoern ·

Hi febo,

danke für das tolle HowTo. Funktioniert super, habe es eben eingebunden. Bin sehr glücklich. Ich finde, diese feinen Zeilen sollten in die Extension aufgenommen werden!

Viele Grüße
dabjoern

kommanderprix ·

Dear febo,

weisst du zufällig auch wie ich den Zurück Link auf der Detailansicht statt

www.seite.ch/index.php?id=11&tx_ttproducts_pi[backPID]=22&cHash=528422f227

auf

www.seite.ch/index.php?id=11&tx_ttproducts_pi[backPID]=11&cHash=528422f227

hinbekomme?
Also der backPID im Zurück Link auch auf den Pid der Listenansicht (also den backPID aus dem aktuellen Link der Detailansicht) verweist, und diese somit auch im FORM_URL Marker verwendet wird.

Wie kann ich da das entsprechende Array der Funktion getLinkParams in die Mangel nehmen...?

Ciao
Andreas

febo ·

Hi kommanderprix,

hm...? Leider werde ich aus deiner Problembeschreibung nicht schlau.

Der von mir hinzugefügte Code ist ja die packPID, welche auf die Seite verweist, von der du gekommen bist. Die backPID in einem Link ist also, wenn ich nicht falsch liegen 😃 , immer die aktuelle Seite.

Ist die aktuelle Seite auch die auf welche verwiesen wird, bekommst du den gewünschten link.

Erkläre dich bitte etwas genauer. #giggle#

Gruß

febo

febo ·

Hi dabjoern,

danke für die Blumen :p . Helfe immer gerne, wenn ich eine Lösung weiß.

Gruß

febo

kommanderprix ·
febo schrieb

...
Die backPID in einem Link ist also, wenn ich nicht falsch liegen 😃 , immer die aktuelle Seite.
...

Hi Febo,

eben nicht, es wird der ID der Singlansicht als backPID mitgegeben.

jetzt hab ich vorerst mal mit einem Hack das umgangen, würde das aber noch immer gerne so richtig lösen.
Andreas

febo ·

Hi Andreas,

irgendwie verstehe ich das nicht. Kannst Du mir einen Link zu dieser Seite schicken, dann schaue ich mir das mal an.

Gruß

febo

febo ·

Hi kommanderprix,

tut mir leid, dass ich mich erst jetzt melde. In den letzten Tagen musste ich am Shopsystem, welches ich für einen Kunden einrichte, so ziemlich alles ändern. Bei den Änderungen bin auch ich auf das Problem gestoßen, dass in der Einzelansicht ein falscher Link vorhanden ist.

Im control Ordner der Extension gibt es das Script class.tx_ttproducts_marker.php welches, ich sage mal, globale Marker setzt. Hierzu gehört auch der Marker ###FORM_URL###.

Der backPID wird in der Funktion weiter unten (getLinkParams()) gesetzt. Hier wird über $TSFE->id; die ID der aktuellen Seite als backPID vergeben.

$queryString[$this->pibase->prefixId.'[backPID]'] = $TSFE->id; // queryString['backPID']= $TSFE->id;

Ich habe die Zeile wie folgt geändert so dass eine übergebene backPID wieder vergeben wird. Wurde keine backPID übergeben, wird der übliche Wert vergeben.

$queryString[$this->pibase->prefixId.'[backPID]'] = (isset($this->pibase->piVars['backPID'])) ? ($this->pibase->piVars['backPID']) : $TSFE->id; // $queryString['backPID']= $TSFE->id;

Ich hoffe, dass ich dir hiermit helfen konnte.

Gruß

febo

P.S. Den "//auskommentierten Rest" kannst Du natürlich auch weglassen 😃

SirVivor ·

Lieber febo,

besten Dank für diesen sehr genialen Tip =)
das Ändern des LINK_ITEM "Zurück zur Übersicht" hätte nicht besser funken können 😉

T3 4.1 und tt_products 2.5.2

$wrappedSubpartArray['###LINK_BACK###'] = array('<a href="'. $this->pibase->pi_getPageLink($backPID,'',$this->marker->getLinkParams('',array(),true), array('useCacheHash' => true)) .'">','</a>');

Liebe Grüße,
Sascha

febo ·

Hi SirVivor,

vielen Dank für die Blumen. Manches mal habe auch ich eine gute Idee 😃

Gruß

febo

_o3_ ·

@febo
feine sache das, bastele gerade an nem neuen shop herum und dein codeschnippsel hat mir gerade sehr viel herumprobiererei erspart....

vielen dank.

einzig dösig das ich keine menuleiste aus den kategorien erstellen kann, also beim einbinden des "category: list" kommt nüx...und wozu zich weitere extension importieren nur damit man ein menu hinbekommt...
anyway...
cheers