Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

ROZWIĄZANY: Dodanie linijki kodu za pomocą hooka


Rekomendowane odpowiedzi

Czy można za pomocą hooka dodać tylko jedną linijkę kodu do danej funkcji z katalogu sources bądź modules ? Wiem, że można przeładować całą funkcję, ale mnie interesuje dodanie tylko jednej linijki. Takie rozwiązanie jest w templatkach HTML, tylko czy dla skryptów to też może działać?

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Nie ma takiej opcji. Jak to sobie w PHP wyobrażasz..

Oczywiście są hooki do miejsc w kodzie, ale te trzeba dodać ręcznie - IPS dodaje - i możesz skorzystać z predefiniowanych. O jakim miejscu piszesz?

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

W 3.1.4 masz takie dostępne:

<select class="dropdown" id="dataLocation[1]" name="dataLocation[1]">
<option value="postAddReply">Add Reply</option>
<option value="postAddReplyPoll">Add Reply: Poll</option>
<option value="postAutoMerge">Add Reply: Auto merge with previous post</option>
<option value="postAddReplyTopicUpdate">Add Reply: Topic Data</option>
<option value="postAddTopic">New Topic: Topic Data</option>
<option value="postFirstPost">New Topic: First Post</option>
<option value="postAddTopicPoll">New Topic: Poll</option>
<option value="editPostAddPoll">Edit Post: Added Poll</option>
<option value="editPostUpdatePoll">Edit Post: Updated Poll</option>
<option value="editPostUpdateTopicTitle">Edit Post: Update Topic Title</option>
<option value="editPostData">Edit Post: Post Data</option>
<option value="updateForumLastPostData">Forum last post update data</option>
<option value="incrementUsersPostCount">Increment users post count</option>
<option value="boardIndexCategories">Board Index Output: Categories</option>
<option value="boardIndexOnlineUsers">Board Index Output: Active users</option>
<option value="forumViewData">Forum View Output</option>
<option value="topicViewQuery">Topic View Query: Members Table and Joins</option>
<option value="topicViewPostData">Topic View Output: Posts Data</option>
<option value="topicViewForumData">Topic View Output: Forum Data</option>
<option value="topicViewTopicData">Topic View Output: Topic Data</option>
<option value="topicViewDisplayData">Topic View Output: Other Data</option>
<option value="messengerSendReplyData">Messenger: Reply data</option>
<option value="messengerSendTopicData">Messenger: New conversation, topic data</option>
<option value="messengerSendTopicFirstPostData">Messenger: New conversation, first post</option>
<option value="profileCommentNew">Profile: New comment</option>
<option value="profileFriendsNew">Profile: New friend</option>
<option value="memberListData">Member List View Output</option>
<option value="onlineUsersListData">Online Users List Output</option>
<option value="blogAddEntry">Add Blog Entry: Entry</option>
<option value="blogAddEntryPoll">Add Blog Entry: Poll</option>
<option value="blogAddBlog">Add New Blog</option>
<option value="blogEditEntryData">Edit Blog Entry: Entry Data</option>
<option value="blogEditEntryAddPoll">Edit Blog Entry: Added Poll</option>
<option value="blogEditEntryUpdatePoll">Edit Blog Entry: Updated Poll</option>
<option value="blogPreAddComment">Before Blog Comment is Added</option>
<option value="blogPreEditComment">Before Blog Comment is Edited</option>
<option value="blogPostAddComment">After Blog Comment is Added</option>
<option value="blogPostEditComment">After Blog Comment is Edited</option>
<option value="blogPostDeleteComments">After Blog Comments are Deleted</option>
<option value="blogPostCommentVisibilityToggle">After Blog Comments Visibility is Toggled</option>
<option value="calendarAddEvent">Add Calendar Event</option>
<option value="calendarEditEvent">Edit Calendar Event</option>
<option value="downloadAddFile">Add Download</option>
<option value="downloadEditFile">Edit Download</option>
<option value="downloadUpdateCategoryInfo">Update Downloads Category Info</option>
<option value="downloadRebuildStatsCache">Rebuild Downloads Statistics Cache</option>
<option value="downloadAddFileComment">Add Download Comment</option>
<option value="downloadEditFileComment">Edit Download Comment</option>
<option value="downloadCommentAddPostSave">Add Download Comment (post save)</option>
<option value="downloadCommentEditPostSave">Edit Download Comment (post save)</option>
<option value="downloadCommentPostDelete">Delete Comment (post delete)</option>
<option value="downloadCommentToggleVisibility">Toggle Comment Visibility (post delete)</option>
</select>

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Przeładuj classPost, a potem przesłoń addTopic (lub addReply, jak chcesz). W kodzie widzisz, że:

		$this->setTopicData( $topic );
	$this->setPostData( $post );

Więc w klasie przesłaniającej będziesz mógł się dostać do tych danych dzięki metodom:

  • getTopicData
  • getPostData

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 miesiąc temu...

Postąpiłem według Twoich instrukcji i chyba jest coś źle, bo wszystko zachowuje się tak jakby tego hooka w ogóle nie było. Oto mój kod:

<?xml version="1.0" encoding="utf-8"?>
<hookexport>
 <hookdata>
<config>
 	<hook_name>Kodmistrz Comments</hook_name>
 	<hook_desc>Obsługa komentarzy w Kodmistrz CMS</hook_desc>
 	<hook_author>Patryk Stepniewski</hook_author>
 	<hook_email>[email protected]</hook_email>
 	<hook_website>http://www.kodmistrz.pl/</hook_website>
 	<hook_update_check/>
 	<hook_requirements><![CDATA[a:4:{s:20:"hook_ipb_version_min";i:0;s:20:"hook_ipb_version_max";i:0;s:20:"hook_php_version_min";s:1:"0";s:20:"hook_php_version_max";s:1:"0";}]]></hook_requirements>
 	<hook_version_human>1.0</hook_version_human>
 	<hook_version_long>10000</hook_version_long>
  <hook_extra_data/>
 	<hook_key>kodmistrz_comments</hook_key>
