phpRS help fórum : phpRS Fórum
Hlavní diskuzní phpRS fórum. Najdete zde odpovědi na otázky týkající se provozu a instalace phpRS systému.
phpRS - redakční a informační systém
Navigace Plugin
Zaslán uživatelem/kou: ZdenekPNJ (IP adresa zaznamenána)
Datum: 2008-03-19, 15:41

Ahoj, snažím se vytvořit dynamický plugin Navigace (horizontální navigační menu). Něco jsem obkouknul z jiných pluginů, ale potřeboval bych to malinko pomoct dopracovat.

Hlavní část souboru navigace php:

function Navigace()
{
// nazev a verze phpRS layoutu
$layoutversion='Layout Engine: freestyle2006 verze 2.7.0';
// HTML META tag LINK pro pripojeni zakladniho CSS souboru
$layoutcss='<link rel="stylesheet" href="image/freestyle2006/freestyle2006.css" type="text/css">';
// kodovani phpRS layoutu
$layoutkodovani='windows-1250';


// ----------- [priprava na generovani stranky] -----------

//------------ [nastavenie sablony podla obsahu $GLOBALS['rstema'] -----------

$navigacesablony = array (
1 => 'navigace1',
2 => 'navigace2',
3 => 'navigace1',
4 => 'navigace2',
5 => 'navigace1',
6 => 'navigace2',
7 => 'navigace1',
8 => 'navigace2',
9 => 'navigace1',
10 => 'navigace2',
11 => 'navigace1',
12 => 'navigace2',
13 => 'navigace1',
14 => 'navigace2'
);


if (isset($GLOBALS["rstema"]) && true===array_key_exists($GLOBALS["rstema"], $navigacesablony)) {
$rs_main_navigacesablona = $navigacesablony[$GLOBALS["rstema"]];
} else {
$rs_main_sablona = 'base2';
}
if (!isset($rs_main_navigacesablona)): $rs_main_navigacesablona=""; endif;

$vzhledwebu = new CLayout(); // inic. vzhledove tridy

switch ($rs_main_navigacesablona):
case 'navigace1': // zakladni navigacesablona
?>
<ul class="main">

<li class="current"><a href="...." title="Úvod"><span>Úvod</span></a></li>
<li><a href="...." title="Menu1"><span>Menu1</span></a></li>
<li><a href="...." title="Menu2"><span>Menu2</span></a></li>
<li><a href=".... "title="Menu3"><span>Menu3</span></a></li>
....atd.
</ul><!-- /konec ul main -->
<ul class="sub">
<li><a href="..........." title="Submenu1">Submenu1</a></li>
<li><a href="..........." title="Submenu2">Submenu2</a></li>
<li><a href="..........." title="Submenu3">Submenu3</a></li>
</ul>
<?
break;
case 'navigace2': // zakladni navigacesablona
?>
<ul class="main">

<li><a href="...." title="Úvod"><span>Úvod</span></a></li>
<li class="current"><a href="...." title="Menu1"><span>Menu1</span></a></li>
<li><a href="...." title="Menu2"><span>Menu2</span></a></li>
<li><a href=".... "title="Menu3"><span>Menu3</span></a></li>
....atd.
</ul><!-- /konec ul main -->
<ul class="sub">
<li><a href="..........." title="Submenu1">Submenu1</a></li>
<li><a href="..........." title="Submenu2">Submenu2</a></li>
<li><a href="..........." title="Submenu3">Submenu3</a></li>
</ul>
<?
break;

default: // defaultni navigacesablona - je shodna s jednou z vyse uvedenych navigacesablon
?>
<ul class="main">

<li class="current"><a href="...." title="Úvod"><span>Úvod</span></a></li>
<li><a href="...." title="Menu1"><span>Menu1</span></a></li>
<li><a href="...." title="Menu2"><span>Menu2</span></a></li>
<li><a href=".... "title="Menu3"><span>Menu3</span></a></li>
....atd.
</ul><!-- /konec ul main -->
<ul class="sub">
<li><a href="..........." title="Submenu1">Submenu1</a></li>
<li><a href="..........." title="Submenu2">Submenu2</a></li>
<li><a href="..........." title="Submenu3">Submenu3</a></li>
</ul>
<?
break;
endswitch;

// zobrazeni navigace
switch ($GLOBALS["vzhledwebu"]->AktBlokTyp()):
case 1: Blok1($GLOBALS["vzhledwebu"]->AktBlokNazev(),$retezec); break;
case 2: Blok2($GLOBALS["vzhledwebu"]->AktBlokNazev(),$retezec); break;
case 3: Blok3($GLOBALS["vzhledwebu"]->AktBlokNazev(),$retezec); break;
case 4: Blok4($GLOBALS["vzhledwebu"]->AktBlokNazev(),$retezec); break;
case 5: Blok5($GLOBALS["vzhledwebu"]->AktBlokNazev(),$retezec); break;
default: Blok1($GLOBALS["vzhledwebu"]->AktBlokNazev(),$retezec); break;
endswitch;
}

