hakeryk2 Posted June 6, 2019 Share Posted June 6, 2019 Problem: wgrane zdjęcia produktów posiadają swój adres oraz nazwę w przykładowej postaci https://twojastrona.pl/12345-rozmiar-miniatury/nazwa_produktu.jpg Pragnienie: Jeśli zdjęcie posiada alt/legendę czyli opis to niech ten opis będzie finalną nazwą produktu potraktowaną tak by była nazwą pliku. Jeśli nie ma takowego niech domyślnie posiada nazwę produktu. Przykład: Produkt posiada zdjęcie z podpisem "koty LIŻO masło" więc jego zdjęcie winno mieć url https://twojastrona.pl/12346-rozmiar-miniatury/koty-lizo-maslo.jpg Rozwiązanie: Brak. Nagroda: Pieśni o śmiałku będącym gotów poświęcić swe wolne zasoby czasowe by nieść pomoc i ukojenie tym, którzy jej potrzebują. Link to comment Share on other sites More sharing options...
0 atomek Posted June 6, 2019 Share Posted June 6, 2019 Może w ten sposób (PS 1.6): W jakimś override (może być w Product lub Link) public static function getImageLinkRewrite($ids) { if (Configuration::get('PS_LEGACY_IMAGES')) { $id_image = $ids; } else { $split_ids = explode('-', $ids); $id_image = (isset($split_ids[1]) ? $split_ids[1] : $split_ids[0]); } $sql = ' SELECT il.`legend` FROM `'._DB_PREFIX_.'image` i '.Shop::addSqlAssociation('image', 'i').' LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)Context::getContext()->language->id.' ) WHERE i.`id_image` = '.(int)$id_image; $image_legend = Db::getInstance()->getValue($sql); return (trim($image_legend) ? Tools::link_rewrite($image_legend) : false); } W szablonach product-list.tpl {assign var='image_link_rewrite' value=OverrideClass::getImageLinkRewrite($product.id_image)} {if !$image_link_rewrite} {assign var='image_link_rewrite' value=$product.link_rewrite} {/if} <img class="replace-2x img-responsive" src="{$link->getImageLink($image_link_rewrite, $product.id_image, 'home_default')|escape:'html':'UTF-8'}" alt="{if !empty($product.legend)}{$product.legend|escape:'html':'UTF-8'}{else}{$product.name|escape:'html':'UTF-8'}{/if}" title="{if !empty($product.legend)}{$product.legend|escape:'html':'UTF-8'}{else}{$product.name|escape:'html':'UTF-8'}{/if}" {if isset($homeSize)} width="{$homeSize.width}" height="{$homeSize.height}"{/if} itemprop="image" /> W innych szablonach pewnie będzie podobnie. Przetestuj 1 Link to comment Share on other sites More sharing options...
0 Daresh Posted June 6, 2019 Share Posted June 6, 2019 Z tego co kojarzę to dopisek może być dowolny i zdjęcie i tak zadziała, np.: http://demo.greenmousestudio.com/26-large_default/hakeryk.jpg Może więc to kwestia obcięcia ostatniego członu i zamiana go na legendę, może nawet w szablonie by to można zrobić? Link to comment Share on other sites More sharing options...
0 hakeryk2 Posted June 6, 2019 Author Share Posted June 6, 2019 No właśnie też o tym myślałem, jednak obawiam się, że gdzieś czasami moze się coś zapomnieć zmienić i nagle będę miał w google 2 zdjęcia o tej samej treści a innych nazwach bo jedno zostało zmienione a drugie było domyślne. Szukam rozwiązania stałego Ogólnie szukam i grzebię teraz, jak znajdę to dam znać ale każda pomoc mile widziana. Link to comment Share on other sites More sharing options...
0 hakeryk2 Posted June 6, 2019 Author Share Posted June 6, 2019 Jeszcze nie wprowadzam bo na Twoje rozwiązanie też wpadłem, tylko zastanawiałem się wciąż jak to ogarnąć by całkowicie przerobić overridem funkcję getImageLink by po nawet jeśli jest pierwszy parametr to wtedy wyszukała legendę i ją podała a jak nie to parametr i wtedy byłoby najmniej kolizyjnie, ponieważ getImageLink jest używany w ogromie plików Dam znać co wykiełbaszę i dzięki za wskazówki. Link to comment Share on other sites More sharing options...
0 atomek Posted June 6, 2019 Share Posted June 6, 2019 public function getImageLink($name, $ids, $type = null) { $legend = $this->getImageLinkRewrite($ids); return parent::getImageLink($legend ? $legend : $name, $ids, $type); } nie testowalem 1 Link to comment Share on other sites More sharing options...
0 hakeryk2 Posted June 6, 2019 Author Share Posted June 6, 2019 (edited) Zmiana poszła następująco Do Link.php override wgrałem Twoją funkcję getImageLinkRewrite, a następnie w public static getImageLink zrobiłem coś takiego: public function getImageLink($name, $ids, $type = null, $rollover = null) { $not_default = false; $legend = $this->getImageLinkRewrite($ids); $name = ($legend) ? $legend : $name; .... // dalsza część kodu I pięknie ładnie przepisuje nazwy Dzięki w szczególności za funkcję do nazwy, musiałbym pisać sam i ślęczyć a tak to na gotowe Dzięki! Nie powinno być problemu z Googlem bo tak jak Daresh wspomniał plik się otworzy tak czy siak więc google sukcesywanie podmieni URL. Aha zapomniałbym, jest i pieśń: Quote ♫ Kto pod wodą ananasowy ma domek? ♫ ♪♪ PAN PROGRAMISTA ATOMEK ♪♪ Edited June 6, 2019 by hakeryk2 (see edit history) Link to comment Share on other sites More sharing options...
0 Piter2 Posted November 18, 2024 Share Posted November 18, 2024 I jak? Nadal śmiga? Link to comment Share on other sites More sharing options...
Question
hakeryk2
Problem: wgrane zdjęcia produktów posiadają swój adres oraz nazwę w przykładowej postaci https://twojastrona.pl/12345-rozmiar-miniatury/nazwa_produktu.jpg
Pragnienie: Jeśli zdjęcie posiada alt/legendę czyli opis to niech ten opis będzie finalną nazwą produktu potraktowaną tak by była nazwą pliku. Jeśli nie ma takowego niech domyślnie posiada nazwę produktu.
Przykład: Produkt posiada zdjęcie z podpisem "koty LIŻO masło" więc jego zdjęcie winno mieć url https://twojastrona.pl/12346-rozmiar-miniatury/koty-lizo-maslo.jpg
Rozwiązanie: Brak.
Nagroda: Pieśni o śmiałku będącym gotów poświęcić swe wolne zasoby czasowe by nieść pomoc i ukojenie tym, którzy jej potrzebują.
Link to comment
Share on other sites
7 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now