Support » Kokeneille käyttäjille » Hälytys- ja uusi toteutus lisäosalla/ Code Snippet avulla

  • Olen joskus luonut lisäosia eräälle CMS:llä, mutt siitä on aikaa. Haluaisin vinkkejä siihen, miten luoda lisäosa, jolla saisi bbPressiin siitä puuttuvia ominaisuuksia, ainakin nämä kaksi ovat sellaisia, jotka bbPressistä puuttuvat, mutta mitkä ovat XenForossa:
    * hälytykset niin, että sivulla on hälytyskello ja kello/muu ikoni tulee myös selaimen välilehteen
    * 24:n tunnin sisällä luotu uusi aihe tai kommentti saa korostuksen new

    Minulla on sivusto, jossa niitä voisi yrittää luoda.
    Toki ehkä mahdollista vain Code Snippet avulla, mutta sitä ei voi jakaa muiden kanssa.

    Olisiko hirveä projekti?

    The page I need help with: [log in to see the link]

Esillä 15 vastausta, 1 - 15 (kaikkiaan 17)
  • Uusi saisin melko helpolla aihelistaukseen, editoimaani lisäosaan bbResolutions.

    Jos minulla on tiedossa aiheen id, millä funktiolla saan irti aiheen tiedot? Kaipaan aloituspäivämäärätietoa.
    get_the_date() antaa muotoiltuna päivämäärän, mutta mistä saa raa’an aikaleiman jota voisi verrata time()-funktion arvoon?

    time()-84600 & aikaleimaa voisi verrata keskenään.

    Moderator Mikko Saari

    (@msaari)

    Raa’an aikaleiman taitaa saada tuosta get_the_date():stakin, kun laitat formaattiparametriksi U.

    Noiden kiinteiden numeroiden sijasta WP:ssä kannattaa käyttää vakioita, esim. vuorokausi on DAY_IN_SECONDS. On koodia lukevalle heti selvää, mistä on kyse.

    Kiitti. Kun laitoin formaatiksi ’U’, sain tarvitsemani datan ja sain lisättyä merkinnän ’Uusi’ aihelistaukseen.

    $creationTime=get_the_date(’U’,$topic_id);
    $calculationTime=time()-84600;
    if($calculationTime-$creationTime<=0){$dateClass=’ new-topic’;}

    Lisäsin jokaiseen vaihtoehtoon lisäluokan.

    https://www.sanaristikkofoorumi.net/test/forums/forum/sanaristikot/suomen-kuvalehti/

    Olisiko antaa vihjeitä, miten saisi vastaavan toiminnan yksittäisen kommentin yhteyteen.

    Moderator Mikko Saari

    (@msaari)

    Artikkeleitahan nekin ovat, joten get_the_date() palauttaa niillekin kyllä luontiajan. Miten nuo sivupohjat sitten on rakenneltu, sopivassa kohtaa get_the_date('U', $post->ID) pitäisi kyllä toimia – mutta Code Snippetsillä toteuttamisesta en sitten tiedä.

    Kyse olikin siitä, missä kohtaa koodia tuon aikakysely pitäisi bbPressissä toteuttaa. Ajattelin, että saattaisit tietää oikean kohdan.

    Moderator Mikko Saari

    (@msaari)

    En tiedä bbPressistä mitään, en ole vuosikausiin edes vilkaissut sinne päin.

    Ok. Sitten täytyy yrittää etsiä, missä tiedostossa asia käsitellään. Toki voin joutua sorkkimaan suoraan lähdekoodia, mutta bbPress päivitetään harvakseltaan, joten siitä ei ole suurta harmia.

    bbPress Style Pack tekijä ei ottanut asiaa tehtäväkseen, mutta täytyy kuitenkin kysyä, mitä tiedostoa pitää editoida.

    Yritän luoda käyttäjäasetuksia. Lisäsin kentän user_layout_setting.
    Sisällön saan irti wp_get_current_user()-funktiolla, mutta onko funktiota, jolla sisällön saisi päivitettyä. Ideana on $GET avulla lähettää muutettavat tiedot. Lähetetty array muutetaan string-muuttujaksi ja tallennetaan. Kaiketi voi laatia omankin tietokantafunktion, mutta valmiin käyttö olisi helpompaa.

    • Tätä vastausta muokkasi 5 kuukautta sitten tapiohuuhaa.
    Moderator Mikko Saari

    (@msaari)

    Jos bbPress on millään lailla järkevästi tehty, tuollainen muutos tulisi teeman puolelle, ettei tarvitse pluginin tiedostoihin koskea.

    Jos käyttäjälle lisäkenttiä tehdään, niin update_user_meta() on se, jolla niitä kannattaa tallentaa. WordPressin kanssa on erittäin harvoin syytä ottaa suoraan yhteyttä tietokantaan.

    Kiitti. Täytyy yrittää etsiä ensin bbPressin mallinteista.

    Katsoin, että jos minulla olisi ollut meta-arvo, sen voisi päivittää update_user_meta()
    avulla.

    Kun tarkastelin users_meta-taulua, kaikki lisäykset on tehty lisäosilla. Koska en luo lisäosaa, lisäsin tauluun suoraan yhden rivin. Ehkä väliaikaisen koodin olisi voinut luoda, mutta uuden rivin luominen on kertatoimenpide, ja on ihan sama miten se tehdään.

    Yritän siis tehdä homman uusiksi tuota funktiota käyttäen. Kiitti vinkistä.

    get_user_meta( int $user_id, string $key = ”, bool $single = false )

    kai sitten haetaan. Yritän tehdä homman käyttäen get_user_meta() ja update_user_meta()-funktioilla.

    • Tätä vastausta muokkasi 5 kuukautta sitten tapiohuuhaa.

    Sain käyttäjäasetukset pelittämään. Oli hassu ongelma. En muistanut, että get-parametri haetaan $_GET-muuttujalle. Olin laittanut $GET. Ihmettelin pitkään, miksi print_r($GET); näyttää tyhjää. Piti googlella selvittää, missä on vika.

    Puolustukseksi voin sanoa, että viimeksi kuin loin get-parametreilla toiminnallisuutta, aikaa on n. 15 vuotta. En kertakaikkiaan muistanut tuota asiaa.

    Loin testisivustolle kirjautuneille käyttäjillä mobiiliasetuksia. Jos kiinnostaa, voit kirjautua ja tutkia niitä
    https://www.sanaristikkofoorumi.net/test/asetukset/

    POISTA KÄYTÖSTÄ/OTA KÄYTTÖÖN INTROTEKSTI: on väliaikainen. Jos muutan intron sisältöä tai ulkoasua, sen saa nopeasti esille.

    Hiivatin… kanssa siitä, että WordPress lisää kirjautuneille käyttäjille JavaScriptiä ja CSS:ää. Siitä tulee aina ongelmia. Mobiiliin tuli tyhjä tila alkuun ja pitää miettiä, miten sen saisi pois. Olen piilottanut hallintapalkin ja tila sitä varten. Mutten halua itsekään nähdä hallintapalkkia koko ajan ylhäällä – se on *piip* ärstyttävä ja aina ongelmia tuottava asia.

    Seuraavaksi pitää paneutua siihen viestien Uusi-toiminnallisuuteen.

    Kiitti ideasta vakioiden käytöstä. Testisivustolla ja ja live-sivustolla on muutamia asioita, jotka ovat erilaisia. Laiton erilaiset asiat erääseen snippetiin vakioiksi
    SITEROOT, SITENAMEBLOG ja SITENAMEFORUM. Tällä välttyy turhilta etsi- ja korvaa-toimenpiteitlä.

    • Tätä vastausta muokkasi 4 kuukautta, 3 viikkoa sitten tapiohuuhaa.
    • Tätä vastausta muokkasi 4 kuukautta, 3 viikkoa sitten tapiohuuhaa.

    Nuo ovat muuten luultavasti asioita, jotka saa suoraan WP:n funktioilla (esim. get_site_url()), jolloin ei tarvitse edes tuon vertaa nähdä korjausvaivaa.

    Mitä siihen uusi toiminnallisuuteen, testailin tällä koodilla
    File: bbpress/templates/default/loop-single-reply.php

    <div <?php bbp_reply_class(); ?>>

    <div class=”bbp-reply-author”><div style=”position:relative”><span class=”id-<?php
    $creationTime=get_the_date(’U’,bbp_reply_id());
    $calculationTime=time()-84600;
    if($calculationTime-$creationTime<=0){echo ’ new-single-topic” style=”display:block;height:25px;width:40px;border:1px solid red!important;position:absolute;right:0px;top:0px;’;}?>”></span></div>

    Toimii, vaikka en kyllä ymmärrä, miksi tuo id tulostuu myös.
    lopputulos on
    span class=”id-15941 new-single-topic”

    Tuo olisi ollut erittäin helppo koodata aikoinaan mallinteeseen, joten ihmettelen vain, miksi sitä ei tehty.

    • Tätä vastausta muokkasi 4 kuukautta, 2 viikkoa sitten tapiohuuhaa.
    • Tätä vastausta muokkasi 4 kuukautta, 2 viikkoa sitten tapiohuuhaa.

    Toi koodi ei ehkä ihan täysin toimi, koska bbp_reply_id() ei palauta sitä ID:tä, vaan tulostaa sen. Siksi se tulostuu tuohon. Laitapa tilalle bbp_get_reply_id(), niin toimii paremmin.

    Ok. Vaikka ei tuosta ylimääräisestä luokasta mitään haittaakaan ole. Sitä voi jopa satunnaisesti hyödyntää. Arvelinkin, että siinä on joki tulostustoimenpide.

Esillä 15 vastausta, 1 - 15 (kaikkiaan 17)
  • You must be logged in to reply to this topic.