| Author |
Message |
saint
Gevorderd


Joined: Dec 01, 2005
Posts: 39
|
Posted:
Tue 13 Dec 2005 1:42 |
  |
ik weet dat het kan ik weet alleen niet meer hoe
krijg je met die noobs he :p
kan iemand mij vertellen hoe ik met een eigen phpscript een nieuwe pagina (module) kan maken maar wel met de layout die de pagina heeft dus zoals de rest van de modules als je er 1 toevoegd zoals bv downloads etc
het is een stats script voor Enemy territory |
_________________
 |
|
    |
 |
BlueLion
Administrator


Joined: Aug 21, 2004
Posts: 2836
|
Posted:
Tue 13 Dec 2005 7:34 |
  |
Om een module te maken begin je jouw bestand met
| Code: |
if ( !defined('MODULE_FILE') )
{
die("You can't access this file directly...");
}
|
Dit zorgt ervoor dat onverlaten niet de URL van dit bestand kunnen gebruiken en het op die manier uitvoeren in de browser. Er wordt een controle uitgevoerd, nl. als de MODULE_FILE niet gedefinieerd is verschijnt de mededeling
You can't access this file directly...
De MODULE_FILE wordt gedefinieerd in je mainfile.php.
Voorbeeld: Probeer maar eens het bestand index.php uit te voeren van de module Downloads. http://www.JOUW-SITE.nl/modules/downloads/index.php
Vervolgens moet je mainfile.php belangrijk maken voor jouw module. Alle belangrijke functie worden immers in dit bestand gemaakt.
Dit doe je als volgt:
| Code: |
require_once("mainfile.php");
|
Hierna maak je de constante $module_name. Die kan je vervolgens in je verdere script/module gebruiken.
| Code: |
$module_name = basename(dirname(__FILE__));
|
Wil je de rechterblokken bij je module? Dan volgt de volgende regel:
| Code: |
define('INDEX_FILE', true);
|
of als je ze niet wilt dan laat je deze regel achterwege.
Vervolgens wil je ook dat de header bovenaan de pagina staat. D.m.v. het volgende staat ook die On Top:
| Code: |
include("header.php");
|
Nu begint jouw pagina pas.
Als voorbeeld neem ik de functie Opentable(). Hiermee maak je een box waar bijv. tekst in komt.
Type nu bijvoorbeeld de tekst: Dit is mijn eerste zelfgemaakt module.
In php wordt tekst naar de browser gezonden met de functie echo.
Dus:
| Code: |
echo "Dit is mijn eerste zelfgemaakt module.";
|
Nu sluit je de box met CloseTable.
en voeg je de footer toe om je pagina één geheel te laten worden:
| Code: |
include("footer.php");
|
Een PHP bestand begint altijd met
<?php
en eindigt met
?>
Dan weet de server ook wat en wanneer er iets moet gebeuren, of juist moet stoppen.
Het totale bestand ziet er dan zo uit:
| Code: |
<?php
if ( !defined('MODULE_FILE') )
{
die("You can't access this file directly...");
}
require_once("mainfile.php");
$module_name = basename(dirname(__FILE__));
define('INDEX_FILE', true);
include("header.php");
OpenTable();
echo "Dit is mijn eerste zelfgemaakte module.";
CloseTable();
include("footer.php");
?> |
Succes.
BL |
Last edited by BlueLion on Thu 13 Jul 2006 7:59; edited 1 time in total |
|
    |
 |
saint
Gevorderd


Joined: Dec 01, 2005
Posts: 39
|
Posted:
Tue 13 Dec 2005 9:25 |
  |
thnx m8 |
_________________
 |
|
    |
 |
maristo
Senior Support


Joined: Jun 11, 2005
Posts: 333
Location: Wijk bij Duurstede
|
Posted:
Sat 31 Dec 2005 2:11 |
  |