a soubor Plugin.php:

// jmeno plug-inu
$plugin_nazev="navigace";
// pristupova prava; 1 = jen admin. modul, 2 = admin. a autorsky modul
$pi_pristup="1";
// pridat polozku do hlavniho administracniho menu; ano = 1, ne = 0
$pi_menu="0";
// nazev noveho tlacitka v admin. menu
$pi_nazev_menu="";
// identifikacni retezec modulu (max. 15 znaku)
$pi_indent_modulu="";
// relativni cesta k souboru s "rozcestnikem" k admin. sekci
$pi_inclakce_menu="";
// volaci link zakladni funce
$pi_link_menu="";
// pridat aktivacni polozku do seznamu systemovych bloku; ano = 1, ne = 0
$pi_sys_blok="1";
// nazev systemoveho bloku
$pi_nazev_blok="Systémový blok: Navigace";
// identifikacni zkratka systemoveho bloku (3 znaky)
$pi_zkratka_blok="nav";
// relativni cesta k vykonnemu soubour
$pi_inclsb_blok="plugin/navigace/navigace.php";
// nazev vyvolane systemove funkce - nutno zapisovat bez prazdnych kulatych zavorek na konci
$pi_funkce_blok="Navigace";

A teď co bych potřeboval pomoct?
1. Jedná se mi o to, že bych byl rád, kdyby se spodní submenu generovalo dle vztahu potomek-rodič z menu nad ním.
2. Aby se v menu vygenerovalo to "current" dle hlavního tématu (snad mi rozumíte).
Jinak již v této fázi je to plně funkční jen to musím dopisovat natvrdo ručně.
Kdyby jste někdo měl nápad, jak to udělat v tom pluginu, tak vám předem za něj děkuji.

LinkedIn - Zdeněk Pikulík

Regiony ČR.cz - 1. responzivní zpravodajství z regionů ČR
Medializujeme ČESKO.cz - Revoluční program podpory a modernizace obcí ČR
Obce2020.cz - Moderní řešení profesionálního webu pro obce

Re: Navigace Plugin
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2008-03-19, 15:47

vyhľadaj si TopicTree a mrkni do kódu, je tam to, čo hľadáš

Re: Navigace Plugin
Zaslán uživatelem/kou: ZdenekPNJ (IP adresa zaznamenána)
Datum: 2008-03-19, 15:49

Ok, jdu na to kuknout.
Děkuji za radu, dám vědět, jak jsem dopadnul.

Re: Navigace Plugin
Zaslán uživatelem/kou: ZdenekPNJ (IP adresa zaznamenána)
Datum: 2008-03-19, 17:05

Háže mi to tuto hlášku v tom menu:

Warning: call_user_func(Navigace) [function.call-user-func]: First argument is expected to be a valid callback in /data/www/www_nemovitosticr_cz/aktuality/trlayout.php on line 244

A ještě jedna věc po úpravě atopic.php se adminmenu zobrazí stránka bez tabulky s upravou rubrik.

Soubor navigace.php po úpravě
define("MAX_LEVEL",2);


