PDA

Zobacz pełną wersję : Kontakty - w dodatkowych informacjach - prosta galeria



rudy
20-05-2013, 00:41
Chciałbym w standardowym komponencie Kontakty w szczegółach Kontaktu wyświetlać kilka zdjęć jako prosta galeria lub popup.
Użycie rozwiązania {loadposition} nie działa.
Czy ktoś ma jakieś rozwiązanie?

pawelSafiStudio
20-05-2013, 19:18
Pytanie czy jesteś w stanie zmodyfikować trochę kod Joomla! ? Możesz "zmusić" intro kontaktu do korzystania z pluginów. Wówczas Simple Image Gallery byłoby dobrym rozwiązaniem.

rudy
20-05-2013, 22:30
Jeżeli podasz mi co trzeba zmodyfikowac to spróbuję.
Robie to na 3.1.1.

pawelSafiStudio
21-05-2013, 22:03
Musisz wymusić załadowanie pluginów do opisu kontaktu. Trochę na siłę ale zadziała :) Wejdź sobie do pliku /components/com_contact/models/contact.php następnie od linijki ok 214 dodajesz sobie taki kod:


$this->_item[$pk] = $data; // to jest już w Joomla!, dodajesz natomiast to co poniżej
// import content plugins
$dispatcher = JEventDispatcher::getInstance();
JPluginHelper::importPlugin('content');
$item = new stdClass();
$item->title = '';
$item->text = $this->_item[$pk]->misc;
$params = new stdClass();
$results = $dispatcher->trigger('onContentPrepare', array ('com_content.article', &$item, &$params, 0));
$this->_item[$pk]->misc = $item->text;
// end
Jak dodasz ten kod {loadposition} powinno już zadziałać :)

KES
21-05-2013, 22:31
ten kod co @pawelSafiStudio możesz też wywołać w nadpisywaniu szablonu kontaktu w swoim szablonie:
templates/twoj_szablon/com_contact/contact/default.php
i zamieniasz tylko nazwy z:


$this->_item[$pk]

na:


$this->contact

o tyle jest to lepsze rozwiązanie że przy aktualizacji joomla Ci tego nie nadpiszę.

rudy
23-05-2013, 00:37
pawelSafiStudio (http://forum.joomla.pl/member.php?30903-pawelSafiStudio) : Dziękuję bardzo - ten sposób działa!

Bati: nie za bardzo rozumiem. w szablonie nie mam com_contact.
Czy mam go skopiować do templates/moj_szblon?
Nie mam też contact/default.php w com_contact.

KES
23-05-2013, 10:43
Tak nadpisywanie na tym polega
Skopiuj z:
components/com_contact/contact/default.php

Doi:
templates/moj_szablon/html/com_contact/contact/default.php

Kopiujesz plik default.php i tworzysz foldery w swoim szablonie.

pawelSafiStudio
23-05-2013, 13:43
@Bati sprawdź proszę ścieżkę pliku zanim ją podasz. Chyba gdzieś Ci umknął folder z widokami.
components\com_contact\views\contact\tmpl\default. php

KES
23-05-2013, 15:35
@pawelSafiStudi masz rację przepraszam, musiałem dostać zaćmienia że nie napisałem o katalogu views i tmpl :)

rudy
30-05-2013, 17:27
Dziękuję, działa.
A czy możliwe aby działały pluginy np. Simple Image Gallery?
Bo ten mi nie chce działać.

KES
31-05-2013, 09:09
@rudy jest tak możliwość, tylko musisz sprawdzić jaki Simple Image Gallery używa zdarzenia i jakie opcje są mu potrzebne aby zadziałał oraz czy jego typ to "system" czy "content" :)
A później wszystko w taki sam sposób jak podał Ci @pawelSafiStudio.

rudy
03-06-2013, 10:53
Sam dodatek w artykułach działa.
Typ jest Content
Błąd pojawia się następujący jeżeli w szczegółach Kontaktu wstawię kod do galerii:

Fatal error: Call to undefined method stdClass::get() in /home/omk/ftp/ZPAP/plugins/content/jw_sig/jw_sig.php on line 125

Jak sprawdzić zdarzenia, których używa dodatek i co moge z nimi zrobić?

KES
03-06-2013, 11:03
Błąd mówi że klasa stdClass nie ma metody get to prawa. Użyć klasy JObject do przesłania parametrów do pluginu. I wszystko tak jak poprzednio.

rudy
03-06-2013, 12:05
A czy da się to opisać prosto, dla kogos kto nie ma wiedzy o tych metodach, klasach itd.?

KES
03-06-2013, 14:48
Ciężko coś pisać jak się nie widzi kodu.
zmień:

$item = new stdClass();
na:

$item = new JObject();

pawelSafiStudio
03-06-2013, 17:41
@Bati dobrze napisałeś, tylko co by nie mylić @rudy trochę skoryguję :) @Bati miał na myśli zamianę typu zmiennej $params zamiast $item.

KES
03-06-2013, 18:11
@pawelSafiStudio zawsze dobrze poprawi, w sumie nic się nie stanie jeżeli użyjesz tej klasy w $params i $items. JObject to świetna klasa, warto się z niej nauczyć korzystać.

rudy
04-06-2013, 15:02
czy taki sam kod mam dopisać dla j 2.5.11?

KES
04-06-2013, 16:16
A my tutaj cały czas nie rozmawiamy o Joomla! 2.5.x ?
Ten kod też zadziała na Joomla! 3.x

