phpRS 2.6.5 : phpRS Fórum
Toto fórum je určené výhradně k diskuzi o verzi phpRS v2.6.5.
phpRS - redakční a informační systém
Úprava: Tématické ikonky ke článkům
Zaslán uživatelem/kou: Curo (IP adresa zaznamenána)
Datum: 2006-04-04, 05:48

Tato úprava se vám možná bude zdát zbytečná, nicméně ji sem vložím :)

Jedná se o zobrazení tématických ikonek u článků(ty co jsou defaultne u rubrik mam vyple) a to tak, že se automaticky generuji podle hlavni rubriky. Nastavite pro hlavni rubriku obrazek a vsechny clanky v dane rubrice, podrubrice apod budou mit stejny tematicky obrazek. Kdykoliv lze rozsirit (rozdrobnit) na napr. rubriky (ci jen nektere rubriky)..

Vysledek je videt zde: [http://programujte.com/]

Ještě bych chtěl poděkovat Pa3kovi, díky němuž jsem tomohl uskutečnit, takže díky za pomoc :)

Nejprve upravíme trclanek.php - a to tak, ze pouzijeme upraveny kod k ceste temat(viz [http://www.phprs.net/forum/read.php?28,13848,13848#msg-13848])
Pokudmate na svem webu cestu temat vlozenou (tedy jste provedli tu upravu), nevadi, nebije se to,nic nemusite menit. Staci postupovat jak je zde psano.

Dám sem ale celý upravený kód.
Vložíme za
if (!defined('IN_CODE')): die('Nepovoleny pristup! / Hacking attempt!'); endif;

:

$pamCestyTemat=array(); //Globální pole s kategoriema.
function cestaTematid($IDTema=0)
{if ($IDTema==0) //Parametr musí být definován.
return "";
//Je v poli daná kategorie?
if (!isset($GLOBALS["pamCestyTemat"][$IDTema]))
{//Pokud není, tak ji natáhni z databáze.
$dotaz=mysql_query("select nazev,id_predka from ".
$GLOBALS["rspredpona"]."topic where idt=".
$IDTema,$GLOBALS["dbspojeni"]);
$data=mysql_fetch_row($dotaz);
//Do položky pole ulož pole s názvem položky a id předka.
$GLOBALS["pamCestyTemat"][$IDTema]=array($data[0],$data[1]);
//Název kategorie zabal odkazem a ulož;
$vys=$data[0];
$IDTema=$data[1]; //Načti Id kategorie;
}
else //Data jsou uložena v poli, tak je použij odtud.
{$vys=$GLOBALS["pamCestyTemat"][$IDTema][0];
$IDTema=$GLOBALS["pamCestyTemat"][$IDTema][1];
}
//To vše opakuj dokuď nedosáhleš hlavní kategorie.
while ($IDTema>0)
{if (!isset($GLOBALS["pamCestyTemat"][$IDTema]))
{$dotaz=mysql_query("select nazev,id_predka from ".
$GLOBALS["rspredpona"]."topic where idt=".
$IDTema,$GLOBALS["dbspojeni"]);
$data=mysql_fetch_row($dotaz);
$GLOBALS["pamCestyTemat"][$IDTema]=array($data[0],$data[1]);
$vys=$data[0]; 
$IDTema=$data[1];
}
else
{$vys=$GLOBALS["pamCestyTemat"][$IDTema][0]."".$vys;
$IDTema=$GLOBALS["pamCestyTemat"][$IDTema][1];
}
}
return $vys; //Vrať se s výslednám řetězcem.
}


a na konci souboru jsou následující řádky:

case "skupina": return $this->clanek["skupina_cl"]; break;
    case "znacky": return $this->clanek["znacky"]; break;
    case "typ_clanku": return $this->clanek["typ_clanku"]; break; // 1 - standardni, 2 - kratky
    case "sablona": return $this->ZjistiSab($this->clanek["sablona"]); break;


za ne vlozime teno radek:

case "cesta_temat_id": return cestaTematid($this->clanek["tema"]);  break;


Tim je uprava souboru hotova.

Nyni editujeme soubor, kde mame definice jak vypada kratky clanek, dloiuhy clanek.. (napr. cla_extra.php.. dle použitého stylu..):

Za tento radek:
// ----------------------------------- [dl. clanek nahled] -----------------------------------


vlozime tento radek:

$vysliduvod=$GLOBALS["clanek"]->Ukaz("cesta_temat_id");


A tam, kam chceme vlozit obrazek (vetsinou nekde pred vlozenim uvodu(perexu), tedy nekam pred
".$GLOBALS["clanek"]->Ukaz("uvod")."

vlozime priblizne (ukazkove) nasledujici kod:

if($vysliduvod[0]=='S'):
echo "<img src=\"cesta_k_obrazku.jpg\" align=\"left\" border=\"0\">";
else:
if($vysliduvod[0]=='A'):
echo "<img src=\"cesta_k_obrazku.jpg\" align=\"left\" border=\"0\">";
else:
if(($vysliduvod[0]=='P') and ($vysliduvod[12]=='C')):
echo "<img src=\"cesta_k_obrazku.jpg\" align=\"left\" border=\"0\">";
else:
...
endif;...


vysvětlení:
Vložíme tolik podmínek (if), kolik chceme mítrozdílných obrázků. Výše uvedená změna v souboru trclanek.php nám generuje toto:

Pokud máme rubriku napriklad: Programovani -> (podrubrika)C++

Generuje se ProgramovaniC++
(coz je tedy ulozeno v promenne $vysliduvod)

My pak jen porovnáváme počáteční písmena (P jako Programovani, ty dalsi jsou pro dalsi rubriky) a v pripade, ze chceme i tematicky obrazek pro podrubriku, vlozime

if(($vysliduvod[0]=='P') and ($vysliduvod[12]=='C')):


coz nam porovnana Zda-li je prvni pismeno P a zaroven 13te pismeno C, tak generuje pro tuto podrubriku obrazek. Pokud chceme jen pro hlavní rubriky, kod mame vyse (nedavame and..) (nezapominat, ze se cisluje od nuly, proto 13te pismeno = 12ty kontrolovany znak)

Nezapominejte na ukonceni podminek (endif;..).

Na webu mam clanky zobrazeny v tabulce (planuji ale prechod na css, jakmile bude vice casu) a tato tabulka ma 2 sloupce, levy obsahuje ten tematicky obr, pravy perex(uvod k clanku).

Nevím, zda to bude vůbec někomu užitečné.. :)
Určitě by to šlo optimalizovat,nebo jen upravit již existující obrázky k rubrikám(kod).. Ja jsem je kdysi v ramci grafickych uprav zrusil, protoze zacalo byt podrubrik opravdu hodne a nyni jsm presel na toto reseni-pro me optimalni :)

Shrnuti: co to dela?
Generuje pro hlavni rubriku a vsechny jeji podrubriky stejny tematicky obrazek, pripadne muze generovat pro vybrane podrubriky(nebo i vsechny) vlastni obrazek.

Díky tomuto lze také vypsat Jméno hlavní rubriky(u článku), kde je článek umístněn.
Opět stačí podmínka něco jako
if($vysliduvod[0]=='A'):
echo "Aktuality";
endif;





Celkem upraveno 3×. Poslední úprava Curo v 04.04.2006 05:54.



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.