Będąc na stronie artykułu standardowo nie ma nigdzie napisane w jakiej kategorii znajduje się wpis. Niby nic takiego, ale czasem chcemy, aby była adnotacja odnośnie kategorii danego wpisu. Dziś pokażę jak dodać taką informację. Bazuje ona na modzie dotyczącym przystępniejszego wyświetlania się infoline.
Modyfikację tą zaproponował Matt Jones. W ulepszonej wersji wyświetlania się infoline należy znaleźć ten fragment:
if ($infoline == true) {
echo '<div class="post_date">'.$a_date_format.'</div>';
Jeśli chcemy, aby wyświetlała się tylko informacja o kategorii wpisu zmieniamy powyższy kod następująco:
if ($infoline == true) {
echo '<div class="post_date">'.$r['name'].' - '.$a_date_format.'</div>';
Jeśli chcemy, aby nazwa kategorii była również linkiem do danej kategorii, to zmieniamy kod w ten sposób:
if ($infoline == true) {
echo '<div class="post_date">'.$link.$uri.'/">'.$r['name'].'</a> - '.$a_date_format.'</div>';
Musimy jeszcze zmodyfikować nieco pobieranie z bazy danych, aby wyświetlała się nazwa danej kategorii. Aby tego dokonać szukamy w górnej części funkcji "articles" następującego fragmentu:
// article or page, id as indentifier $query_articles = 'SELECT a.id AS aid,title,a.seftitle AS asef,text,a.date, a.displaytitle,a.displayinfo,a.commentable,a.visible FROM '._PRE.'articles'.' AS a WHERE id ='.$_ID.$visible;
i zamieniamy na:
// article or page, id as indentifier
$query_articles = 'SELECT
a.id AS aid,title,a.seftitle AS asef,a.category AS acat,a.keywords_meta AS keywords,text,a.date, a.displaytitle,a.displayinfo,a.commentable,a.visible, c.name AS name
FROM '._PRE.'articles'.' AS a
LEFT OUTER JOIN '._PRE.'categories'.' as c
ON category = c.id
WHERE a.id ='.$_ID.$visible;
Następnie nieco niżej szukamy:
// get the rows for category
if ($_catID) {
$query_articles = 'SELECT
a.id AS aid,title,a.seftitle AS asef,text,a.date,
a.displaytitle,a.displayinfo,a.commentable,a.visible
FROM '._PRE.'articles'.' AS a
WHERE position = 1
i zamieniamy na:
// get the rows for category
if ($_catID) {
$query_articles = 'SELECT
a.id AS aid,title,a.seftitle AS asef,text,a.date,a.keywords_meta AS keywords,
a.displaytitle,a.displayinfo,a.commentable,a.visible,c.name AS name
FROM '._PRE.'articles'.' AS a
LEFT OUTER JOIN '._PRE.'categories'.' as c
ON category = c.id
WHERE position = 1
Całość wysyłamy na serwer. Po tych zabiegach powinny wyświetlać się kategorie we wpisach.
To zapytanie jest chyba niepotrzebne, bo nie ma w nim kategorii, chyba zostało z innego dodatku
a.keywords_meta AS keywords
A być może :) Ja tam się generalnie nie znam :)