rudy
04-06-2013, 18:47
Musisz wymusić załadowanie pluginów do opisu kontaktu. Trochę na siłę ale zadziała :) Wejdź sobie do pliku /components/com_contact/models/contact.php następnie od linijki ok 214 dodajesz sobie taki kod:


$this->_item[$pk] = $data; // to jest już w Joomla!, dodajesz natomiast to co poniżej
// import content plugins
$dispatcher = JEventDispatcher::getInstance();
JPluginHelper::importPlugin('content');
$item = new stdClass();
$item->title = '';
$item->text = $this->_item[$pk]->misc;
$params = new stdClass();
$results = $dispatcher->trigger('onContentPrepare', array ('com_content.article', &$item, &$params, 0));
$this->_item[$pk]->misc = $item->text;
// end
Jak dodasz ten kod {loadposition} powinno już zadziałać :)

To zadziałało w j.3.1.1 na loadposition i loadmodule.
Ale w 2.5.11 pojawia się
Fatal error: Cannot redeclare class JDispatcher in /home/omk/ftp/zpap2/libraries/joomla/event/dispatcher.php on line 279

KES
04-06-2013, 20:04
Jak poszperał być w Joomla 3.x to byś się dowiedział że klasa JEventDispatcher jest od tej właśnie Joomla. A wcześniej było JDispatcher, które działa dla Joomla 2.5.x oraz dla 3.x lecz jest oznaczona jako "przestarzała" :)

rudy
04-06-2013, 21:28
Dla jeszcze mniej wtajemniczonych w klasy niż ja wyjaśniam, że trzeba w kodzie który należy wkleić zamienić linijkę
$dispatcher = JEventDispatcher::getInstance();
na
$dispatcher = JDispatcher::getInstance();

Działa, pięknie wkleja i moduły i galerie.
Dziękuję,



- - - Updated - - -


ten kod co @pawelSafiStudio możesz też wywołać w nadpisywaniu szablonu kontaktu w swoim szablonie:
templates/twoj_szablon/com_contact/contact/default.php
i zamieniasz tylko nazwy z:


$this->_item[$pk]

na:


$this->contact

o tyle jest to lepsze rozwiązanie że przy aktualizacji joomla Ci tego nie nadpiszę.

ale z tym sposobem sobie nie moge poradzić.
Mam skopiować: components\com_contact\views\contact\tmpl\default. php

do :

templates/moj_szablon/html/com_contact/contact/default.php?

I co dalej? też tam wkleic kod co podał pawelSafiStudio (http://forum.joomla.pl/member.php?30903-pawelSafiStudio)?

pawelSafiStudio
06-06-2013, 07:55
Tak, tylko musisz pamiętać aby podmienić to na czym chcesz wywołać trigger. Wcześniej pobierałeś dane z $this->_item[$pk]. Natomiast w widoku kontaktu odwołujesz się już do $this->contact.
Btw. ja ze swojej strony, radziłbym jednak wywoływać to po stronie modelu co by zachować MCV. Oczywiście należy pamiętać o tej modyfikacji przy aktualizacjach :)

Jola
06-06-2013, 16:09
Witam,
wszystko to działa. A nie łatwiej i szybciej tak:
w pliku default kontaktu
wywołać moduł

echo JHtml::_('content.prepare', '{loadmodule mod_login}', '', 'com_contact.contact');
lub pozycję modułu

echo JHtml::_('content.prepare', '{loadposition position-0}', '', 'com_contact.contact');
i już :)

KES
06-06-2013, 16:35
@Jola chylę czoło :) i głęboko zapisuje sobie tą opcję w głowie. Mistrz :)

Czerniejewski
12-01-2014, 23:10
Witam. Jestem amatorem "webmasterem". Robię stronkę dla mojej dziewczyny w joomla 2,5 i nie mogę wstawić mapki do komponentu kontaktu. Wyedytowałem plik: components/com_contact/views/contact/tmpl/default.php.
Wklejam tam (losowo bo nie mam pojęcia gdzie) :echo JHtml::_('content.prepare', '{loadmodule mod_bt_googlemaps}', '', 'com_contact.contact'); : ale nic się nie dzieje:(
Może mi ktoś pomóc? Pozdrawiam
Ireneusz

Jola
13-01-2014, 02:50
Witam,
sprawdź czy Twój szablon nie nadpisuje szablonu kontaktu, tzn. czy masz plik templates/twoj_szablon/html/com_contact/contact/default.php
Jeśli tak - tam wprowadź zmiany i poczytaj o nadpisywaniu szablonem (przyda się) :)

Czerniejewski
13-01-2014, 11:40
Sprawdziłem. Nie mam takiego pliku. Poza tym na zdjeciu ponizej widac ze kod sie pokazuje ale nie ma efektu. Niestety jezeli chodzi o joomla to jako tako radze sobie z zarzadzaniem trescia i całą resztą ale jak wspomniałem nie jestem informatykiem. Kod html itp to dla mnie czarna magia... Cos robie nie tak tylko co?
7237

Jola
13-01-2014, 23:30
A napisałeś, że nic się nie dzieje!
Wklejasz kod PHP do HTML bez informacji, że to PHP.
Wpisz:

<?php echo JHtml::_('content.prepare', '{loadmodule mod_bt_googlemaps}', '', 'com_contact.contact'); ?>

Czerniejewski
14-01-2014, 22:17
Działa!!! Tzn. mod bt google maps akurat nie działa (tylko tytuł się ukazuje) nie wiedziec czemu, ale jak wpisze nazwe innego moda to się pojawia działający także coś nie tak z bt. Będę go konfigurował i może zaskoczy. Wielkie dzięki Jolu!!!