There's already a number of answers for this question but I have tried to provide a very simplistic approach. Hopefully identifying to devs the array structure expected by Drupal when returning your block content.

To do this I have broken the question down into separate code examples as such,

    /**
     * Implements hook_theme().
     */
    function examplemodule_theme() {
      return array(
        'examplemodule_output' => array(
          'variables' => array(
            'title' => NULL,
            'content' => NULL,
            'popular_content' => NULL,
           ),
          'template' => 'templates/examplemodule-sweet--block',
        ),
      );
    }

Please see a full explanation here [drupal 7 creating theming custom blocks][1]


  [1]: http://legomenon.io/article/drupal-7-creating-theming-custom-block-content