Přihlásit se

Joomla 5.2.2 Security & Bugfix Release

Joomla 5.2.2 je nyní k dispozici. Jedná se o bezpečnostní vydání pro Joomla 5.x.

Phoca Cart - skupiny polí a pole - nestandardní chování

07. led 2024 12:04 - 07. led 2024 12:10 #149055
Ahoj,
narazil jsem na problém s chováním polí u Phoca Cart.
Jedu J4 a PC 4.0.10. 
Používám pole ke zobrazení informací v tabech u produktu. Vše funguje jak má jen jsem narazil na dost podstatný fail.
Vytvořil jsem si skupiny polí. Do těchto skupin polí si zařazuji vytvořené pole, které se mi pak zobrazují u produktu v administraci jako záložky. Ty pole jsou typu editor a vkládám tam odkazy na phoca gallery obrázky nebo texty.
Problém:
potřebuji si řadit tyto pole tak aby byly seřazeny dle ID - taková možnost by měla umět Joomla - je tam seznam kde si mohu způsob řazení zvolit. Ze začátku jsem měl vytvořeny asi 4 pole. Vše se zobrazovalo ok ale po přidání dalšího pole se mi řazení rozhodilo a ať nastavuji co nastavuji v polích tak to na frontendu je stejné. Pole co bylo kdysi první je poslední, ostatní místo nezměnili.
Všiml jsem si v DevTool, že se mi změnila třída u všech polí id="uk-tab-číslo" a podle tohoto id se to řadí.
Za nic na světě nemůžu přijít na to proč.

Tab Barvy musí být na druhém místě po tabu Typ dveří

Moc díky za směrování kde hledat řešení.
Leoš

test web url:  zde  
vstup: admin / admin

07. led 2024 12:23 #149056
Odpověď od Leoš
Pokročilý uživatel
Určitě to bude souviset s Custom fields v Joomle, vlastně potřebuji řadit pouze skupiny polí....a to právě nefunguje - žádný způsob popsaný v dokumentaci joomly a phoca cart nefunguje...

07. led 2024 16:47 - 07. led 2024 16:54 #149057
Odpověď od H13
Admin
Ahoj, to bude asi problém, protože Joomla na to má statickou funkci, kde nemáme možnost zadat ordering:

components/com_phocacart/views/item/tmpl/default.php
Code:
$fields = FieldsHelper::getFields('com_phocacart.phocacartitem', $x, true);

Kdyby ta funkce měla navíc parametr pro řazení, opravili bychom špatné řazení z "a.ordering", na "g.ordering, a.ordering"

Například, pokud by měla řazení jako parameter:
administrator/components/com_fields/src/Helper/FieldsHelper.php
Code:
public static function getFields(         $context,         $item = null,         $prepareValue = false,         array $valuesToOverride = null,         bool $includeSubformFields = false,         string $listOrdering ''     )

a pak:
Code:
if ($listOrdering != '') {             self::$fieldsCache->setState('list.ordering', $listOrdering);         }

v naší funkci bychom zavolali:
Code:
$fields = FieldsHelper::getFields('com_phocacart.phocacartitem', $x, true, null, false, 'g.ordering, a.ordering');

A řazení by bylo správně nejprve podle skupin a pak podle položek. Pokud chybí v řažení "g.ordering", pak Joomla ty cusom fieldy řadí nesmyslně. : - (

Jen pro test, pokud najedeš do:

administrator/components/com_fields/src/Model/FieldsModel.php

a změníš (opravdu jen pro test, protože by to mohlo ovlivnit ostatní části Joomly) na řádku cca 375 (jsem na Joomla 5, může to být trochu jiné u J4)

Z:
Code:
$listOrdering  = $this->state->get('list.ordering', 'a.ordering');
NA:
Code:
$listOrdering  = $this->state->get('list.ordering', 'g.ordering, a.ordering');
pak by ti to mělo fungovat OK

BTW: Dalším možným řešením by bylo, kdyby Joomla vylistovala group_ordering, pak by se s tím dalo také pracovat, ale bohužel to nelistuje. : - (

Phoca Cart - www.phoca.cz/phocacart - e-shop, e-commerce
Phoca Gallery - www.phoca.cz/phocagallery - obrázková galerie
Phoca Download - www.phoca.cz/phocadownload - stahování souborů
Phoca Guestbook - www.phoca.cz/phocaguestbook - guestbook
Poděkovali: Leoš

07. led 2024 17:55 #149058
Odpověď od Cony
Moderátor
Nejjednodušší je vzít si seznam polí v administraci a setřídit si jej manuálně podle skupin, tak aby pole z první skupiny byly na prvním místě, z druhé skupiny na druhém atd... Pak by to mělo zafungovat.

07. led 2024 18:30 #149059
Odpověď od Cony
Moderátor
Bude vyřešeno v příští BETA verzi.
Poděkovali: Leoš

07. led 2024 19:04 #149060
Odpověď od Leoš
Pokročilý uživatel

Jen pro test, pokud najedeš do:

administrator/components/com_fields/src/Model/FieldsModel.php

a změníš (opravdu jen pro test, protože by to mohlo ovlivnit ostatní části Joomly) na řádku cca 375 (jsem na Joomla 5, může to být trochu jiné u J4)

Z:

Code:
$listOrdering  = $this->state->get('list.ordering', 'a.ordering');
NA:
Code:
$listOrdering  = $this->state->get('list.ordering', 'g.ordering, a.ordering');
pak by ti to mělo fungovat OK

Toto jsem vyzkoušel a podařilo se mi řazením skupin polí správně seřadit taby na stránce produktu.
Samotné pole mám seřazená jak doporučuje Cony.

Pak jsem soubor FieldsModel.php změnil na původní a vše se vrátilo do původního špatného řazení.
To se někde ukládá? V db?

Ta oprava v další verzi - stačilo by vlastně vyřešit řazení Skupin polí - ty se zobrazují jako taby v kartě produktu, že?

Web mám zatím ve vývoji. Doporučujete už použít Joomlu 5 ?


Moc díky za pomoc
leoš

Powered by Fórum