Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zarządzanie nazwami menu
Forum PHP.pl > Forum > Przedszkole
tomsi
Mam w katalogu Menu pliki np aktualnosci.php, wiadomosci.php, galeria.php. Pobieram te wszystkie pliki do zmiennej i wyświetlam w menu. W każdym z tych plików wprowadzam odpowiednie dane i ok. Problem polega tylko na tym, że w menu wyświetlają mi się te nazwy plików, a ja chciałbym żeby zamiast aktualnosci.php był napis Aktualności itd. Wiem, że można by to zrobić w tablicy, ale czy jest jakiś sposób żeby np. w katalogu Menu był jakiś plik .txt w którym byłyby nazwy plików i po jakimś separatorze ich nazwy, które były by widoczne na stronie. Dodawał bym tylko nowy plik do folderu o jakiejś nowej nazwie i po | podam nazwę, która byłaby widoczna w menu np.

aktualnosci.php|Aktualności
wiadomosci.php|Wiadomości
galeria.php|Galeria

No bo rozumiem, że automatyczna taka zamiana to byłaby ciężka do zrobionia bądź nawet niemożliwa.
Pride
Lepiej gdybyś pokazał coś tego kodu tongue.gif

Ogólnie do takiej rzeczy można by użyć: explode" title="Zobacz w manualu PHP" target="_manual
-gość-
chyba szybciej by było coś w tym stylu
  1. <?php
  2. $name = 'aktualnosci.php';
  3.  
  4. $newName = ucfirst(substr($name, 0, strpos($name, '.')));
  5. echo $newName;
  6. ?>
tomsi
No tak fajnie tylko, że w wyniku tego skryptu dostane wynik w postaci:

Aktualnosci

bez polskich znaków.
l0ud
Masz taki kod:
  1. <?php
  2.  
  3. class menuPosNameFinder {
  4.  
  5. private $data = array();
  6.  
  7. public function __construct($file) {
  8. $fileData = file($file);
  9. for ($i=0,$b=count($fileData);$i<$b;$i++) {
  10. list($key,$value) = explode('|',trim($fileData[$i]));
  11. $this->data[$key] = $value;
  12. }
  13. }
  14.  
  15. public function getPosName($fileName) {
  16. if (isset($this->data[$fileName]))
  17. return $this->data[$fileName];
  18. else return false;
  19. }
  20.  
  21. }
  22.  
  23. //tworzymy obiekt tej klasy, przekazując mu nazwę pliku z pozycjami
  24. $finder = new menuPosNameFinder('pozycje.txt');
  25.  
  26. //pierwsza i druga pozycja
  27. echo $finder->getPosName('index.php');
  28. echo '<br>';
  29. echo $finder->getPosName('asd.php');
  30. echo '<br>';
  31.  
  32. //trzecia pozycja: dodatkowo sprawdzamy, czy istnieje
  33. if (($pos = $finder->getPosName('inna.php')) !== false) echo $pos;
  34. else echo 'Brak pozycji';
  35.  
  36. ?>


Na dole masz 3 przykłady, jak pobierać dane z tej klasy. smile.gif Plik pozycje.txt wygląda tak:
Kod
index.php|Indeks
asd.php|Inna strona
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.