Magento attribute tonen buiten het product pagina

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • mustiej
  • Registratie: September 2011
  • Laatst online: 09-10 17:43
Beste mensen,

Ik probeer het eventjes opnieuw.

Op een product pagina heb ik een aantal gegevens van een product. Hiervan heb ik het URL, naam, foto en nog paar attributen meegenomen om dit te kunnen tonen op de hoofdpagina(actie pagina).

De volgende code wordt gebruikt voor bijvoorbeeld de naam die linkje heeft naar desbetreffende product:
PHP:
1
                    <h3 class="product-name1"><a href="<?php echo $_product->getProductUrl() ?>" class="naam-oranje" title="<?php echo $this->htmlEscape($_product->getName()) ?>"><?php echo $this->htmlEscape($_product->getName()) ?></a></h3>


Maar nu heb ik een nieuwe attribute aangemaakt die actiekorting heet. Dit attribute heeft bij een product 25% als waarde.
Met de volgende code toont hij dit op de productpagina:
PHP:
1
<h1><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></h1> 


Logischer wijze zou de volgende code moeten werken als ik de attribute actiekorting wil aanroepen:
PHP:
1
<?php echo $_helper->productAttribute($_product, $_product->getActiekorting(), 'actiekorting') ?>


Dan krijg ik dit:
HTML:
1
<div class="actiekorting"></div>
in inspect element ongeacht of het in een div staat of niet of geen width/height heeft of niet. Geen errors niks.

Wat wel werkt is de volgende code:
PHP:
1
<?php  echo $_helper = Mage::helper('catalog/output'); echo $_helper->productAttribute($_product, $_product->getActiekorting(), 'actiekorting')?>


Output is dan 25% zoals in de back-end van Magento aangegeven.

Zodra ik de code tussen <div class="actiekorting"></div> zet krijg ik weer lege veld:

HTML:
1
<div class="actiekorting"></div>


Hij is dus ook niet verborgen door het CSS door de z-index bijvoorbeeld. Iemand een idee?
Het gaat dus om een product attribute die buiten het product pagina wordt getoond. Alle atributen werken in een div behalve de attribute actiekorting niet.

EDIT: dit is het probleem maar hiermee kom ik dus ook niet uit, zelfde resultaat als boven.
https://tahiryasin.wordpr...tribute-value-in-magento/

EDIT2: Dit zou zelfs moeten werken maar dat is dus niet zo.
PHP:
1
echo $_product->getAttributeText('actiekorting');
8)7

[ Voor 6% gewijzigd door mustiej op 16-04-2015 12:16 ]


Acties:
  • 0 Henk 'm!

  • Herko_ter_Horst
  • Registratie: November 2002
  • Niet online
Een div om werkende code heenzetten zou absoluut geen invloed moeten hebben op het resultaat van de PHP-slag (behalve dan dat er een div omheen komt te staan, uiteraard). Dus pak die code die volgens jou werkt en ga daar mee verder.

Zit je met inspect element wel naar de source te kijken? In mijn browser (Safari) kan ik kiezen of ik de DOM wil zien (dus inclusief het resultaat van CSS en JavaScript) of de source (dus echt de HTML zoals die van de server kwam). Sla anders de file eens op als raw HTML en bekijk hem met een gewone tekst editor.

Als de source wel goed is, zit het probleem in elk geval niet in PHP. Als de source niet goed is, zit het probleem aan de PHP-kant.

Overigens: als het probleem waar je naar linkt ook jouw probleem is, dan zou je dus errors moeten zien (aangenomen dat error reporting wel aan staat in je PHP, is dat zo?).

[ Voor 29% gewijzigd door Herko_ter_Horst op 16-04-2015 12:50 ]

"Any sufficiently advanced technology is indistinguishable from magic."


Acties:
  • 0 Henk 'm!

  • mustiej
  • Registratie: September 2011
  • Laatst online: 09-10 17:43