function getTree($parent=0,$maxlevel=99,$tree="") {
$result = mysql_query(" SELECT idt,
nazev,
popis,
level
FROM ".$GLOBALS["rspredpona"]."topic
WHERE id_predka= ".$parent." and
level<".$maxlevel."
ORDER BY nazev
",$GLOBALS["dbspojeni"]);

if (mysql_num_rows($result)>0) {
if ($parent==0) {
$tree.= "<ul class=\"main\">\n";
} else {
$tree.= "<ul class=\"submenu\">\n";
}
while ($row = mysql_fetch_assoc($result)) {
$tree .= getTree(
$row['idt'],
$maxlevel,
"<li><a href=\"search.php?rsvelikost=sab&amp;rstext=all-phpRS-all&amp;rstema=".
$row['idt']."\" title=\"".
strip_tags($row['popis'])."\"><!-- SPAN".
$row['idt']." --><span>".
$row['nazev']."</span></a>\n"
);
}
$tree.= "</ul>\n";
}
return $tree;
}

function GenerateNavTree() {
$cachenav = mysql_query(" SELECT `cachenav`
FROM ".$GLOBALS['rspredpona']."cachenav
",$GLOBALS["dbspojeni"]);

if (false === $cachenav || mysql_num_rows($cachenav)!==1) {
$newcachenav = getTree(0,MAX_LEVEL);

$create = mysql_query(" CREATE TABLE IF NOT EXISTS ".$GLOBALS['rspredpona']."cachenav(
`cachenav` TEXT NOT NULL,) TYPE = MYISAM
",$GLOBALS['dbspojeni']);

$erase = mysql_query(" TRUNCATE TABLE `".$GLOBALS['rspredpona']."cachenav`
",$GLOBALS['dbspojeni']);

$write = mysql_query(" INSERT INTO `".$GLOBALS['rspredpona']."cachenav` ( `cachenav` )
VALUES ('".addslashes($newcachenav)."');
",$GLOBALS['dbspojeni']);

return("<!-- NEW -->\n".$newcachenav);
} else {
$row = mysql_fetch_assoc($cachenav);
return("<!-- cachenav -->\n".$row['cachenav']);
}
}


$obsahbloku = "\n\n<!-- TopicTree|START -->\n";
$obsahbloku .= GenerateNavTree();
$obsahbloku .= "<!-- TopicTree|END -->\n\n";

if (isset($_GET['rstema'])) {
// oznacenie aktivnej vetvy stromu
$old = '<li><a href="search.php?rsvelikost=sab&amp;rstext=all-phpRS-all&amp;rstema='.$_GET['rstema'].'"';
$new = '<li class="current"><a href="search.php?rsvelikost=sab&amp;rstext=all-phpRS-all&amp;rstema='.$_GET['rstema'].'"';
$obsahbloku = str_replace($old, $new, $obsahbloku);
// oznacenie aktivnej polozky
$old = '<!-- SPAN'.$_GET['rstema'].' --><span style=\"visible:hidden\">';
$new = '<!-- ACTIVE SPAN --><span class="activetxt">';
$obsahbloku = str_replace($old, $new, $obsahbloku);
}
switch ($GLOBALS["vzhledwebu"]->AktBlokTyp()):
case 1: Blok1($GLOBALS["vzhledwebu"]->AktBlokNazev(),$obsahbloku); break;
case 2: Blok2($GLOBALS["vzhledwebu"]->AktBlokNazev(),$obsahbloku); break;
case 3: Blok3($GLOBALS["vzhledwebu"]->AktBlokNazev(),$obsahbloku); break;
case 4: Blok4($GLOBALS["vzhledwebu"]->AktBlokNazev(),$obsahbloku); break;
case 5: Blok5($GLOBALS["vzhledwebu"]->AktBlokNazev(),$obsahbloku); break;
default: Blok1($GLOBALS["vzhledwebu"]->AktBlokNazev(),$obsahbloku); break;
endswitch;


a soubor atopic.php (část změněného kódu)

// ---[rozcestnik]------------------------------------------------------------------
switch($GLOBALS['akce']):
// temata
case "AddTopic": AdminMenu();
echo "<h2 align=\"center\">".RS_TOP_ROZ_ADD_TEMA."</h2><p align=\"center\">";
AddTopic();
@mysql_query("TRUNCATE TABLE `".$GLOBALS['rspredpona']."cache`",$GLOBALS['dbspojeni']);
break;
case "AcAddTopic": AdminMenu();
echo "<h2 align=\"center\">".RS_TOP_ROZ_ADD_TEMA."</h2><p align=\"center\">";
AcAddTopic();
@mysql_query("TRUNCATE TABLE `".$GLOBALS['rspredpona']."cache`",$GLOBALS['dbspojeni']);
break;
case "DelTopic": AdminMenu();
echo "<h2 align=\"center\">".RS_TOP_ROZ_DEL_TEMA."</h2><p align=\"center\">";
DelTopic();
@mysql_query("TRUNCATE TABLE `".$GLOBALS['rspredpona']."cache`",$GLOBALS['dbspojeni']);
break;
case "EditTopic": AdminMenu();
echo "<h2 align=\"center\">".RS_TOP_ROZ_EDIT_TEMA."</h2><p align=\"center\">";
EditTopic();
@mysql_query("TRUNCATE TABLE `".$GLOBALS['rspredpona']."cache`",$GLOBALS['dbspojeni']);
break;
case "AcEditTopic": AdminMenu();
echo "<h2 align=\"center\">".RS_TOP_ROZ_EDIT_TEMA."</h2><p align=\"center\">";
AcEditTopic();
@mysql_query("TRUNCATE TABLE `".$GLOBALS['rspredpona']."cache`",$GLOBALS['dbspojeni']);
break;
endswitch;
echo "</p>\n"; // zakonceni P tagu

LinkedIn - Zdeněk Pikulík

Regiony ČR.cz - 1. responzivní zpravodajství z regionů ČR
Medializujeme ČESKO.cz - Revoluční program podpory a modernizace obcí ČR
Obce2020.cz - Moderní řešení profesionálního webu pro obce

Re: Navigace Plugin
Zaslán uživatelem/kou: ZdenekPNJ (IP adresa zaznamenána)
Datum: 2008-03-19, 17:23

Tak problém 1. vyřešen: Chyba byla v souboru plugin.php - špatně zadaný název funkce getTree()
Ale ještě je tu zde problém v té administraci kde se nezobrazí panel pro rubriky.
Ještě musím vyřešit, jak udělat, aby se zobrazovalo jen to submenu k vybranému menu.

Re: Navigace Plugin
Zaslán uživatelem/kou: Atifan (IP adresa zaznamenána)
Datum: 2008-04-14, 22:44

Tento plug je uz davno hotov, co vim.......
Ukazuje to nad hlavnim clankem kde prave jsi. Rubrika/treba podrubrika/co ctes........
K videni u me, stazeni: [http://atifan.ati.cz/phprs/280_navcesta.zip]

Tak jsem skončil s phpRs, weby co mi jedou nechám dožít odešel jsem na WP: [http://tomoviny.cz] asi už jsem vyřešil spoustu věcí co mi ve WP vůči phpRs chybělo. Jinak smutek bylo to fajn....... když budu moci rád s phpRs ještě poradím, něco v hlavě zůstalo.



Celkem upraveno 1×. Poslední úprava Atifan v 14.04.2008 22:50.

Re: Navigace Plugin
Zaslán uživatelem/kou: Atifan (IP adresa zaznamenána)
Datum: 2008-04-14, 22:51

ee tak nic, ted to ctu, asi jsem to blbe pochopil.........

Tak jsem skončil s phpRs, weby co mi jedou nechám dožít odešel jsem na WP: [http://tomoviny.cz] asi už jsem vyřešil spoustu věcí co mi ve WP vůči phpRs chybělo. Jinak smutek bylo to fajn....... když budu moci rád s phpRs ještě poradím, něco v hlavě zůstalo.



Lituji, ale pouze registrovaní uživatelé mohou zasílat příspěvky do této sekce.
This forum powered by Phorum and designed by STaNBoSS.