Skocz do zawartości

[Modyfikacje] Dodatkowe kategorie


Rekomendowane odpowiedzi

Kolejna bardzo interesująca modyfikacja która na pewno wielu z Was zainteresuje - listy rozwijane z dodatkowymi podkategoriami do wyboru już w formularzu podczas dodawania wpisu - oszczędność czasu dla dodającego i dodatkowy site dla przyjmującego. Screen:

screenhunter003wq6.th.jpg

Modyfikacja jest dość skomplikowana pod względem działania - stąd kilka dni musiałem poświęcić na testy by zapewnić idioto odporność. Jeśli zauważycie jakiekolwiek błędy w działaniu - np. złe podliczenie ilości wpisów, relacji, problemy z przypinaniem/odpinaniem podkategorii w panelu adm. - pisać!

Instalacja:

1. Dodajemy nową funkcję javascript czy to do osobnego pliku czy też bezpośrednio do <head></head>:

// Copyright (c) 2008, General_Depet - https://www.katalog.intelekt.net.pl

function podmiana(co,j,ile) {

for(var i=1; i<=ile; i++) {
var ktora = +i;

if(ktora == co) {
var pod = +j+"_"+ktora;
var istnieje = document.getElementById(pod);
if (istnieje != null) document.getElementById(pod).style.display = "";
}
else if(ktora != co) {
var pod = +j+"_"+ktora;
var istnieje = document.getElementById(pod);
if (istnieje != null) document.getElementById(pod).style.display = "none";
}
}
}

jeśli dajemy do osobnego pliku .js to oczywiście includujemy go w <head></head> w pliku otwarty_disp/funkcje.php.

2. W pliku otwarty_disp/funkcje.php znajdujemy linię:

function addok_link_form($name,$cat_id,$sub_id,$title,$desc,$keyw,$err) {
global $cfg;

zmieniamy na:

function addok_link_form($name,$cat_id,$sub_id,$title,$desc,$keyw,$err) {
global $cfg, $prefix, $stop1;

dalej znajdujemy:

if ($cfg[u3]!=3) {
if ($cfg[u3]==1) {
$new2 = "dodaj stronę";
} else if ($cfg[u3]==2) {
$new2 = "zasugeruj stronę";
}

dodajemy po tym:

if ($stop1!="") echo "<br /><div style=\"color:red;\">".$stop1."</div>";

znajdujemy:

<b>adres mail:</b><br /><input type="text" name="email" class="formdodaj" value="<?=$_POST[email]?>" size="40" /><br /><br />
<? } ?>

dodajemy po tym:

<?

$kategoria_glowna = mysql_fetch_assoc(mysql_query("select nazwa from ".$prefix."kategorie where id = '$cat_id'"));
$podkategoria_glowna = mysql_fetch_assoc(mysql_query("select nazwa from ".$prefix."podkategorie where id = '$sub_id'"));

echo "Kategoria główna: <b>$kategoria_glowna[nazwa]</b> » <b>$podkategoria_glowna[nazwa]</b><br /><br />";

$kategorie_licz = mysql_fetch_assoc(mysql_query("select id from ".$prefix."kategorie order by id desc"));

for ($j=2; $j<$cfg[u4]+1; $j++) {

$kategorie_sql = mysql_query("select id, nazwa from ".$prefix."kategorie order by nazwa");
$i=1;

$kategorie_template = "
Kategoria dodatkowa $j: <SELECT NAME=\"cat_id_dod[$j]\" onChange=\"podmiana(this.value,'$j','$kategorie_licz[id]');\">
<OPTION VALUE=\"\">wybierz kategorie</OPTION>";

while($kategorie=mysql_fetch_assoc($kategorie_sql)) {

$kategorie_template .= "
<OPTION VALUE=\"$kategorie[id]\">$kategorie[nazwa]</OPTION>"; 

$kat[$i] = $kategorie[id];
$i++;
}

$kategorie_template .= "
</SELECT> ";

$licz = count($kat);

for($i=1; $i<=$licz; $i++) {

$podkategorie_sql = mysql_query("select id, id_kat, nazwa from ".$prefix."podkategorie where id_kat = '$kat[$i]' && id != '$sub_id' order by nazwa");

$kategorie_template .= "
<span style=\"display:none\" id=\"".$j."_".$kat[$i]."\">» <SELECT NAME=\"sub_id_dod[".$j."][".$kat[$i]."]\">
<OPTION VALUE=\"\">wybierz podkategorie:</OPTION>";

while($podkategorie=mysql_fetch_assoc($podkategorie_sql)) {

$kategorie_template .= "
<OPTION VALUE=\"$podkategorie[id]\">$podkategorie[nazwa]</OPTION>"; 

}

$kategorie_template .= "
</SELECT></span>";
}

echo $kategorie_template."<br /><br />";

}

?>

3. W pliku otwarty_disp/op.php znajdujemy natomiast:

		// echo "addok_link $cfg[u3] $_POST[cat_id] $_POST[sub_id] $_POST[url] $url, $uri ";
if ($cfg[m1]==1) {

dodajemy przed:

		 for ($i=2; $i<$cfg[u4]+1; $i++) {
	 $k = $_POST["cat_id_dod"][$i];

	 if ($_POST["cat_id_dod"][$i]!="" && $_POST["sub_id_dod"][$i][$k]!="") {

							mysql_query(" insert into ".$prefix."relacje set id_kat='".$_POST["cat_id_dod"][$i]."', id_pod='".$_POST["sub_id_dod"][$i][$k]."', id_wpi='$id_wpisu' ");
							mysql_query(" update ".$prefix."kategorie set $akt2=$akt2+1 where id='".$_POST["cat_id_dod"][$i]."' ");
							mysql_query(" update ".$prefix."podkategorie set $akt2=$akt2+1 where id='".$_POST["sub_id_dod"][$i][$k]."' ");
							mysql_query(" update ".$prefix."ilosci set ilosc=ilosc+1 where nazwa='rel'");
							mysql_query(" update ".$prefix."wpisy set relacji=relacji+1 where id='$id_wpisu' ");

	 }
	 }

dalej znajdujemy:

else {
if ( ($_POST[tytul]=="" || $_POST[opis]=="" || $_POST[slowa]=="")) { $stop1 = "wszystkie pola formularza musza zostać wypełnione"; }
}

dodajemy po:

   for ($i=2; $i<$cfg[u4]+1; $i++) {

  if ($_POST[cat_id_dod][$i]!="" && $_POST[sub_id_dod][$i]!="") {

  for ($j=$i+1; $j<$cfg[u4]+1; $j++) {

  if ($_POST[sub_id_dod][$i]==$_POST[sub_id_dod][$j]) $stop1 = "Nie możesz dodać strony 2 razy do tej samej podkategorii.";

  }
  }
  }

To wszystko - ale proszę zrobić lepiej backupa i obserwować przez parę dni czy wszystko jest dobrze podliczane.

=============================

W ramach testów zapraszam do dodawania wpisów do mojego Katalogu Stron Intelekt

Co do wykorzystania powyższego skryptu standardowa zasada: bardzo proszę o umieszczenie linka zwrotnego:

<a href="https://www.katalog.intelekt.net.pl" target="_blank" alt="Katalog Stron Intelekt - Tylko Inteligentne Strony w Internecie" title="Katalog Stron Intelekt - Tylko Inteligentne Strony w Internecie"><strong>Katalog Stron Intelekt</strong></a>

iDir - skrypt na katalog stron lub firm - następca projektu SEOKatalog, dostosowany do dzisiejszych standardów, w pełni responsywny, na nowoczesnym frameworku.

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności