< návrat zpět

Diskuse


Téma: hcm box rss

Zaslal/a 22.5.2020 15:04

<?php _templateBoxes() ?>

=

[hcm]templateBoxes,1[/hcm]
[hcm]templateBox,1[/hcm]
[hcm]Boxes,1[/hcm]
[hcm]Box,1[/hcm]

? :)

Zaslat odpověď >

#022140
Přečíst: Jak správně pokládat dotazy [DŮLEŽITÉ] 10
#022143
A taky je dobrý se podívat do dokumentace zde na webu, kde na to najdeš odpověď.
#022144
Jednak zde není otázka, na kterou by se dalo odpovědět. Druhak nenajde, protože boxy se jako HCM vypsat nedají.
#022155
Pardon, ale myslím, že je všem zřejmé o co jsem se snažil a zároveň na co se vás ptal..
..
17 = 53 ? taky každý pochopí a přitom dotaz má stejnou strukturu.. ale beru zpět :)

tak jinak, jako HCM to rovnou nejde, vyrobím si teda HCM který budu volat a ten mi teprve vypíše boxy?
chci boxy dostat někam doprostřed textu na stránce a ne jen jedné, ne na pevné místo v layoutu.. a nevím o tom, že bych při editaci článků mohl využít php přímo.

Moje jednoduché HCM

<?php

/* --- kontrola jadra --- */
if (!defined('_core')) exit;

/* --- definice funkce modulu --- */
function _HCM_moje_box()
{
return _templateBoxes(1);

}


zavolám jako

[hcm]moje/box[/hcm]

paráda, opravdu se mi vypíše obsah boxu, jen na úplném začátku stránky.. je li tedy pro test obsah boxu jen kus textu "456456" zdrojový kód zobrazené stránky začíná takto..

<div class='box-item'>
456456
</div>

<!DOCTYPE html>
<html lang="cs">

<head>
<meta http-equiv ....


což není úplně to co jsem chtěl. Můžu se spokojit s řešením, že mé "456456" napíši rovnou jako return v hcm mezi jednoduché uvozovky, pak se mi to vypíše správně, přesně tam, kde v textu tento hcm zavolám. Funguje to, ale bude to otravné, jakmile bude potřeba oné "456456" často editovat..
#022156
Nezlob se na mě, ale z toho prvního příspěvku rozhodně není poznat to, že by jsi rád vypisoval obsah boxu někde pomocí HCM. Vypadá to spíše na to, že se ptáš na správný zápis.

Proto je dobré řídit se tím co jsem posílal v první odpovědi. Konkrétně tedy body 1 a 2. Koule mám sice dvě, ale ani jednu křišťálovou...

No a teď k odpovědi.
Funkce _templateBoxes() má dva parametry, prvním z nich je id sloupce a druhým typ výstupu. Výstup je pro jednoduché použití v templatu nastaven na echo, to znamená přímý výpis do HTML kódu. Ty ale potřebuješ return - obsah vracet jako řetězec, který následně vypíšeš pomocí HCM.

Takže správný zápis toho HCM bude
<?php

/* --- kontrola jadra --- */
if (!defined('_core')) exit;

/* --- definice funkce modulu --- */
function _HCM_moje_box()
{
return _templateBoxes(1, true);
}

A kdyby ses rozepsal o problému takto hned na začátku, tak jsi měl odpověď už 22.5 v 15:37
#022157
no, v zásadě jsem se ptal na správný zápis, jen jsem nepočítal s tím, že žádný takový neexistuje...

každopadně děkuji :)
#022173
Ahoj. přišel jsem na to až teď. Sice na dané stránce to funguje bez problémů, ale nefunguje pak tisk článku. Když dám tisk, hodí mi to tohle..

Fatal error: Uncaught Error: Call to undefined function _templateBoxes() in C:\wamp64\www\final\plugins\hcm\moje\box.php on line 9
( ! ) Error: Call to undefined function _templateBoxes() in C:\wamp64\www\final\plugins\hcm\moje\box.php on line 9
Call Stack
# Time Memory Function Location
1 0.0000 408936 {main}( ) ...\printart.php:0
2 0.0250 512232 _parseHCM( ) ...\printart.php:46
3 0.0250 512232 preg_replace_callback ( ) ...\functions.php:967
4 0.0250 512696 _parseHCM_module( ) ...\functions.php:967
5 0.0260 513672 _HCM_moje_box( ) ...\functions.php:999


pokud ze článku vyndám volání HCM
[hcm]moje/box[/hcm]

pak už to zase jde a stránku s tiskem v novém okně se mi normálně zobrazí..Máš nějaký nápad?
#022177
Nová verze tuto funkci už nemá a spoléhá na tisk prohlížečů. Přemýšlel jsem zda by pomohlo importovat soubor functions.php, ale to by určitě vyhodilo chybu o redeklaraci funkcí.