Dat vond ik dus ook al raar, op het moment dat het in en div staat werkte het niet meer. Maar het werkende versie zonder div heb ik niet meer :(

Het werkte zonder de div op dit manier:
PHP:
1
<?php $_helper = Mage::helper('catalog/output'); echo $_helper->productAttribute($_product, $_product->getActiekorting(), 'actiekorting');?>


Nu niet meer.. er gaat iets zo simpels fout maar ik kan het niet opsporen.. in de source zit alles goed. Ook in de CSS.

edit: Ik loop stage en dus zijn dit niet mijn codes maar error reporting heb ik nog niet tegengekomen in de bestanden waar ik tot nu toe mee hebt gewerkt. Via Magento back-end kan je het aanzetten. Maar in het log file zie je gewoon het fatal error. Wat kan ik daarmee als ik vragen mag?
echo $_product->getActiekorting(); zou al voldoende moeten zijn. :?

[ Voor 27% gewijzigd door mustiej op 16-04-2015 13:02 ]


Acties:
  • 0 Henk 'm!

  • Herko_ter_Horst
  • Registratie: November 2002
  • Niet online
Oh, je hebt een fatal error. En je dacht niet dat het handig was om die even te vermelden in je topic start (daar staat nu namelijk: "Geen errors niks."? Wat is de precieze tekst van die fatal error?

Aangenomen dat het dezelfde error is als in de link die je postte: heb je de oplossing die daar staat geprobeerd? En wat was toen het resultaat (inclusief mogelijke andere errors meldingen in de log)?

Je kan wel hopen dat echo $_product->getActiekorting(); voldoende is, maar als je een fatal error krijgt, is dat dus niet zo.

"Any sufficiently advanced technology is indistinguishable from magic."


Acties:
  • 0 Henk 'm!

  • Geerrrt
  • Registratie: Juli 2008
  • Laatst online: 01-10 12:05
Probeer eens:

PHP:
1
<div class="actiekorting"><?php echo $_product->getData("actiekorting"); ?></div>

Eury#2434


Acties:
  • 0 Henk 'm!

  • kutagh
  • Registratie: Augustus 2009
  • Laatst online: 14-10 23:28
Waarom doe je
PHP:
1
echo $_helper = Mage::helper('catalog/output');
? (met name de echo).

Acties:
  • 0 Henk 'm!

  • mustiej
  • Registratie: September 2011
  • Laatst online: 09-10 17:43
GeertJam schreef op donderdag 16 april 2015 @ 15:42:
Probeer eens:

PHP:
1
<div class="actiekorting"><?php echo $_product->getData("actiekorting"); ?></div>
Ik heb helaas niet de laptop bij me, morgen vroeg zal ik dat proberen maar uit m'n hoofd had ik al getData geprobeerd. Ik zal het morgen vroeg uitproberen.
@kutagh de $_helper mage::helper had geloof iets te maken om te kijken of het wel bestond voordat je iets aanriep. Gelezen op het internet. En sommige getters hebben dat ervoor dus soms heb je het nodig en soms niet. Wanneer wel of niet weet ik niet, ben nog een beginner op het gebied van Magento en Object orienteerd werken.

Acties:
  • 0 Henk 'm!

  • mustiej
  • Registratie: September 2011
  • Laatst online: 09-10 17:43
Herko_ter_Horst schreef op donderdag 16 april 2015 @ 13:11:
Oh, je hebt een fatal error. En je dacht niet dat het handig was om die even te vermelden in je topic start (daar staat nu namelijk: "Geen errors niks."? Wat is de precieze tekst van die fatal error?

Aangenomen dat het dezelfde error is als in de link die je postte: heb je de oplossing die daar staat geprobeerd? En wat was toen het resultaat (inclusief mogelijke andere errors meldingen in de log)?

Je kan wel hopen dat echo $_product->getActiekorting(); voldoende is, maar als je een fatal error krijgt, is dat dus niet zo.
Bij geen resultaat zie je geen errors. Bij gebruikelijke code echo $_product->getAttribute('actiekortng'); of echo $_product->getActiekorting(); krijg ik de Fatal error: Call to a member function getAatribute() on a non-object in het pad bestand waarmee ik werk dus in new.phtml(costum bestand over de core bestand heen)

Acties:
  • 0 Henk 'm!

  • kutagh
  • Registratie: Augustus 2009
  • Laatst online: 14-10 23:28
Ik zou zeggen, als je niet weet wat echo doet moet je het eens opzoeken. Simpelweg googlen op "php echo" levert dit op: http://php.net/echo

Acties:
  • 0 Henk 'm!

  • mustiej
  • Registratie: September 2011
  • Laatst online: 09-10 17:43
GeertJam schreef op donderdag 16 april 2015 @ 15:42:
Probeer eens:

PHP:
1
<div class="actiekorting"><?php echo $_product->getData("actiekorting"); ?></div>
Ik heb dit geprobeerd en geen resultaat ook geen errors.
Dit is een ander code wat ik heb geprobeerd:
PHP:
1
<div><?php echo $_helper->productAttribute($_product, $_product->getActiekorting(), 'actiekorting');?></div>


Ik krijg de volgende error weer:
Fatal error: Call to a member function productAttribute() on a non-object in /home/users/inhuvftp/inhuur.equiprent.nl/app/design/frontend/default/theme227k/template/catalog/product/new.phtml on line 61

Dit probleem heeft een ander ook: http://stackoverflow.com/...-attribute-in-the-sidebar
Maar de antwoord wat daar gegeven wordt is alleen voor de product pagina zelf bedoelt maar hoe kan ik dat toepassen op en costum pagina buiten het product pagina?

Een ander attribute maken of aanroepen krijg ik dezelfde fatal error.

[ Voor 3% gewijzigd door mustiej op 17-04-2015 10:00 ]


Acties:
  • 0 Henk 'm!

  • mustiej
  • Registratie: September 2011
  • Laatst online: 09-10 17:43
Ik heb het gefixt en het aanpassen van de CSS is ook al gelukt:

Bovenin de template:
PHP:
1
<?php $_helper = Mage::helper('catalog/output'); ?>


Atribute aanroepen:
PHP:
1
<?php echo $_helper->productAttribute($_product, $_product->getActiekorting(), 'actiekorting');?


Maar zoals verwacht moet er iets anders fout gaan en dat is de costum attribute short_description die ik nooit hebt aangeraakt en altijd keurig netjes werkte. Het is een costum attribute die ik gewoon via de backend liet tonen. Moet ik dit nu ook definieren boven in de template?

short_description:
PHP:
1
2
3
<div class="desc_grid1"><?php $small_getDescription = strip_tags($_product->getShortDescription());
                        if (strlen($small_getDescription) < 70) echo($small_getDescription);
                        else { echo mb_substr($small_getDescription, 0, 50,'UTF-8').'...';} ?></div> 


Iemand enig idee?

ps: Moet je elke costum attribute die je buiten het back-end apart wilt tonen op dit manier doen?

edit: het is dezelfde verdwijn actie. Geen php ouput.. Het moet een instantie zijn van Mage_Catalog_Model_Product maar wat ik dan niet meer begrijp is het werkte eerst wel.. Zou dit helpen om een instantie te setten met:
PHP:
1
$_product = Mage::getModel("catalog/product")->load($_product)
of moet ik het ID laden?

[ Voor 13% gewijzigd door mustiej op 21-04-2015 10:09 ]


Acties:
  • 0 Henk 'm!

  • mustiej
  • Registratie: September 2011
  • Laatst online: 09-10 17:43
Nevermind, mastermind Magento exper Dhr. Mustiej heeft het geregeld :p Bedankt voor alle moeite mensen! Topic kan op slot.

Acties:
  • 0 Henk 'm!

  • Swedish Clown
  • Registratie: November 2010
  • Laatst online: 10-04 22:41

Swedish Clown

Erlang <3

Mogen we je nog wel even adviseren dat als je complete Backend in het Engels is, het nogal onlogisch is dat je de functie $_product->getActiekorting() introduceert?

Hernoem die functie a.u.b. naar $_product->getDiscount() of iets in die richting.

Always looking for developers wanting to work with Erlang.


Acties:
  • 0 Henk 'm!

  • mustiej
  • Registratie: September 2011
  • Laatst online: 09-10 17:43
Brakkie41 schreef op dinsdag 21 april 2015 @ 12:26:
Mogen we je nog wel even adviseren dat als je complete Backend in het Engels is, het nogal onlogisch is dat je de functie $_product->getActiekorting() introduceert?

Hernoem die functie a.u.b. naar $_product->getDiscount() of iets in die richting.
Is persoonlijke voorkeuren, makkelijk te onderscheiden tussen custom/magento/template attribute. Heeft het een ander functie behalve het onprofessionaliteit?

Acties:
  • 0 Henk 'm!

  • Swedish Clown
  • Registratie: November 2010
  • Laatst online: 10-04 22:41

Swedish Clown

Erlang <3

Code hoort in mijn mening altijd in het Engels geschreven te worden. Ik heb het genoegen gehad om een bak legacy code van een voormalige collega over te mogen nemen. Die collega was een Zweed en schreef z'n code half Zweeds/half Engels. Ik weet niet hoe jullie bedrijf in elkaar steekt maar wat als er op een gegeven moment een niet-Nederlandstalige binnenkomt? Of een externe consultant?

Het is altijd beter om code in het Engels te schrijven. Geloof me niks is zo vervelend om code over te nemen welke niet in een voertaal is geschreven die je begrijpt.

Zeker gezien het feit dat je stage loopt en je hier (waarschijnlijk) binnenkort weer weg bent zou ik er voor zorgen dat de code in het Engels is.

Als de rest van alle custom code in het Nederlands is, heb je misschien een punt maar dan zou ik je baas adviseren om alles te refractoren naar het Engels. Tevens een goede stage oefening :P

Always looking for developers wanting to work with Erlang.


Acties:
  • 0 Henk 'm!

  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 10:27
Brakkie41 schreef op donderdag 23 april 2015 @ 08:15:
Code hoort in mijn mening altijd in het Engels geschreven te worden. Ik heb het genoegen gehad om een bak legacy code van een voormalige collega over te mogen nemen. Die collega was een Zweed en schreef z'n code half Zweeds/half Engels. Ik weet niet hoe jullie bedrijf in elkaar steekt maar wat als er op een gegeven moment een niet-Nederlandstalige binnenkomt? Of een externe consultant?

Het is altijd beter om code in het Engels te schrijven. Geloof me niks is zo vervelend om code over te nemen welke niet in een voertaal is geschreven die je begrijpt.

Zeker gezien het feit dat je stage loopt en je hier (waarschijnlijk) binnenkort weer weg bent zou ik er voor zorgen dat de code in het Engels is.

Als de rest van alle custom code in het Nederlands is, heb je misschien een punt maar dan zou ik je baas adviseren om alles te refractoren naar het Engels. Tevens een goede stage oefening :P
Al is in dit geval de functie dynamisch, dus 'getActiekorting()' is hetzelfde als 'getData('actiekorting')'. Dus ligt het meer aan hoe de andere attributen heten in de backend.
Pagina: 1