Dzisiaj omówię niewielką modyfikację dodającą nowe funkcje do naszego CMSa. Dzięki modyfikacjom będziemy w stanie dodawać indywidualne słowa kluczowe dla każdej kategorii oraz podkategorii. Są one widoczne w nagłówku strony w meta keywords. Domyślnie meta tagi w kategoriach są ustawione takie, jakie ustawiliśmy domyślne meta tagi w ustawieniach sNews. Autorem tego niewielkiego, ale jakże przydatnego moda jest Matt Jones.
Dobrze, w takim razie jedziemy z tematem. Najpierw należy dodać do bazy danych jedną linijkę (zobacz jak dodawać do bazy danych):
ALTER TABLE categories ADD keywords_m VARCHAR(255) AFTER description;
Następnie będziemy pracować na pliku "snews.php" dlatego dobrze byłoby zrobić jego kopię. Przechodzimy do rzeczy. Szukamy w sekcji "STARTUP" poniższego kodu i dodajemy zaznaczony fragment:
$R = mysql_fetch_assoc($Try_Article);
// query for / category / article /
if(empty($R)) {
$MainQuery = 'SELECT
c.id AS catID, c.name AS name, c.description, c.subcat,
x.name AS xname,c.keywords_m as keywords_m
FROM '._PRE.'categories'.' AS x
Następnie nieco niżej dodajemy podświetlony fragment:
// query for category
$R = mysql_fetch_assoc($Try_Page);
if (!$R) {
$MainQuery ='SELECT
id AS catID, name, description, keywords_m
FROM '._PRE.'categories'.' AS c
Kolejnym krokiem będzie dodanie zaznaczonej linijki nieco niżej:
if(!empty($R['keywords_meta'])) $_KEYW = $R['keywords_meta']; elseif(!empty($R['keywords_m'])) $_KEYW = $R['keywords_m'];
Teraz przejdziemy do funkcji "form_categories". Zmieniamy w nim na początek tak jak pokazano poniżej:
$frm_description = $r['description']; $frm_keywords = $r['keywords_m']; $frm_publish = $r['published'] == 'YES' ? 'ok' : '';
Następnie niżej dodajemy zaznaczoną linijkę:
echo html_input('text', 'description', 'desc', $frm_description, l('description'), '', '', '', '', '', '', '', '', '', '');
echo html_input('text', 'keywords_m', 'keywords_m', $frm_keywords, l('a_keywords'), '', '', '', '', '', '', '', '', '', '');
if (empty($sub_cat)) {
Przechodzimy do funkcji "processing". Szukamy poniższego fragmentu i dodajemy zaznaczoną linijkę kodu:
$keywords_meta = entity($_POST['keywords_meta']); $keywords_m = entity($_POST['keywords_m']); $display_title = $_POST['display_title'] == 'on' ? 'YES' : 'NO';
Na koniec dodajemy zaznaczone fragmenty w poniższym kodzie:
case(isset($_POST['add_category'])):
$catorder = mysql_fetch_array(mysql_query(
"SELECT MAX(catorder) as max
FROM "._PRE.'categories'." WHERE subcat = $subcat"));
$catorder = $catorder['max'] + 1;
mysql_query("INSERT INTO "._PRE.'categories'."
(name, seftitle, description, keywords_m, published, catorder, subcat)
VALUES('$name', '$seftitle', '$description', '$keywords_m', '$publish_category', '$catorder','$subcat')");
break;
case(isset($_POST['edit_category'])):
$catorder = mysql_fetch_array(mysql_query(
"SELECT MAX(catorder) as max
FROM "._PRE.'categories'." WHERE subcat = $subcat"));
$catorder = isset($_POST['catorder']) ? $_POST['catorder'] : $catorder['max'] + 1;
mysql_query("UPDATE "._PRE.'categories'." SET
name = '$name', seftitle = '$seftitle', description = '$description', keywords_m = '$keywords_m',
published = '$publish_category', subcat='$subcat', catorder='$catorder'
WHERE id = $id LIMIT 1");
To wszystko. Po tych modyfikacjach podczas edycji i tworzenia kategorii bądź subkategorii powinno być dostępne nowe pole formularza, w którym definiujemy słowa kluczowe dla danych kategorii.
chba powinno być "meta" tagach ale cóż mogę się mylić.
Racja, literówka. Poprawione.