Skocz do zawartości

Wyłuskanie konkretnej cechy


Zobacz rozwiązanie Rozwiązane przez Bartosz Rosa,

Polecane posty

  • Rozwiązanie

Da się :). W tym celu należy skorzystać z modyfikatorów tagów (ich opis znajduje się w pomocy F1, pod hasłem tag).

W tym przypadku sprawę nieco komplikuje fakt, że dane umieszczone są w polu cechy, które są zwracane przez tag [Towar::Cechy] w postaci jednego ciągu znaków rozdzielonych średnikiem (mechanizm tagów nie obsługuje obecnie kolekcji danych).

 

Dodatkowym utrudnieniem jest fakt, że średnica może wystąpić na końcu (gdzie nie ma średnika) albo w środku cech, gdzie średnik jest. Dlatego trzeba tutaj wykorzystać mały trik, polegający na dodaniu sztucznie tego średnika, aby funkcja wycinania fragmentu ciągu znaków zadziałała poprawnie.

 

[Towar::Cechy | then =`[Towar::Cechy | substr_after_first=`Średnica mm:`];` | substr_before_first=`;`]

Działa to tak, że pierwsze użycie [Towar::Cechy] jest tylko po to aby za pomocą modyfikatora then ustawić wartość na Towar::Cechy z odcięciem od Średnica mm: do końca cech (substr_after_first=`Średnica mm:`). Gdyby to była ostatnia cecha to na koniec dopisany jest jeszcze średnik. To wszystko trafia następnie do modyfikatora substr_before_first=`;` (czyli podciąg przed pierwszym średnikiem co ostatecznie daje w wyniku wartość 20,0.

 

W wersji 1.38 dodamy nowy tag uniwersalny [Inne::Pusty] który będzie  po prostu pustym tagiem umożliwiającym wpisanie do niego jakiejś wartości za pomocą nowego modyfikatora value = `jakas wartość`. Wtedy powyższy kod można by zapisać tak:

 

[Inne::Pusty | value =`[Towar::Cechy | substr_after_first=`Średnica mm:`];` | substr_before_first=`;`]

Sama idea się nie zmienia, ale czytelność takiego zapisu jest nieco lepsza, bo w pierwszym przypadku skorzystałem raczej z pewnej cechy modyfikatora then , który zadziała jak value, jesli nie ma wcześniej żadnego modyfikatora warunkowego.

  • Dziękuję 1
Link to postu

To by trzeba było rozdzielić cechy na osobne linie. Niestety opisy Allegro nie dopuszczają znacznika <br> który by idealnie się do tego nadawał i wystarczyło by podmienić tylko średniki na <br>. Tutaj konieczne będzie stworzenie listy wypunktowanej <ul><li>, której struktura jest już nieco bardziej skomplikowana, bo zawiera początek i koniec znaczników. Zamiast <br> można zrobić też osobne paragrafy <p>, ale lista będzie trochę rozstrzelona.

[Towar::Cechy | replace=`;==<p>` | unescape_xml]

To spowoduje zamianę średników na tagi <p>. One również wymagają domknięcia, ale po generowaniu opisu dla aukcji Sello uruchamia także procedurę naprawczą, która poprawia uszkodzony HTML, między innymi domyka automatycznie tagi <p></p>. Tak więc można w ten sposób. Dodatkowy modyfikator unescape_xml jest tutaj dodany po to, aby tekst <p>, pod spodem reprezentowany jako &lt;p&gt; został zamieniony na kod html<p>.

  • Dziękuję 1
Link to postu

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.

Użytkownik forum
Odpowiedz...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...