-
Migrace z Joomla 1.5, 2.5 a 3.x do nové Joomla 6
Bong ·
- X Online Joomla bar xunil ·
-
Phoca Cart - pluginy dopravy
H13 ·
-
Nový joomlaportal.cz
Linelabcz ·
-
Amanus - nová šablona Astroid frameworku podporující Phoca Cart
H13 ·
- X Claude Code a VS Code - kompromitace xunil ·
-
Phoca Download - verze 6.1.6 vydána
H13 ·
-
Phoca Cart - Booking
H13 ·
Stránka s vlastním PHP
- Jakub Filip
- Autor
- OFFLINE
- Uživatel
-
Méně
Více
- Příspěvky: 12
26. úno 2015 11:50 #120444
od Jakub Filip
Stránka s vlastním PHP od Jakub Filip
Dobrý den,
chtěl bych se zeptat, jakým způsobem se dá v Joomle vyřešit nová stránka s vlastním PHP kódem. Jde mi o to, že bych chtěl vytvořit stránku, která bude ze šablony, budou na něm všechny moduly a pozice, ale v hlavním sloupci chci mít vlastní PHP kód.
Děkuji za reakce
chtěl bych se zeptat, jakým způsobem se dá v Joomle vyřešit nová stránka s vlastním PHP kódem. Jde mi o to, že bych chtěl vytvořit stránku, která bude ze šablony, budou na něm všechny moduly a pozice, ale v hlavním sloupci chci mít vlastní PHP kód.
Děkuji za reakce
- Cony
-
- Pryč
- Moderátor
-
Méně
Více
- Příspěvky: 5174
26. úno 2015 12:09 #120446
od Cony
Odpověď od Cony v tématu Stránka s vlastním PHP
Nejlépe
vytvořením vlastní komponenty
.
- Pavel
-
- OFFLINE
- Zkušený uživatel
-
Méně
Více
- Příspěvky: 456
26. úno 2015 12:23 - 26. úno 2015 12:25 #120448
od Pavel
Odpověď od Pavel v tématu Stránka s vlastním PHP
Nebo použít pro psaní článků JCE, kde máte možnost povolit vkládání PHP scriptů. Další je možnost použít plugin
DirectPHP
.
- Houbák
- OFFLINE
- Zkušený uživatel
-
26. úno 2015 12:41 - 26. úno 2015 12:43 #120450
od Houbák
Odpověď od Houbák v tématu Stránka s vlastním PHP
Komponenta je samozřejmě nejlepší řešení. Pokud si na to však netroufnete, dalo by se to řešit i pomocí iframe (třeba položku menu). Také záleží na tom, jestli ten php skript má zpracovávat nějaké údaje z Joomly...
- Jakub Filip
- Autor
- OFFLINE
- Uživatel
-
Méně
Více
- Příspěvky: 12
26. úno 2015 15:16 #120455
od Jakub Filip
Odpověď od Jakub Filip v tématu Stránka s vlastním PHP
Děkuji všem za příspěvky, určitě zkusím vytvořit vlastní komponentu. Z Joomly kromě šablony a modulů tahat nic nebudu. Potřebuji jen pomocí jednoduchých SQL dotazů získat data z externí databáze umístěné na jiném serveru.
- Houbák
- OFFLINE
- Zkušený uživatel
-
26. úno 2015 15:50 #120457
od Houbák
Odpověď od Houbák v tématu Stránka s vlastním PHP
Tahat něco z externí databáze na jiném serveru je někdy problém, protože je velice často zablokovaný externí přístup do DB. Možná to není váš případ, pouze na to upozorňuji.
- Jakub Filip
- Autor
- OFFLINE
- Uživatel
-
Méně
Více
- Příspěvky: 12
28. úno 2015 11:17 #120484
od Jakub Filip
Odpověď od Jakub Filip v tématu Stránka s vlastním PHP
Zdravím,
Dle dokumentace Joomly jsem vytvořil jednoduchou komponentu, ale má problém s instalací. Na lokálu (WampServer, Apache 2.2.22. PHP 5.3.13) mi instalace proběhne úspěšně ale na stránkách mi to hodí chybu:
Warning
JInstaller: :Install: Cannot find XML setup file
JInstaller: :Install: Cannot find XML setup file
Copy failed
Joomla je verze 3.3.6 a s instalací jiných komponent jsem problém neměl. Zkoušel jsem jak instalovat balík, tak i ze složky tmp.
zde obsah xml souboru:
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="3.3.0" method="upgrade">
<name>Krouzky</name>
<!-- The following elements are optional and free of formatting constraints -->
<creationDate>February 2015</creationDate>
<author>Autor</author>
<authorEmail>Email</authorEmail>
<authorUrl>h</authorUrl>
<copyright>Copyright Info</copyright>
<license>License Info</license>
<!-- The version string is recorded in the components table -->
<version>0.0.1</version>
<!-- The description is optional and defaults to the name -->
<description>Vypis krouzku z Domecku</description>
<update> <!-- Runs on update; New since J2.5 -->
<schemas>
<schemapath type="mysql">sql/updates/mysql</schemapath>
</schemas>
</update>
<!-- Site Main File Copy Section -->
<!-- Note the folder attribute: This attribute describes the folder
to copy FROM in the package to install therefore files copied
in this section are copied from /site/ in the package -->
<files folder="site">
<filename>index.html</filename>
<filename>krouzky.php</filename>
</files>
<administration>
<!-- Administration Menu Section -->
<menu link='index.php?option=com_krouzky'>Kroužky</menu>
<!-- Administration Main File Copy Section -->
<!-- Note the folder attribute: This attribute describes the folder
to copy FROM in the package to install therefore files copied
in this section are copied from /admin/ in the package -->
<files folder="admin">
<!-- Admin Main File Copy Section -->
<filename>index.html</filename>
<filename>krouzky.php</filename>
<!-- SQL files section -->
<folder>sql</folder>
</files>
</administration>
</extension>
Projíždím fóra, kde se dá. Ale zatím se mi to nepodařilo vyřešit. Máte nějaký nápad. Díky
Dle dokumentace Joomly jsem vytvořil jednoduchou komponentu, ale má problém s instalací. Na lokálu (WampServer, Apache 2.2.22. PHP 5.3.13) mi instalace proběhne úspěšně ale na stránkách mi to hodí chybu:
Warning
JInstaller: :Install: Cannot find XML setup file
JInstaller: :Install: Cannot find XML setup file
Copy failed
Joomla je verze 3.3.6 a s instalací jiných komponent jsem problém neměl. Zkoušel jsem jak instalovat balík, tak i ze složky tmp.
zde obsah xml souboru:
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="3.3.0" method="upgrade">
<name>Krouzky</name>
<!-- The following elements are optional and free of formatting constraints -->
<creationDate>February 2015</creationDate>
<author>Autor</author>
<authorEmail>Email</authorEmail>
<authorUrl>h</authorUrl>
<copyright>Copyright Info</copyright>
<license>License Info</license>
<!-- The version string is recorded in the components table -->
<version>0.0.1</version>
<!-- The description is optional and defaults to the name -->
<description>Vypis krouzku z Domecku</description>
<update> <!-- Runs on update; New since J2.5 -->
<schemas>
<schemapath type="mysql">sql/updates/mysql</schemapath>
</schemas>
</update>
<!-- Site Main File Copy Section -->
<!-- Note the folder attribute: This attribute describes the folder
to copy FROM in the package to install therefore files copied
in this section are copied from /site/ in the package -->
<files folder="site">
<filename>index.html</filename>
<filename>krouzky.php</filename>
</files>
<administration>
<!-- Administration Menu Section -->
<menu link='index.php?option=com_krouzky'>Kroužky</menu>
<!-- Administration Main File Copy Section -->
<!-- Note the folder attribute: This attribute describes the folder
to copy FROM in the package to install therefore files copied
in this section are copied from /admin/ in the package -->
<files folder="admin">
<!-- Admin Main File Copy Section -->
<filename>index.html</filename>
<filename>krouzky.php</filename>
<!-- SQL files section -->
<folder>sql</folder>
</files>
</administration>
</extension>
Projíždím fóra, kde se dá. Ale zatím se mi to nepodařilo vyřešit. Máte nějaký nápad. Díky
- Cony
-
- Pryč
- Moderátor
-
Méně
Více
- Příspěvky: 5174
28. úno 2015 11:48 #120487
od Cony
Odpověď od Cony v tématu Stránka s vlastním PHP
No pokud to na lokále funguje, problém bude spíš na serveru. Opravdu vám (i nyní) instalace jiných komponent funguje?
- Jakub Filip
- Autor
- OFFLINE
- Uživatel
-
Méně
Více
- Příspěvky: 12
28. úno 2015 11:54 #120488
od Jakub Filip
Odpověď od Jakub Filip v tématu Stránka s vlastním PHP
Pro upřesnění uvádím strukturu vytvořené komponenty.
v balíčku ZIP mám:
admin
- sql
- - updates
- - - mysql
- - - - 0.0.1.sql
- - - - index.html
- - - index.html
- - index.html
- krouzky.php
- index.html
site
- krouzky.php
- index.html
krouzky.xml
Obsah souboru krouzky.xml viz předchozí příspěvek
Obsah všech souborů index.html je stejný a to <html><body bgcolor="#FFFFFF"></body></html>
Obsah souboru 0.0.1.sql je prázdný
Obsah souboru admin / krouzky.php je prostý text
Obsah souboru site / krouzky.php je můj PHP kód
Prosím poraďte
v balíčku ZIP mám:
admin
- sql
- - updates
- - - mysql
- - - - 0.0.1.sql
- - - - index.html
- - - index.html
- - index.html
- krouzky.php
- index.html
site
- krouzky.php
- index.html
krouzky.xml
Obsah souboru krouzky.xml viz předchozí příspěvek
Obsah všech souborů index.html je stejný a to <html><body bgcolor="#FFFFFF"></body></html>
Obsah souboru 0.0.1.sql je prázdný
Obsah souboru admin / krouzky.php je prostý text
Obsah souboru site / krouzky.php je můj PHP kód
Prosím poraďte
- Jakub Filip
- Autor
- OFFLINE
- Uživatel
-
Méně
Více
- Příspěvky: 12
28. úno 2015 11:55 #120489
od Jakub Filip
Odpověď od Jakub Filip v tématu Stránka s vlastním PHP
Ano, nyní jsem zkusil instalaci komponenty DircetPHP a v pořádku
- Jakub Filip
- Autor
- OFFLINE
- Uživatel
-
Méně
Více
- Příspěvky: 12
28. úno 2015 12:01 #120491
od Jakub Filip
Odpověď od Jakub Filip v tématu Stránka s vlastním PHP
Na lokále sice proběhne instalace v pořádku, ale stránka s mým PHP kódem vyhazuje chyby. Pokud ovšem můj PHP kód hodím na stránky do zvláštní složky, tak to běhá bez problémů.
Můj PHP kód. Tečkama jsem skryl "citlivá" data:
<meta charset="utf8">
<link rel="stylesheet" href="/templates/protostar/css/krouzky.css" type="text/css">
<div class="krouzky">
<?php
$domain = ....;
$key = ".......";
if($_GET["id"] == "") {
$kategorie = json_decode(file_get_contents("https:/........./admin/json/1.0/api.php?domain=".$domain."&key=".$key."&action=hobby&task=get_categories"));
if($_GET["den"] == "") {
$den = 0;
} else {
$den = $_GET["den"];
}
if($_GET["kat"] == "") {
$kat = "";
} else {
$kat = $_GET["kat"];
}
echo "<div class='kr_kat'><h2>Kategorie</h2>";
echo '<a href="krouzky.php?kat=&den='.$den.'">Všechny kategorie</a><br>';
foreach($kategorie->data as $k => $v) {
echo '<a href="krouzky.php?kat='.$k.'&den='.$den.'">'.$v.'</a><br>';
}
echo "</div>";
echo "<div class='kr_den'><h2>Den konání</h2>";
echo '<a href="krouzky.php?kat='.$kat.'&den=0">Všechny dny</a><br>';
echo '<a href="krouzky.php?kat='.$kat.'&den=1">Pondělí</a><br>';
echo '<a href="krouzky.php?kat='.$kat.'&den=2">Úterý</a><br>';
echo '<a href="krouzky.php?kat='.$kat.'&den=3">Středa</a><br>';
echo '<a href="krouzky.php?kat='.$kat.'&den=4">Čtvrtek</a><br>';
echo '<a href="krouzky.php?kat='.$kat.'&den=5">Pátek</a><br>';
echo '<a href="krouzky.php?kat='.$kat.'&den=6">Sobota</a><br>';
echo '<a href="krouzky.php?kat='.$kat.'&den=7">Neděle</a><br>';
echo "</div>";
$list = json_decode(file_get_contents("https://........./admin/json/1.0/api.php?domain=".$domain."&key=".$key."&action=hobby&task=get_list&day=".$den."&category=".$kat.""));
if($list->error->code == 0) {
echo '<table class="kr_tab">';
echo '<tr><th width="80">Kód</th><th width="300">Název</th><th width="50">Věk</th><th width="80">Cena</th><th></th></tr>';
foreach($list->data as $v) {
echo '<tr><td>'.$v->kod.'</td>';
echo '<td class="nazev">'.$v->nazev.'</td>';
echo '<td>'.$v->vek_od.'-'.$v->vek_do.'</td>';
echo '<td>'.$v->cena_rok.' Kč</td>';
echo '<td><a href="krouzky.php?id='.$v->id.'">info</a></td></tr>';
}
echo '</table>';
}
} else {
$data = json_decode(file_get_contents("https://............./admin/json/1.0/api.php?domain=".$domain."&key=".$key."&action=hobby&task=get_id&id=".$_GET["id"]));
$detail = $data->data;
echo "<h2>Detail kroužku</h2>";
echo 'Název: '.$detail->nazev.'<br>';
echo 'Kód: '.$detail->kod.'<br>';
echo 'Místo: '.$detail->misto.'<br>';
echo 'Lektor: '.$detail->keltor.'<br>';
echo 'Kapacita 1. pol: '.$detail->kapacita_1pol.'<br>';
echo 'Kapacita 2. pol: '.$detail->kapacita_2pol.'<br>';
echo 'Věk od: '.$detail->vek_od.'<br>';
echo 'Věk do: '.$detail->vek_do.'<br>';
echo 'Cena vstup: '.$detail->cena_vstup.'<br>';
echo 'Cena 1. pol: '.$detail->cena_1pol.'<br>';
echo 'Cena 2. pol: '.$detail->cena_2pol.'<br>';
echo 'Cena rok: '.$detail->cena_rok.'<br>';
echo 'Zahájení: '.$detail->datum_zahajeni.'<br>';
echo 'Ukončení: '.$detail->datum_ukonceni.'<br>';
echo "<h3>Obrázky</h3>";
foreach($detail->obrazky as $obr) {
echo '<a href="'.$obr->obrazek.'" title="'.$obr->popis.'"><img src="'.$obr->nahled.'"></a> <br>';
echo '<a href="'.$obr->stazeni.'" title="'.$obr->popis.'">stáhnout</a> <br><br>';
}
echo "<h3>Dokumenty</h3>";
foreach($detail->dokumenty as $doc) {
echo '<a href="'.$doc->stazeni.'" title="'.$doc->popis.'">'.$doc->nazev.'</a><br>';
}
echo '<br><a href="krouzky.php">zpět</a>';
}
?>
</div>
Můj PHP kód. Tečkama jsem skryl "citlivá" data:
<meta charset="utf8">
<link rel="stylesheet" href="/templates/protostar/css/krouzky.css" type="text/css">
<div class="krouzky">
<?php
$domain = ....;
$key = ".......";
if($_GET["id"] == "") {
$kategorie = json_decode(file_get_contents("https:/........./admin/json/1.0/api.php?domain=".$domain."&key=".$key."&action=hobby&task=get_categories"));
if($_GET["den"] == "") {
$den = 0;
} else {
$den = $_GET["den"];
}
if($_GET["kat"] == "") {
$kat = "";
} else {
$kat = $_GET["kat"];
}
echo "<div class='kr_kat'><h2>Kategorie</h2>";
echo '<a href="krouzky.php?kat=&den='.$den.'">Všechny kategorie</a><br>';
foreach($kategorie->data as $k => $v) {
echo '<a href="krouzky.php?kat='.$k.'&den='.$den.'">'.$v.'</a><br>';
}
echo "</div>";
echo "<div class='kr_den'><h2>Den konání</h2>";
echo '<a href="krouzky.php?kat='.$kat.'&den=0">Všechny dny</a><br>';
echo '<a href="krouzky.php?kat='.$kat.'&den=1">Pondělí</a><br>';
echo '<a href="krouzky.php?kat='.$kat.'&den=2">Úterý</a><br>';
echo '<a href="krouzky.php?kat='.$kat.'&den=3">Středa</a><br>';
echo '<a href="krouzky.php?kat='.$kat.'&den=4">Čtvrtek</a><br>';
echo '<a href="krouzky.php?kat='.$kat.'&den=5">Pátek</a><br>';
echo '<a href="krouzky.php?kat='.$kat.'&den=6">Sobota</a><br>';
echo '<a href="krouzky.php?kat='.$kat.'&den=7">Neděle</a><br>';
echo "</div>";
$list = json_decode(file_get_contents("https://........./admin/json/1.0/api.php?domain=".$domain."&key=".$key."&action=hobby&task=get_list&day=".$den."&category=".$kat.""));
if($list->error->code == 0) {
echo '<table class="kr_tab">';
echo '<tr><th width="80">Kód</th><th width="300">Název</th><th width="50">Věk</th><th width="80">Cena</th><th></th></tr>';
foreach($list->data as $v) {
echo '<tr><td>'.$v->kod.'</td>';
echo '<td class="nazev">'.$v->nazev.'</td>';
echo '<td>'.$v->vek_od.'-'.$v->vek_do.'</td>';
echo '<td>'.$v->cena_rok.' Kč</td>';
echo '<td><a href="krouzky.php?id='.$v->id.'">info</a></td></tr>';
}
echo '</table>';
}
} else {
$data = json_decode(file_get_contents("https://............./admin/json/1.0/api.php?domain=".$domain."&key=".$key."&action=hobby&task=get_id&id=".$_GET["id"]));
$detail = $data->data;
echo "<h2>Detail kroužku</h2>";
echo 'Název: '.$detail->nazev.'<br>';
echo 'Kód: '.$detail->kod.'<br>';
echo 'Místo: '.$detail->misto.'<br>';
echo 'Lektor: '.$detail->keltor.'<br>';
echo 'Kapacita 1. pol: '.$detail->kapacita_1pol.'<br>';
echo 'Kapacita 2. pol: '.$detail->kapacita_2pol.'<br>';
echo 'Věk od: '.$detail->vek_od.'<br>';
echo 'Věk do: '.$detail->vek_do.'<br>';
echo 'Cena vstup: '.$detail->cena_vstup.'<br>';
echo 'Cena 1. pol: '.$detail->cena_1pol.'<br>';
echo 'Cena 2. pol: '.$detail->cena_2pol.'<br>';
echo 'Cena rok: '.$detail->cena_rok.'<br>';
echo 'Zahájení: '.$detail->datum_zahajeni.'<br>';
echo 'Ukončení: '.$detail->datum_ukonceni.'<br>';
echo "<h3>Obrázky</h3>";
foreach($detail->obrazky as $obr) {
echo '<a href="'.$obr->obrazek.'" title="'.$obr->popis.'"><img src="'.$obr->nahled.'"></a> <br>';
echo '<a href="'.$obr->stazeni.'" title="'.$obr->popis.'">stáhnout</a> <br><br>';
}
echo "<h3>Dokumenty</h3>";
foreach($detail->dokumenty as $doc) {
echo '<a href="'.$doc->stazeni.'" title="'.$doc->popis.'">'.$doc->nazev.'</a><br>';
}
echo '<br><a href="krouzky.php">zpět</a>';
}
?>
</div>
- Jakub Filip
- Autor
- OFFLINE
- Uživatel
-
Méně
Více
- Příspěvky: 12
28. úno 2015 12:14 #120492
od Jakub Filip
Odpověď od Jakub Filip v tématu Stránka s vlastním PHP
Ještě jedno doplnění. V komponentě nemám naprogramován Controller ani View. Musí být tato část naprogramována, když z Joomly budu chtít jen zobrazit šablonu a moduly?
- Cony
-
- Pryč
- Moderátor
-
Méně
Více
- Příspěvky: 5174
28. úno 2015 22:57 #120504
od Cony
Odpověď od Cony v tématu Stránka s vlastním PHP
MVC nemusíte používat, když se to ale naučíte, hodně toho o Joomle pochopíte a do budoucna si usnadníte práci.
Na první pohled vše vypadá v pořádku. Chybová hláška by mohla ukazovat na
- problémy v nastavení Joomly (ale jiná komponenta Vám funguje)
- problémy v XML manifestu komponenty (ale jiná instance Joomly Vám XML zkousne)
Zkusil bych se tedy zaměřit na ten manifest, pročistěte ho od nepotřebného balastu (poznámky, sekce update), zkontrolujte zda se opravdu jedná o platné XML, a zda je opravdu uloženo jako UTF-8.
Na první pohled vše vypadá v pořádku. Chybová hláška by mohla ukazovat na
- problémy v nastavení Joomly (ale jiná komponenta Vám funguje)
- problémy v XML manifestu komponenty (ale jiná instance Joomly Vám XML zkousne)
Zkusil bych se tedy zaměřit na ten manifest, pročistěte ho od nepotřebného balastu (poznámky, sekce update), zkontrolujte zda se opravdu jedná o platné XML, a zda je opravdu uloženo jako UTF-8.
- Jakub Filip
- Autor
- OFFLINE
- Uživatel
-
Méně
Více
- Příspěvky: 12
02. bře 2015 20:50 #120558
od Jakub Filip
Odpověď od Jakub Filip v tématu Stránka s vlastním PHP
Děkuji za podnět.
Už se mi to podařilo vyřešit asi tři dny zpátky. Stačilo vymazat složky components / com_krouzky a administrator / components / com_krouzky. Pak instalace komponenty proběhla v pořádku.
Teď ale řeším trochu jiný problém.
Odkaz z menu na tuto komponentu jsem zatím vyřešil přes externí url. Na stránce se mi však nezobrazuje modul, který mám k této položce menu přiřazen. Je to tím, že nemám naprogramován JController a View?
Už se mi to podařilo vyřešit asi tři dny zpátky. Stačilo vymazat složky components / com_krouzky a administrator / components / com_krouzky. Pak instalace komponenty proběhla v pořádku.
Teď ale řeším trochu jiný problém.
Odkaz z menu na tuto komponentu jsem zatím vyřešil přes externí url. Na stránce se mi však nezobrazuje modul, který mám k této položce menu přiřazen. Je to tím, že nemám naprogramován JController a View?
- Cony
-
- Pryč
- Moderátor
-
Méně
Více
- Příspěvky: 5174
02. bře 2015 21:34 #120562
od Cony
Odpověď od Cony v tématu Stránka s vlastním PHP
Ano i ne. Je to jedna z věcí, která pokud použijete MVC bude jednodušší. Odkaz do menu lze ale definovat i XML souborem metadata.xml přímo v kořenovém adresáři komponenty (v site části).
Pro studium bych doporučil mrknout přímo do zdrojáků Joomly do souboru
Ten soubor metadata.xml by měl vypadat v nejjednodušší verzi nějak takto
Za COM_KROUZKY_MENU_LABEL a COM_KROUZKY_MENU_DESC si buď dosaďte přímo název a popis, pod kterým Vám bude menu manager tuto položku nabízet, nebo pokud budete chtít být důsledný vytvořte si jazykový soubor cs-CZ.com_krouzky.sys.ini pro admin část a v něm tyto dvě konstanty nadefinujte.
Pro studium bych doporučil mrknout přímo do zdrojáků Joomly do souboru
Ten soubor metadata.xml by měl vypadat v nejjednodušší verzi nějak takto
Code:
<?xml version="1.0" encoding="utf-8"?>
<metadata>
<menu name="COM_KROUZKY_MENU_LABEL" msg="COM_KROUZKY_MENU_DESC" />
</metadata>
Za COM_KROUZKY_MENU_LABEL a COM_KROUZKY_MENU_DESC si buď dosaďte přímo název a popis, pod kterým Vám bude menu manager tuto položku nabízet, nebo pokud budete chtít být důsledný vytvořte si jazykový soubor cs-CZ.com_krouzky.sys.ini pro admin část a v něm tyto dvě konstanty nadefinujte.
Vygenerováno za 0.130 sekund