コード例 #1
0
 /**
  * Add modules to post_content before indexing a post (makes modules searchable)
  * @param  WP_Post $post
  * @return void
  */
 public function elasticPressPreIndex($post)
 {
     if (!$post) {
         return;
     }
     if (is_array($post)) {
         $postId = $post['ID'];
     } else {
         $postId = $post->ID;
     }
     $modules = \Modularity\Editor::getPostModules($postId);
     $onlyModules = array();
     // Normalize modules array
     foreach ($modules as $sidebar => $item) {
         if (!isset($item['modules']) || count($item['modules']) === 0) {
             continue;
         }
         $onlyModules = array_merge($onlyModules, $item['modules']);
     }
     // Render modules and append to post content
     $rendered = "<br><br>";
     foreach ($onlyModules as $module) {
         if ($module->post_type === 'mod-wpwidget') {
             continue;
         }
         $markup = \Modularity\App::$display->outputModule($module, array('edit_module' => false), array(), false);
         $rendered .= $markup;
     }
     if (is_array($post)) {
         $post['post_content'] .= $rendered;
     } else {
         $post->post_content .= $rendered;
     }
     return $post;
 }
コード例 #2
0
ファイル: Ajax.php プロジェクト: helsingborg-stad/Modularity
 /**
  * Gets modules that's saved to a post/page
  * @return string JSON ecoded object
  */
 public function getPostModules()
 {
     if (!isset($_POST['id']) || empty($_POST['id']) || is_null($_POST['id'])) {
         echo 'false';
         wp_die();
     }
     echo json_encode(\Modularity\Editor::getPostModules($_POST['id']));
     wp_die();
 }
コード例 #3
0
 /**
  * Outputs the widget content
  * @param  array $args     Widget arguments
  * @param  array $instance Widget instance
  * @return void
  */
 public function widget($args, $instance)
 {
     if (!isset($instance['module_id']) || !is_numeric($instance['module_id'])) {
         return false;
     }
     $display = \Modularity\App::$display;
     $module = \Modularity\Editor::getModule($instance['module_id'], array('hidden' => false, 'columnWidth' => isset($instance['module_size']) ? $instance['module_size'] : 'grid-md-4'));
     $display->outputModule($module, $args);
 }
コード例 #4
0
 /**
  * Display module with shortcode
  * @param  array $args Args
  * @return string      Html markup
  */
 public function shortcodeDisplay($args)
 {
     $args = shortcode_atts(array('id' => false, 'inline' => true), $args);
     if (!is_numeric($args['id'])) {
         return;
     }
     $module = \Modularity\Editor::getModule($args['id']);
     if (substr($module->post_type, 0, 4) != 'mod-' || $module->post_status == 'private' && !is_user_logged_in()) {
         return;
     }
     $templatePath = \Modularity\Helper\Wp::getTemplate($module->post_type, 'module-inline', false);
     if (!$templatePath || $args['inline'] !== true) {
         $templatePath = \Modularity\Helper\Wp::getTemplate($module->post_type, 'module', false);
     }
     if (!$templatePath) {
         return false;
     }
     ob_start();
     include $templatePath;
     $moduleMarkup = ob_get_clean();
     $moduleMarkup = apply_filters('Modularity/Display/Markup', $moduleMarkup, $module);
     $moduleMarkup = apply_filters('Modularity/Display/' . $module->post_type . '/Markup', $moduleMarkup, $module);
     return '<div class="' . $module->post_type . '">' . $moduleMarkup . '</div>';
 }
コード例 #5
0
 /**
  * Checks if a page has a modules
  * @return boolean
  */
 public function hasModule()
 {
     global $post;
     $postId = null;
     $modules = array();
     $archiveSlug = \Modularity\Helper\Wp::getArchiveSlug();
     if ($archiveSlug) {
         $postId = $archiveSlug;
     } elseif (isset($post->ID)) {
         $postId = $post->ID;
     } else {
         return apply_filters('Modularity/hasModule', false, null);
     }
     $modules = \Modularity\Editor::getPostModules($postId);
     $modules = json_encode($modules);
     return apply_filters('Modularity/hasModule', strpos($modules, '"post_type":"' . $this->moduleSlug . '"') == true, $archiveSlug);
 }