Stránka s vlastním PHP
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
Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.
Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.
Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.
Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.
Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.
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
Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.
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
Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.
Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.
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>
Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.
Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.
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.
Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.
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?
Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.
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
<?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.
Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.