Support » Kokeneille käyttäjille » Include(…) ei ole käytettävissä?

  • 20 v. sitten tein PHP:llä sivuja, joissa oli staattisia HTML-palikoita include(’xxx.inc’), käyttäen.

    Kokeilin vastaavaa WordPressin kanssa. Ei toiminut. Kaiketi pois käytöstä turvallisuussyistä. Tosin HTML-tiedosto ei ole mikään riski.

Esillä 9 vastausta, 1 - 9 (kaikkiaan 9)
  • Kyllä include toimii, pakkohan sen on, muuten esimerkiksi monimutkaiset lisäosat olisi pakko kirjoittaa yhdeksi tiedostoksi (ja includella WP ne plugaritkin mukaan lataa).

    Ei siis mitään systemaattista ongelmaa tässä, kyse on vain siitä missä ja miten includea käyttää. Eli annahan vähän kontekstia.

    (Include ei muuten ole funktio, vaan statement, joten se ei käytä sulkuja:

    include xxx.inc;)

    Thread Starter tapiohuuhaa

    (@tapiohuuhaa)

    Laitoin osoitteeksi normaalin www-osoitteen. Tässä kaiketi pitäisi laittaa serverin osoite.

    Mitenkähän Code Snippet kanssa pitää menetellä. Mikä sille on lähtöhakemisto?

    jos WordPress on

    public_html/wordpress ja haluan laittaa lisätiedostot
    public_html/
    Kokeilin

    $infotexts= include $_SERVER[’DOCUMENT_ROOT’].’infoText.html’;
    html-pääte siksi, että voisi editorissa tarkistaa syntaksin.

    vaihdoin päätettä ja jätin ” pois:

    $infotexts= include $_SERVER[’DOCUMENT_ROOT’].infoText.inc;

    tiedostoa ei löytynyt, sillä haluttua teksti ei tullut.

    laitoin tiedostot hakemistoihin
    public_html/wordpress
    public_html/

    kokein pelkällä

    $infotexts= include infoText.inc;

    ei auttanut sekään. Eikö tuota include voi käyttää muuttujassa?

    pitäisikö sitten laittaa se muuttuja include-tiedoston sisään eli

    $infotexts=’…’ on siinä inc-tiedostossa?

    Mutta mikä on polku?
    include infoText.inc;
    include $_SERVER[’DOCUMENT_ROOT’].infoText.inc;
    ei löytynyt näihin laitettuna:

    public_html/wordpress
    public_html/

    Tiedostosta saisi selvemmän kun pitkät HTML-tekstit saisi muualle. Ja niitä kaikkia ei tarvitsisi edes aina hakea, jos tällainen kävisi

    if(is_bbpress(){
    include XXX.infoText.inc; //XXX on oikea polku
    }
    jos tiedostot laittaa juureen worpress päivitys ei poistaisi niitä

    • Tätä vastausta muokkasi 2 vuotta, 9 kuukautta sitten tapiohuuhaa.

    Includeen ei tosiaan mitään osoitteita, vaan palvelimen hakemistopolku. Code Snippetsin lähtökohta selviää printtaamalla snippetissä ulos mitä dirname( __FILE__ ); palauttaa, se voisi olla hyvä lähtökohta.

    Ja include ei tosiaan ole funktio, joten se ei myöskään palauta mitään arvoa. Includella ei siis voi laittaa muuttujaan mitään, vaan includella haetaan sisään tiedosto, joka suoritetaan sellaisenaan.

    Thread Starter tapiohuuhaa

    (@tapiohuuhaa)

    dirname( __FILE__ )

    palautti lisäosan asennushakemiston.
    Kokeilin näitä:
    include ’/home/sanarist/public_html/infoText.inc’;//Code Snippet vaatii lainausmerkit
    laitoin kopion plugins-hakemistoon
    include ’../infoText.inc’;

    Ei löydy.
    Code Snippet vaatii tohon lainausmerkit. No ei tämä suuri asia ole, mutta tiedostoa olisi vain helpompi lukea, kun isot HTML-lohkot olisivat muualla.

    Kyllä includella pitää olla lainausmerkit, on rumaa käyttää ilman.

    Voi olla, että Code Snippetsissä on include jotenkin estetty; WP:n koodin tasolla sellaista estoa ei kuitenkaan ole.

    Thread Starter tapiohuuhaa

    (@tapiohuuhaa)

    Mahdollisesti Code Snippet estää sen, sillä se ei pysty tarkistamaan kokonaisuuden syntaksia. Olisihan PHP-koodi suuri riski.

    Ihan pieni huomio sen syntaksin tarkistuksesta.

    $muuttuja .=

    ei sille käy vaan on pakko laittaa $muuttuja = @muuttuja…

    Ei mikään suuri haitta.

    Thread Starter tapiohuuhaa

    (@tapiohuuhaa)

    Jos laittaisin include teeman header.php:hen, mikä pitäisi laittaa poluksi, jos haluan sijoittaa lisätiedoston

    1. public_html kansioon kun WP on public_html/wordpress hakemistossa
    2. Themes-hakemistoon

    Sijaintihan pitää olla sellainen, että tiedostot säilyvät WP,lisäosa tai teema päivitettäessä.

    Voiko pääte olla inc sijasta html,jotta koodi puhdas html olisi helpommin tarkistettavaa?

    • Tätä vastausta muokkasi 2 vuotta, 9 kuukautta sitten tapiohuuhaa.

    Jos tiedostossa on html:ää, niin kyllä html on ehdottomasti parempi pääte, kertoo heti mistä on kyse, ja jos liitetään php-koodia, niin sitten .php.

    Teemahakemiston sijainnin saa get_theme_root(), tuo palauttaa hakemiston ilman lopussa olevaa kauttaviivaa. WordPressin asennushakemiston saa get_home_path();

    Thread Starter tapiohuuhaa

    (@tapiohuuhaa)

    Täytyy tutkia noilla.

    Ymmärtääkseni tämä toimisi:

    include get_theme_root().’/infoText.html’; // themes hakemistoon – tähän tarvinnee /-merkin. Voisi olla järkevin.

    get_theme_root() ei ole oikein järkevä, koska juurihakemistoon sijoitettuna kaikki häviää päivitettäessä.

    Kiitti. Osan kaikkialla käytettyä html:ää voisi laittaa header.php kautta include avaulla haettavaksi, jotta se tulisi helpommin oikein. Ilman syntaksitarkistusta tulee helposti pieniä virheitä.

    • Tätä vastausta muokkasi 2 vuotta, 9 kuukautta sitten tapiohuuhaa.
Esillä 9 vastausta, 1 - 9 (kaikkiaan 9)
  • The topic ‘Include(…) ei ole käytettävissä?’ is closed to new replies.