Witam,

Mam następujący problem i co za tym idzie pytanie.

Mam program do obsługi galerii (simpleviewer), który wykorzystuje Flasha, JS i XML. Wszystko było z nim w porządku do puki nie zacząłem dodawać do niego PHP. Mianowicie zapragnąłem aby jeden program obsługiwał wiele galerii. W katalogu głównym strony mam plik gallery.xml którego treść po mojej modyfikacji wygląda następująco:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <simpleviewergallery
  4.  
  5. useFlickr="false"
  6. resizeOnImport="true"
  7. cropToFit="false"
  8. thumbPosition="RIGHT"
  9. galleryStyle="COMPACT"
  10. thumbColumns="2"
  11. thumbRows="4"
  12. backgroundColor="000000"
  13. backgroundTransparent="true"
  14. title="Sławinek"
  15. showOpenButton="false"
  16. showFullscreenButton="true"
  17. useFlash="true"
  18. frameColor="000000"
  19. galleryWidth="840"
  20. galleryHeight="450"
  21. textColor="FFFFFF"
  22.  
  23. >
  24. <script language="php">
  25.  
  26. $nr = 1;
  27. $id = $_GET['id'];
  28.  
  29. while(file_exists('galerie/'. $id .'/images/'. $nr .'.jpg')){
  30. print('<image imageURL="galerie/'. $id .'/images/'. $nr .'.jpg"
  31. thumbURL="galerie/'. $id .'/thumbs/'. $nr .'.jpg"
  32. linkURL="galerie/'. $id .'/images/'. $nr .'.jpg"
  33. linkTarget="_blank">
  34. <caption><![CDATA[]]></caption>
  35. </image>');
  36. $nr = $nr+1;
  37. }
  38.  
  39. </script>
  40.  
  41. </simpleviewergallery>


Skrypt php zawarty w tym pliku generuje jak widać kolejne wpisy o zdjęciach znajdujących się w podkatalogach. I wszystko jest ok do puki nie dodałem zmiennej $id która ma byś przekazywana w adresie strony. Jeśli wczytuje sam plik gallery.xml ze zmienna $id, czyli np gallery.xml?id=galeria1 wszystko gra, wczytuje się. Problem zaczyna się gdy wstawiam całą galerię na stronę do pliku index.php. Wczytując index.php?id=galeria1 zmienna nie jest przekazywana do pliku xml. Galerię na dp pliku index.php wczytuje poprzez skrypt:

  1. <!--START SIMPLEVIEWER EMBED -->
  2. <script type="text/javascript" src="svcore/js/simpleviewer.js"></script>
  3. <script type="text/javascript">
  4. jQuery(document).ready(function () {
  5. SV.simpleviewer.load('sv-container', '800', '450', '000000', true );
  6. });
  7. </script>
  8. <div id="sv-container"></div>
  9. <!--END SIMPLEVIEWER EMBED -->


czyli jak widać sama galeria ładuje pierw plik svcore/js/simpleviewer.js a dopiero potem ładuje z tego plik swf który wykorzystuje plik gallery.xml. Trochę to zagmatwane, ale nie ja pisałem ta galerię, chcę ja tylko zmodyfikować.
Wnioskuje więc że aby przekazać zmienna $id do pliku gallery.xml musiałbym załadować ją do wyświetlanego pliku swf, jednak nie widzę takiej możliwości gdyż nie posiadam źródła tego pliku. Czy da się tą zmienna załadować do gallery.xml w jakiś inny sposób, np. bezpośrednio z pliku index.php? Może da się to zrobić za pomocą DOM, SimpleXML albo WDDX, tak aby nie zapisywać nic do pliku xml?
Nigdy wcześniej nie bawiłem się w ten sposób xmlem więc sorry jeśli to pytanie wyda się głupie tongue.gif

Rozwiązałem ten problem łopatologicznie, chociaż myślałem, że ktoś podpowie mi jak napisać ten programik tak abym właśnie tak nie musiał robić. No ale może ktoś jeszcze coś wymyśli smile.gif
Więc, kwestią wyjaśnienia, jakby ktoś miał w przyszłości podobny problem to ja postąpiłem tak:
Strukturę plików i katalogów zostawiłem praktycznie bez zmian. Każda galeria ma swój własny katalog i swój własny plik gallery.xml taki jak podałem wyżej. W każdym katalogu zamieściłem plik index.php który wywołuje pełną stronę razem z załadowaną galerią. Aby uniknąć zmian na każdym indexie dałem w nich includy bezpośrednie do głównego katalogu ze stroną, to samo tyczy się grafiki. Tak więc jeśli coś zmieniam na stronie głównej to zmiany będą widoczne i w tych galeriach. Minus, jest trochę więcej plików, plus taki, że nie muszę się użerać z każdym plikiem osobno.
Szczerze przyznam, że mnie to rozwiązanie nie satysfakcjonuje za bardzo, ale niestety nic innego bardziej praktycznego nie udało mi się wymyślić. Jedynie opcja którą napisałem wyżej byłaby najlepszym rozwiązaniem.
Tak więc temat pozostawiam otwarty, może ktoś jeszcze się wypowie i zdoła mnie czegoś nauczyć w tej kwestii smile.gif