Deze uitleg door BL doet mij deugd.
Duidelijk, helder en goed bruikbaar.
THX |
_________________ Een expert is iemand die binnen een beperkt vakgebied alle mogelijke fouten heeft gemaakt.
Ik kan toch niet iedereen helpen, zegt menigeen die niemand helpt. |
|
     |
 |
umiyz
Beginner


Joined: Oct 19, 2005
Posts: 10
|
Posted:
Sun 06 Aug 2006 9:38 |
  |
Wat voor code moet je dan gebruiken als je via een modules/blabla/index.php pagina naar modules/blabla/indexnr2.php wilt linken?
Want dan krijgt dat 2de pagina een dezelfde fout en als je header erop gooit krijg je een blanco pagina te zien.
Kan iemand me hierbij helpen..
Enne zoekfunctie heeft me hierheen gebracht dus vandaar dat dit oude topic een nieuwe bericht krijgt :p |
|
|
  |
 |
zeromechanic
Administrator


Joined: Oct 01, 2004
Posts: 1527
Location: Emmeloord
|
Posted:
Sun 06 Aug 2006 17:43 |
  |
Klasse umiyz, je hebt de zoekfunctie gebruikt en op dit topic terecht gekomen.
Wat is nu precies de bedoeling.
Probeer dat eens wat duidelijker uit te leggen.
Dat je een witte pagina krijgt, wil zeggen dat er ergens wat ontbreekt of fout is in je (php)code.
PHP is nl zeer gevoelig voor hele kleine foutjes, zoals bv een missende ; , oid
maar volgens de forumregels :
Welke versie phpnuke gebruik je |
_________________ Te Lezen: Forum Regels | Te Gebruiken |
|
   |
 |
BlueLion
Administrator


Joined: Aug 21, 2004
Posts: 2836
|
Posted:
Sun 06 Aug 2006 21:00 |
  |
Dit kan je doen door bijvoorbeeld een switch te gebruiken.
Bovenstaande uitleg gaat uit van 1 pagina, maar als je er meerdere wilt kan het als volgt.
Meerdere pagina's:
Om een module te maken begin je jouw bestand met
| Code: |
if ( !defined('MODULE_FILE') )
{
die("You can't access this file directly...");
}
|
Dit zorgt ervoor dat onverlaten niet de URL van dit bestand kunnen gebruiken en het op die manier uitvoeren in de browser. Er wordt een controle uitgevoerd, nl. als de MODULE_FILE niet gedefinieerd is verschijnt de mededeling
You can't access this file directly...
De MODULE_FILE wordt gedefinieerd in je mainfile.php.
Voorbeeld: Probeer maar eens het bestand index.php uit te voeren van de module Downloads. http://www.JOUW-SITE.nl/modules/downloads/index.php
Vervolgens moet je mainfile.php belangrijk maken voor jouw module. Alle belangrijke functie worden immers in dit bestand gemaakt.
Dit doe je als volgt:
| Code: |
require_once("mainfile.php");
|
Hierna maak je de constante $module_name. Die kan je vervolgens in je verdere script/module gebruiken.
| Code: |
$module_name = basename(dirname(__FILE__));
|
Wil je de rechterblokken bij je module? Dan volgt de volgende regel:
| Code: |
define('INDEX_FILE', true);
|
of als je ze niet wilt dan laat je deze regel achterwege.
Vervolgens wil je ook dat de header bovenaan de pagina staat. D.m.v. het volgende staat ook die On Top:
| Code: |
include("header.php");
|
Nu begint pagina 1.
Met een zgn. switch kan je in 1 php bestand meerdere pagina's maken.
Hiervoor moet je voor elke pagina een functie maken.
We starten met de pagina die bij jouw module altijd als eerste wordt getoond.
Ik noem de functie hier index, een voor de hand liggende naam, maar je kan het noemen zoals je zelf wilt (met uitzondering dat php ook standaard gedefinieerde functie namen heeft) bijvoorbeeld "pagina1".
Belangrijk om te weten is dat functies nooit beginnen met een getal!
Vervolgens moet je binnen de functie, voor gebruik van verschillende gegevens, een aantal variabelen globaliseren.
| Code: |
global $module_name;
|
D.m.v. functie global haal je nu de gegevens die worden meegegeven aan $module_name binnen in de functie index().
Het vervolg van je pagina:
Als voorbeeld neem ik weer de functie Opentable(). Hiermee maak je een box waar bijv. tekst in komt.
Type nu bijvoorbeeld de tekst: Dit is pagina 1 van mijn eerste zelfgemaakte module.
In php wordt tekst naar de browser gezonden met de functie echo.
Dus:
| Code: |
echo "Dit is pagina 1 van mijn eerste zelfgemaakte module.";
|
En we doen er een link bij naar pagina 2, waarvoor we $module_name gebruiken:
| Code: |
echo "<br /><div align=\"right\"><a href=\"modules.php?name=".$module_name."&op=pagina2\"><b>Ga naar pagina 2</b></a></div>";
|
Nu sluit je de box met CloseTable.
Nu je eerste pagina is afgerond, moet je ook de functie sluiten.
Dit doe je met een sluitende accolade "}"
Nu volgt de tweede pagina.
Eigenlijk is het een herhaling van de eerste pagina, met het verschil dat je de tweede pagina niet de zelfde naam als functie kan geven.
Dus noemen we die pagina2
| Code: |
function pagina2() {
|
Opnieuw, voor gebruik van verschillende gegevens, moet je een aantal variabelen globaliseren.
| Code: |
global $module_name;
|
D.m.v. functie global haal je nu de gegevens die worden meegegeven aan $module_name binnen in de functie pagina2().
Het vervolg van je pagina:
Als voorbeeld neem ik weer de functie Opentable(). Hiermee maak je een box waar bijv. tekst in komt.
Type nu bijvoorbeeld de tekst: Dit is pagina 2 van mijn eerste zelfgemaakte module.
In php wordt tekst naar de browser gezonden met de functie echo.
Dus:
| Code: |
echo "Dit is pagina 2 van mijn eerste zelfgemaakte module.";
|
En we doen er een link bij terug naar pagina 1, waarvoor we $module_name gebruiken:
| Code: |
echo "<br /><div align=\"right\"><a href=\"modules.php?name=".$module_name."&op=index\"><b>Ga naar pagina 1</b></a></div>";
|
Nu sluit je de box met CloseTable.
Ook deze functie moet worden gesloten.
Dit doe je met een sluitende accolade "}"
Nu moet middels php aan de browser worden verteld wat er gebeurd wanneer iemand jouw module bezoekt.
Welke pagina komt als eerst!
Hier komt de functie switch kijken.
We maken de switch:
$op is een argument die door de browser straks verteld wordt aan de "switch"
Voor de verschillende pagina's maak je een zgn. case.
Voor pagina 2 wordt dat:
| Code: |
case "pagina2":
pagina2();
break;
|
Er van uitgaande de door de browser "pagina2" wordt doorgegeven aan "$op", bekijkt de switch vervolgens wat er moet gebeuren als $op=pagina2.
Daarvoor bestaat een case, nl. case "pagina2". In die case wordt verteld wat er moet gebeuren. In dit geval moet functie pagina2() worden gebruikt.
Wanneer de link dus is
| Code: |
http://www.JOUW-WEBSITE.nl/module.php?name=JOUW-MODULE-NAAM&op=pagina2
|
Krijg je dus pagina 2 te zien.
Maar wat er moet gebeuren als je
| Code: |
http://www.JOUW-WEBSITE.nl/module.php?name=JOUW-MODULE-NAAM
|
in de browser zet, dat weet php nog niet.
Dat doe je als volgt.
Je maak een "default".
Als er dus geen argument $op wordt doorgegeven moet er standaard "dit" gebeuren.
| Code: |
default:
index();
break;
|
De "break" wordt zowel in case als hier bij default gebruikt, om te zorgen dat er niet meer gebeurd als wat er moet gebeuren bij bijv. een case, of bij default.
De switch zelf dient ook te worden afgesloten en dat gebeurd met opnieuw de "}"
De pagina's zijn klaar en dus voeg je de footer toe om je pagina één geheel te laten worden:
| Code: |
include("footer.php");
|
Een PHP bestand begint altijd met
<?php
en eindigt met
?>
Dan weet de server ook wat en wanneer er iets moet gebeuren, of juist moet stoppen.
Het totale bestand ziet er dan zo uit:
| Code: |
<?php
if ( !defined('MODULE_FILE') )
{
die("You can't access this file directly...");
}
require_once("mainfile.php");
$module_name = basename(dirname(__FILE__));
define('INDEX_FILE', true);
include("header.php");
function index() {
global $module_name;
OpenTable();
echo "Dit is pagina 1 van mijn eerste zelfgemaakte module.";
echo "<br /><div align=\"right\"><a href=\"modules.php?name=".$module_name."&op=pagina2\"><b>Ga naar pagina 2</b></a></div>";
CloseTable();
}
function pagina2() {
global $module_name;
OpenTable();
echo "Dit is pagina 2 van mijn eerste zelfgemaakte module.";
echo "<br /><div align=\"right\"><a href=\"modules.php?name=".$module_name."&op=index\"><b>Ga naar pagina 1</b></a></div>";
CloseTable();
}
switch($op) {
case "pagina2":
pagina2();
break;
default:
index();
break;
}
include("footer.php");
?>
|
Succes.
BL |
_________________ Te Lezen: Forum Regels | Te Gebruiken: Forum Zoek Functie
Aanbevolen PHP-Nuke versie: PHP-Nuke 7.6pl3.1!
Aanbevolen Security AddOn: Nuke Sentinel™ |
|
    |
 |
Turquaz52
Gevorderd


Joined: Jun 08, 2006
Posts: 49
|
Posted:
Tue 15 Aug 2006 1:16 |
  |
|
  |
 |
nihiel
Beginner


Joined: Sep 18, 2006
Posts: 17
|
Posted:
Tue 21 Nov 2006 4:10 |
  |
hey,
Mooie uitleg Bluelion, waarvoor bedankt!
Heb hem getest maar zit met een probleem waar ik niet aan uit geraak...
Jouw basis code werkt perfect bij mij maar wanneer ik gewone stukjes tekst in de echo wil veranderen door een tabel dan geeft hij foutmeldingen...
Dit is de foutmelding die ik krijg:
| Code: |
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';' in /var/www/easyclean/easyclean/wwwroot/modules/home/index.php on line 53
|
Line 53 is dan mijn
| Code: |
| include("footer.php"); |
Dit is hoe mijn echo eruit ziet:
| Code: |
echo"<table width=\"1015\" height=\"353\" border=\"0\">"
. " <tr>"
. " <th width=\"615\" height=\"39\" scope=\"col\"><div align=\"justify\" class=\"style5\">Home</div><hr /></th>"
. " <th width=\"62\" scope=\"col\"><img src=\"file:///C|/Documents and Settings/Administrator/Mijn documenten/downloads/PHP-Nuke-7.6.0.3.1/html/images/shop.gif\" width=\"50\" height=\"50\" alt=\"Bestel Easy Clean\" /></th>"
. " <th width=\"258\" scope=\"col\"><div align=\"center\"><span class=\"style4\"><a href=\"http://www.easy-clean.be/modules.php?name=bestel\" target=\"_self\">BESTEL EASY CLEAN SPONS</a></span></div></th>"
. " </tr>"
. " <tr>"
. " <th scope=\"row\"><div align=\"justify\"><span class=\"style1\"></span><strong>Easy Clean ©</strong> Is gemaakt van een ultra nieuw materiaal dat diep in de poriën van elk oppervlak reinigt. Dit ZONDER het gebruik van detergenten, enkel met water!</div> </th>"
. " <td><div align=\"right\" class=\"style6\"><a href=\"http://www.easy-clean.be/modules.php?name=film\" target=\"_self\" class=\"style7\">Klik hier </a></div></td>"
. " <td> <p><br />"
. " <span class=\"style6\"><a href=\"http://www.easy-clean.be/modules.php?name=film\" target=\"_self\">om een TV demonstratie<br />"
. " van Easy Clean te bekijken.</a> </span></p> </td>"
. " </tr>"
. " <tr>"
. " <th scope=\"row\"><div align=\"left\">"
. " <p>Onze firma is een mini onderneming van het Sint Lievenscollege Antwerpen.<br />"
. " Wij zijn gespecialiseerd in de verkoop van kuisproducten gebaseerd op deze gepatenteerde technologie. En hopen met onze producten het kuisen terug tot een plezier te maken. </p>"
. " </div></th>"
. " <td> </td>"
. " <td rowspan=\"2\"> </td>"
. " </tr>"
. " <tr>"
. " <th scope=\"row\"><div align=\"justify\">"
. " <p>Wij verbeteren en passen ons productgamma doorlopend aan . Om op de hoogte te blijven kunt u dus regelmatig deze site eens bezoeken of zich inschrijven op onze nieuwsbrief. </p>"
. " <p>Veel kuisplezier,</p>"
. " <blockquote>"
. " <p> Easy Clean </p>"
. " </blockquote>"
. " </div></th>"
. " <td> </td>"
. " </tr>"
. "</table>"
. "
|
Ik hoop dat iemand van jullie me kan helpen?
Ik gebruik php nuke 7.6 met patch 3.1 |
|
|
  |
 |
BlueLion
Administrator


Joined: Aug 21, 2004
Posts: 2836
|
Posted:
Tue 21 Nov 2006 4:16 |
  |
| Code: |
echo"<table width=\"1015\" height=\"353\" border=\"0\">"
. " <tr>"
. " <th width=\"615\" height=\"39\" scope=\"col\"><div align=\"justify\" class=\"style5\">Home</div><hr /></th>"
. " <th width=\"62\" scope=\"col\"><img src=\"file:///C|/Documents and Settings/Administrator/Mijn documenten/downloads/PHP-Nuke-7.6.0.3.1/html/images/shop.gif\" width=\"50\" height=\"50\" alt=\"Bestel Easy Clean\" /></th>"
. " <th width=\"258\" scope=\"col\"><div align=\"center\"><span class=\"style4\"><a href=\"http://www.easy-clean.be/modules.php?name=bestel\" target=\"_self\">BESTEL EASY CLEAN SPONS</a></span></div></th>"
. " </tr>"
. " <tr>"
. " <th scope=\"row\"><div align=\"justify\"><span class=\"style1\"></span><strong>Easy Clean ©</strong> Is gemaakt van een ultra nieuw materiaal dat diep in de poriën van elk oppervlak reinigt. Dit ZONDER het gebruik van detergenten, enkel met water!</div> </th>"
. " <td><div align=\"right\" class=\"style6\"><a href=\"http://www.easy-clean.be/modules.php?name=film\" target=\"_self\" class=\"style7\">Klik hier </a></div></td>"
. " <td> <p><br />"
. " <span class=\"style6\"><a href=\"http://www.easy-clean.be/modules.php?name=film\" target=\"_self\">om een TV demonstratie<br />"
. " van Easy Clean te bekijken.</a> </span></p> </td>"
. " </tr>"
. " <tr>"
. " <th scope=\"row\"><div align=\"left\">"
. " <p>Onze firma is een mini onderneming van het Sint Lievenscollege Antwerpen.<br />"
. " Wij zijn gespecialiseerd in de verkoop van kuisproducten gebaseerd op deze gepatenteerde technologie. En hopen met onze producten het kuisen terug tot een plezier te maken. </p>"
. " </div></th>"
. " <td> </td>"
. " <td rowspan=\"2\"> </td>"
. " </tr>"
. " <tr>"
. " <th scope=\"row\"><div align=\"justify\">"
. " <p>Wij verbeteren en passen ons productgamma doorlopend aan . Om op de hoogte te blijven kunt u dus regelmatig deze site eens bezoeken of zich inschrijven op onze nieuwsbrief. </p>"
. " <p>Veel kuisplezier,</p>"
. " <blockquote>"
. " <p> Easy Clean </p>"
. " </blockquote>"
. " </div></th>"
. " <td> </td>"
. " </tr>"
. "</table>";
|
Niet getest, maar dit lijkt mij beter.
BL |
_________________ Te Lezen: Forum Regels | Te Gebruiken: Forum Zoek Functie
Aanbevolen PHP-Nuke versie: PHP-Nuke 7.6pl3.1!
Aanbevolen Security AddOn: Nuke Sentinel™ |
|
    |
 |
nihiel
Beginner


Joined: Sep 18, 2006
Posts: 17
|
Posted:
Tue 21 Nov 2006 4:25 |
  |
Enorm bedankt voor de snelle reactie en inderdaad het IS BETER
Probleem dus opgelost voor voorlopig. Waar zat de fout nu juist? |
|
|
  |
 |
BlueLion
Administrator


Joined: Aug 21, 2004
Posts: 2836
|
Posted:
Tue 21 Nov 2006 7:06 |
  |
Als je met echo gaat parsen, dan moet je wel afsluiten met ;
het is
of, als je een variable parsed:
BL |
_________________ Te Lezen: Forum Regels | Te Gebruiken: Forum Zoek Functie
Aanbevolen PHP-Nuke versie: PHP-Nuke 7.6pl3.1!
Aanbevolen Security AddOn: Nuke Sentinel™ |
|
    |
 |
Fearlest
Beginner


Joined: Dec 13, 2006
Posts: 5
|
Posted:
Thu 14 Dec 2006 0:04 |
  |
Hey BL bedankt voor de handige guide.... Maar volgens mij ben ik een van de grootste noobs hier op het gebied van PHP want ik snap het nog steeds niet helemaal Ik heb dit :
| Code: |
<?php
if ( !defined('MODULE_FILE') )
{
die("You can't access this file directly...");
}
require_once("mainfile.php");
$module_name = basename(dirname(__FILE__));
define('INDEX_FILE', true);
include("header.php");
OpenTable();
echo "Dit is mijn eerste zelfgemaakte module.";
CloseTable();
include("footer.php");
?> |
gewoon in een file gezet om te testen maar ik krijg de hele tijd "Sorry, such file doesn't exist..."
nog een vraagje.. als ik een frame erin wil zetten,, kan ik dan gewoon html toepassen waar normaal de tekst moet? Thx alvast
-Fear |
Last edited by Fearlest on Fri 15 Dec 2006 0:17; edited 1 time in total |
|
  |
 |
zeromechanic
Administrator


Joined: Oct 01, 2004
Posts: 1527
Location: Emmeloord
|
Posted:
Thu 14 Dec 2006 6:34 |
  |
1e :
In je map modules maak je een map aan, bv testmodules.
Je script sla je op als index.php en upload je naar die map.
Voor de frames : kijk in de downloads en zoek de iframe module |
_________________ Te Lezen: Forum Regels | Te Gebruiken |
|
   |
 |
Fearlest
Beginner


Joined: Dec 13, 2006
Posts: 5
|
Posted:
Fri 15 Dec 2006 0:24 |
  |
thx,, de iframe werkt echt fijn ja .. alleen als ik zelf een module add dan krijg ik de hele tijd "Sorry, such file doesn't exist...", ik heb het bestandje Index.php genoemd en in een map in Modules gedaan en dan krijg ik nog steeds deze error... |
|
|
  |
 |
|
|
| Donaties
| Adverteren
|
|
Wilt u het forum steunen, dan kunt u nu eenvoudig doneren met PayPal.
|
|