Bekijk deze pagina in het Engels - vanaf daar zijn ook andere talen te vinden.

Gebruikergedefinieerde tags

Korte versie

Gebruikergedefinieerde tags bieden een eenvoudige manier om PHP-code in uw site te gebruiken. Om bestaande PHP-code te gebruiken, maakt u een nieuwe tag aan (Uitbreidingen-> Gebruikergedefinieerde tags -> Tag toevoegen) en kopieert u de code zonder "<?php" en "?>" in het tekstveld. De gebruikergedefinieerde tag kan in een pagina of sjabloon aangeroepen worden met: {tag_naam} (gebruik in de namen geen "-" teken).

De standaardinstallatie van CMS levert twee gebruikergedefinieerde tags mee, namelijk {user_agent} en {custom_copyright}.

Parameters voor tags

U kunt parameters aan de tags meegeven. In het volgende voorbeeld is de parameter src met de volgende aanroep en code: "{image_link src='hedgehog'}"

echo '<a href="' . $params['src'] . '.jpg" target="_blank">';
echo '<img src="t_' . $params['src'] . '.jpg"></a>';


Lange versie

Het maken van een gebruikergedefinieerde tag

Zoals veel zaken in CMS is het toevoegen van een nieuwe plugin eenvoudig, hoewel het ook weer niet het bekende 'like a holiday' is.

Om uw eigen plugin toe te voegen, volgt u de volgende stappen:

  1. Login als beheerder of als gebruiker met de juiste rechten
  2. In het beheerpaneel, klik op Uitbreidingen -> Gebruikergedefinieerde tags
  3. Maakt een nieuwe tag aan door op 'Tag toevoegen' te klikken.
  4. In het 'Naam' veld typt u de naam van de tag. Maak de naam beschrijvend, maar niet te lang. De naam mag alleen letters, cijfers en underscores bevatten
  5. In het 'Code' tekstveld typt of kopieert u de PHP-code, zie ook de volgende paragraaf. Laat de '<?php' en '?>' weg
  6. Klik op 'Versturen'.

Uw eerste gebruikergedefinieerde tag

De beste manier om tags te leren maken is door een eenvoudig voorbeeld te bekijken. Zoals in alle programmeerintroducties beginnen we met een hello world script.

Volg de bovenstaande stappen om een nieuwe plugin aan te maken, geef het de naam "helloworld" (zonder aanhalingstekens) en voorzie het 'Code' tekstveldbox van de volgende regel...

echo 'Hello World!';

Klik op 'Versturen'. Om de tag te testen maakt u een nieuwe pagina aan, zie ook Inhoud toevoegen), type "{helloworld}" (zonder de aanhalingstekens) ergens in de tekstveld van de nieuwe pagina en klik op 'Voorbeeld'. In plaats van {helloworld} zult u nu "Hello World!" zien.

Het echo commando doet niets anders dan alles tussen de aanhalingstekens wegschrijven, dus we kunnen deze tag gebruiken om HTML, DHTML of zelfs Javascript toe te voegen. Probeer ook de code in de helloworld tag te vervangen door de volgende code:

echo '<h3>Hello World!</h3>';

Test het op dezelfde manier als zojuist en u zou het volgende moeten zien:

Hello World!

Misschien zegt u nu: "Maar dat kan ik ook met gewone HTML!" Dat is inderdaad zo, maar tags worden pas echt nuttig als u parameters toe gaat voegen. Deze parameters maken het mogelijk om iets in de tag te specificeren. Laten we bijvoorbeeld iemand genaamd Bob gedag zeggen. Probeer de volgende code...

echo '<h3>Hello ' . $params['naam'] . '!</h3>';

U ziet dat de parameter "naam" toegevoegd is. De inhoud van deze parameter zal vervangen worden door de parameterwaarde van de aanroep. Test de tag zoals eerder, maar in plaats van "{helloworld}" gebruikt u nu "{helloworld naam='Bob'}". Het resultaat van de aanroep moet er ongeveer als volgt uitzien...

Hello Bob!

