Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
The function will add first image from the question content to the questions list
* Add first image to the question list
* Declearation
* Base code is taken from Mouseover Layer plugin
* Than I have extracted content using preg_match_all to get first image
* and assing that to the q_list
* How to use it:
* Nothing complicated, just place 'q_list' method into your theme or plugin file and done.
* Important:
* Make sure your theme should not have this function already. If there is than add this code
* to that function and modify as needed
* @param array $q_list
* @category Hook
* @since 1.7
* @author Q2A Market <>
* @link Q2A Market
* @license GNU General Public License
public function q_list($q_list)
if (!empty($q_list['qs'])) { // first check it is not an empty list and the feature is turned on
// Collect the question ids of all items in the question list (so we can do this in one DB query)
$postids = array();
foreach ($q_list['qs'] as $question)
if (isset($question['raw']['postid']))
$postids[] = $question['raw']['postid'];
if (!empty($postids)) {
// Retrieve the content for these questions from the database and put into an array fetching
// the minimal amount of characters needed to determine the string should be shortened or not
$result = qa_db_query_sub('SELECT postid, content, format FROM ^posts WHERE postid IN (#)', $postids);
$postinfo = qa_db_read_all_assoc($result, 'postid');
// Get the regular expression fragment to use for blocked words and the maximum length of content to show
$blockwordspreg = qa_get_block_words_preg();
// Now add the popup to the title for each question
foreach ($q_list['qs'] as $index => $question)
if (isset($postinfo[$question['raw']['postid']])) {
$thispost = $postinfo[$question['raw']['postid']];
$text = qa_viewer_html($thispost['content'], $thispost['format'], array('blockwordspreg' => $blockwordspreg));
// Extract image source from content
preg_match_all('/<img[^>]+src=[\'"]([^\'"]+)[\'"][^>]*>/i', $text, $matches);
// If content has image than show it!
if (!empty($matches[0])) {
// assign image to the variable
$image = '<img src="' . $matches[1][0] . '" alt="image" class="q-list-image" width="64"/>'; // change the size using attr or css
$q_list['qs'][$index]['content'] = $image;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment