Php oder Smarty Code Hilfe

Hallo zusammen,

ich möchte die basketcontent.tpl so bearbeiten, dass auch die Felder der Auswahlliste angezeigt (wegen der Button-Lösung). Mein Problem ist, dass ich von HTML etwas aber von php oder smarty null Ahnung habe. Prinzipiell ist das Verständnis für Programme schon gegeben (C++, VB.NET), dadurch habe ich auch die betreffende Code-Zeile gefunden:

												[{$oList->getLabel()}]: [{$oActiveSelection->getName()}]

Die Ausgabe wäre jetzt in unserem Shop:
Mützenfutter: Fleece +3,00€

Jetzt zur Frage:
Welchen Befehl müsste ich auf [{$oActiveSelection->getName()}] anwenden, dass nur alle Zeichen links vom Preis ausgegeben werden?

Danke schon mal.

Gruß
Christoph

Bei deinem geposteten Beispiel, am einfachsten wohl so:


[{assign var="odesc" value='+'|split:$oActiveSelection->getName()}]
[{$odesc[0]}]

Allerdings siehst Du, dass es in deinem Fall vermutlich weniger Sinn macht, da ja das + Zeichen für die Trennung benötigt wird. Entweder du fragst den String vorher immer ab und änderst die Bedingung, oder du suchst mal nach substr und strpos.

Wenn Du VB kannst, dürfte das kein Problem für Dich sein.

Ich hab jetzt den folgenden Code mir zusammengebastelt (analog VB).
Aber leider funktioniert der nicht:

[{assign var=“oPosSBW” value=strpos($oActiveSelection->getName(), ‘+’)}]
[{if $oPosSBW !== false}]
[{substr($oActiveSelection->getName(),0,$oPosSBW)}]
[{/if}]

edit: Wie kann man php-Code formatiert darstellen?

[QUOTE=Christoph0;104534]
edit: Wie kann man php-Code formatiert darstellen?[/QUOTE]

schau mal in den Link rechts unten in meiner Signatur :slight_smile:

das, wo [Schnellantwort] drauf steht? :smiley:

:D:D

Das gibt z.B die Position zurück.


[{ assign var="oPosSBW" value=$oActiveSelection->getName()|strpos:"+" }]
[{$oPosSBW }] 

und das sollte den Rest erklären:


[{ assign var="oMEINSTRING" value='popsfopisdufisudfisd' }]
[{$oMEINSTRING|substring:3:$oPosSBW }] 

[QUOTE=vanilla thunder;104549]das, wo [Schnellantwort] drauf steht? :D[/QUOTE]

Ein Button ist doch mehr als ein ordinärer Link… :smiley:

Vielen Dank für die Hilfe. Habe nur im php-code substring in substr umgeändert, dann lief es (war ein test oder ;)).

So richtig php ist das aber nicht, oder? Habe mich bei meinem ursprünglichen Code an die php-Syntax gehalten, die einige Male im Internet zu finden ist. Kannst du mir eine Seite empfehlen mit der ich mich in die Code-Struktur von php (so wie die Templates programmiert sind) einarbeiten kann?

In der Zwischenzeit noch eine Frage:

In nachfolgendem Code (habe ich aus einem Forumsbeitrag von nickname bei dem es um die geänderte Darstellung der Artikeldetiails im Warenkorb geht) werden die Artikelartribute in einer Tabelle dargestellt. Ich möchte jetzt die Tabelle um eine zusätzliche Zeile erweitern (oder auch um zwei oder drei, je nachdem), damit auch die Auswahlliste in der Tabelle auftaucht. Meine Idee ist jetzt, dass ich die smarty.foreach.attribute.iteration in einer variable (oNumSBW) abspeichere und später dann um eins erhöht für die Auswahlliste verwende. Aber leider komme ich mit dem abspeichern in einer Variable und der folgenden Verwendung nicht weiter.

Wäre super wenn mir nochmal jemand helfen könnte.