Hiermee heeft u de basis van het schrijven van gebruikergedefinieerde tags gehad. U kunt iets nuttigs doen met het echo commando, parameters en een beetje verbeelding, dus denkt u eens in wat u kunt doen met een beetje PHP...

Doorgeven van de paginainhoud als een parameter

U kunt de paginainhoud benaderen in een gebruikergedefinieerde tag door deze mee te geven als parameter:

In uw sjabloon neemt u op:

{content assign=pagecontent}
{inhoudsopgave thepagecontent="$pagecontent"}

Uw gebruikergedefinieerde tag genaamd "inhoudsopgave" heeft de volgende inhoud:

echo $params['thepagecontent']; // Toon paginainhoud

Deze tag kunt u bijvoorbeeld gebruiken om de inhoud van de pagina automatisch te verwerken tot een inhoudsopgave.

Hoe krijgt uw de URL van een pagina uit zijn content_id?

Dit gaat ervan uit de uw pagina-content_id een variabele is met de naam $page_content_id

$gCms = cmsms();
$hm =& $gCms->GetHierarchyManager();
$curnode =& $hm->getNodeById($page_content_id);
$curcontent =& $curnode->GetContent();
echo 'Pagina URL: ' . $curcontent->GetURL();

Hoe voert u Smarty tags uit in een gebruikergedefinieerde tag?

Dit kunt u als volgt bewerkstelligen:

$gCms = cmsms();
$smarty = &$gCms->GetSmarty();
$smarty_data = "{menu}";
$smarty->_compile_source('temporary template', $smarty_data, $_compiled );
@ob_start();
$smarty->_eval('?>' . $_compiled);
$_contents = @ob_get_contents();
@ob_end_clean();
echo $_contents;

U kunt meerdere domeinen beheren met één installatie van CMSMS als u iets als volgt zou doen:

$gCms = cmsms();
$smarty = &$gCms->GetSmarty();

$url = $_SERVER['REQUEST_URI']; 
if(eregi('domain1',$url))
{ 
   $smarty_data = "{menu template='cssmenu.tpl'}";
  
}
else if(eregi('domain2',$url))
{ 
   $smarty_data = "{menu template='cssmenu2.tpl'}";
 
}
 $smarty->_compile_source('temporary template',    
   $smarty_data, $_compiled );
   @ob_start();
   $smarty->_eval('?>' . $_compiled);
   $_contents = @ob_get_contents();
   @ob_end_clean();
   echo $_contents;

Heeft u de smaak te pakken? Kijk wat anderen gemaakt hebben en deel uw tags...


overig

onderstaande content komt van een geredigeerde pagina en moet nog in deze pagina worden geïntegreerd

Gebruikergedefinieerde tags zijn stukjes PHP-code, zonder de <?php en ?>, waarmee u de mogelijkheid heeft zelf herbruikbare PHP-functionaliteit aan uw site toe te voegen.

Gebruikergedefinieerde tags hebben een relatief kleine omvang, zijnuniek voor de site of bedoeld voor een hele specifieke toepassing. Ze kunnen in een pagina of sjabloon eenvoudig met hun naam aangeroepen worden, dus: {usertagnaam}. Ook is het mogelijk aan deze tags parameters mee te geven.

Gebruikergedefinieerde tags worden opgeslagen in de CMS-database en worden aangeroepen op het moment dat ze nodig zijn. Ze hebben geen beheerpaneel om instellingen te kunnen wijzigen. Meestal worden ze niet gebruikt voor het aanmaken van formulieren of voor zeer beperkte CGI-verwerking.

Gebruikergedefinieerde tags zijn meestal specifiek voor een taak en kunnen niet gedeeld worden met anderen. Ze worden aangemaakt via een scherm in het beheerpaneel (Uitbreidingen -> tags).


Bijdragen aan de Nederlandse wiki? Check dan eerst het forum-topic WIKI - wat doen we daarmee?

User Handbook/Admin Panel/Extensions/User Defined Tags/nl

From CMSMS

A2 Hosting