</config>
 </hookdata>
 <hookfiles>
<file>
 	<hook_file_real>kodmistrzComments.php</hook_file_real>
 	<hook_type>libraryHooks</hook_type>
 	<hook_classname>kodmistrzComments</hook_classname>
 	<hook_data><![CDATA[a:8:{s:12:"dataLocation";s:0:"";s:14:"libApplication";s:6:"forums";s:15:"classToOverload";s:14:"classPost";s:9:"skinGroup";N;s:12:"skinFunction";N;s:4:"type";N;s:2:"id";N;s:8:"position";N;}]]></hook_data>
 	<hooks_source><![CDATA[<?php

class kodmistrzComments extends classPost
{
public function addReply()
{
	$result = parent::addReply();

	$this->DB->insert( 'news_comments', array( 'news_id' => 666, 'post_id' => 69 ) );

	return $result;
}

public function addTopic()
{
	$result = parent::addTopic();

	return $result;
}
}
]]>
  </hooks_source>
</file>
 </hookfiles>
 <hookextras_settings/>
 <hookextras_language/>
 <hookextras_modules/>
 <hookextras_help/>
 <hookextras_templates/>
 <hookextras_css/>
 <hookextras_tasks/>
 <hookextras_database_create/>
 <hookextras_database_alter/>
 <hookextras_database_update/>
 <hookextras_database_insert/>
</hookexport>

Odnośnik do komentarza
Udostępnij na innych stronach

Ok, zadziałało bardzo dziękuję! :-)

Jeszcze ostatnia sprawa. Tym razem nic się nie dzieje jak zrobię takiego hooka:

<?xml version="1.0" encoding="utf-8"?>
<hookexport>
 <hookdata>
<config>
 	<hook_name>Kodmistrz Comments Moderate</hook_name>
 	<hook_desc>Obsługa komentarzy w Kodmistrz CMS</hook_desc>
 	<hook_author>Patryk Stepniewski</hook_author>
 	<hook_email>[email protected]</hook_email>
 	<hook_website>http://www.kodmistrz.pl/</hook_website>
 	<hook_update_check/>
 	<hook_requirements><![CDATA[a:4:{s:20:"hook_ipb_version_min";i:0;s:20:"hook_ipb_version_max";i:0;s:20:"hook_php_version_min";s:1:"0";s:20:"hook_php_version_max";s:1:"0";}]]></hook_requirements>
 	<hook_version_human>1.0</hook_version_human>
 	<hook_version_long>10000</hook_version_long>
  <hook_extra_data/>
 	<hook_key>kodmistrz_comments_moderate</hook_key>
</config>
 </hookdata>
 <hookfiles>
<file>
 	<hook_file_real>kodmistrzCommentsModerate.php</hook_file_real>
 	<hook_type>commandHooks</hook_type>
 	<hook_classname>kodmistrzCommentsModerate</hook_classname>
 	<hook_data><![CDATA[a:8:{s:12:"dataLocation";s:0:"";s:14:"libApplication";s:0:"";s:15:"classToOverload";s:6:"public_forums_moderate_moderate";s:9:"skinGroup";N;s:12:"skinFunction";N;s:4:"type";N;s:2:"id";N;s:8:"position";N;}]]></hook_data>
 	<hooks_source><![CDATA[<?php

class kodmistrzCommentsModerate extends public_forums_moderate_moderate
{
//-----------------------------------------
// Delete comment 
//-----------------------------------------
public function _deletePost()
{
	$result = parent::_deletePost();

	$this->DB->insert( 'news_comments', array( 'news_id' => 777, 'post_id' => 69 ) );

	return $result;
}
}
]]>
  </hooks_source>
</file>
 </hookfiles>
 <hookextras_settings/>
 <hookextras_language/>
 <hookextras_modules/>
 <hookextras_help/>
 <hookextras_templates/>
 <hookextras_css/>
 <hookextras_tasks/>
 <hookextras_database_create/>
 <hookextras_database_alter/>
 <hookextras_database_update/>
 <hookextras_database_insert/>
</hookexport>

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Inaczej: daj screen z 3 zakładki w edycji tego hooka - tam gdzie są rozpisane pliki, co gdzie się 'zaczepiają'.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Uzupełnij ACP, by się tam zapisało.

Jak uzupełnię i sprawdzę w bazie danych to:

1) Pole "hooks_source" stało się całe puste

2) A w polu " hook_data" jakaś totalna głupota się pojawia:

a:8:{s:12:"dataLocation";s:0:"";s:14:"libApplication";s:0:"";s:15[u][b]:"classToOverload";s:25:"kodmistrzCommentsModerate"[/b][/u];s:9:"skinGroup";N;s:12:"skinFunction";N;s:4:"type";N;s:2:"id";N;s:8:"position";N;}

"classToOverload";s:25:"kodmistrzCommentsModerate" <=== :glare::glare::glare::glare:

Odnośnik do komentarza
Udostępnij na innych stronach

Problem ROZWIĄZANY. Jeśli są jakiekolwiek wątpliwości, pytania proszę o założenie nowego tematu.

Wszelkie uzasadnione reklamacje/pretensje/sugestie/rady przyjmuje ekipa forum.

Nasz kolega już siedział za piracką wersję IPB, Ty też możesz
† Będziemy bronić SB po kres naszych sił †
Nie ma bolca na izolca!!!
Tłumaczes Power

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • 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ę.