[{if $basketproduct->getAttributes() }]
	<div class="detail_access" style="margin-top:10px;">
		<table class="attributes">
			[{foreach from=$basketproduct->getAttributes() item=oAttr name=attribute}]
				<tr>
					<th id="attrTitle_[{$smarty.foreach.attribute.iteration}]"><strong>[{$oAttr->oxattribute__oxtitle->value}]</strong></th>
					<td id="attrValue_[{$smarty.foreach.attribute.iteration}]">[{$oAttr->oxattribute__oxvalue->value}]</td>
				</tr>
				[{assign var="oNumSBW" value=$smarty.foreach.attribute.iteration}]

			[{/foreach}]														

			[{* *}]
			[{if !$oViewConf->showSelectListsInList()}]
				[{assign var="oSelections" value=$basketproduct->getSelections(null,$basketitem->getSelList())}]
				[{if $oSelections}]
					[{foreach from=$oSelections item=oList name=selections}]
						[{assign var="oNumSBW" value=$oNumSBW+1}]

						<tr>
							[{assign var="oActiveSelection" value=$oList->getActiveSelection()}]
							[{assign var="oPosSBW" value=$oActiveSelection->getName()|strpos:"+" }] 
							
							<th id="attrTitle_[{$oNumSBW}]"><strong>[{$oList->getLabel()}]</strong></th>
							
							<td id="attrValue_[{$oNumSBW}]">															
								[{if $oPosSBW !== false}]						
									[{$oActiveSelection->getName()|substr:0:$oPosSBW }] | 
								[{else}]
									[{$oActiveSelection->getName()}] | 
								[{/if}]													
							</td>

							<input type="hidden" name="aproducts[[{$basketindex}]][sel][[{$smarty.foreach.selections.index}]]" value="[{if $oActiveSelection }][{$oActiveSelection->getValue()}][{/if}]">
						</tr>
					[{/foreach}]
				[{/if}]											
			[{/if}]
			
			[{* *}]
		
		</table>
		
	</div>
[{/if}]


[QUOTE=Christoph0;104627]Vielen Dank für die Hilfe. Habe nur im php-code substring in substr umgeändert, dann lief es (war ein test oder ;)).
[/QUOTE]
Also zumindest kein absichtlicher Test:D:D:D:D

[QUOTE=Christoph0;104627]So richtig php ist das aber nicht, oder?
[/QUOTE]

Nö, Stichwort Smarty

Also wenn ich Dich richtig verstehe, funktioniert es grundsätzlich, aber deine Variable wird nicht hochgezählt, oder?
Mach es doch ganz einfach. Bei deinen Auswahllisten, also der zweiten Schleife, mach folgendes:


<th id="attrTitle_1_[{$smarty.foreach.selections.iteration}]"><strong>[{$oList->getLabel()}]</strong></th> 
                             
<td id="attrValue_1_[{$smarty.foreach.selections.iteration}]">      

Es geht ja vermutlich nur darum, dass die ID´s eindeutig sind, was ja auch richtig ist, oder?

Dann kannst Du dir das ganze hochzählen sparen.

Merci Merci Merci

Bin halt ein bisschen von den objektorientierten Sprachen versaut und versuche immer alles mit einer gewissen Struktur und Eleganz zu lösen.

Super genial, ganu so wollte ich es. Kannst die Lösung ja mal sehen unter:
http://www.sonnenblumen-werkstatt.de/shop/Fuer-kleine-Entdecker/Muetzen/Jersey-Muetze-TOOLS.html
Im Warenkorb dann auf Arikeldetails.

Servus

Büdde:)

OOP ist auch hier ein Thema an dem du langfristig nicht vorbei kommst;)

Sieht schick aus, gut gemacht:D

Wie macht Ihr dann das mit der Codeentwicklung? Gibt es eine Programmierumgebung wie Visual Studio wo man debuggen und den Code Schritt für Schritt durchgehen kann?

Ist gerade nicht so zielführend: Code ändern, FTP hochladen, tmp leeren, Seite aufrufen und kontrollieren --> wieder zurück zum Code ändern (im schlimmsten Fall wird gar nichts mehr angezeigt).