コード例 #1
0
function simplemap_inclusions_form($form, &$form_state)
{
    $cthelper = new ContentTypesLoader();
    $smhelper = new SitemapDefinitionsLoader();
    // Loads the available Content-Types (those who don't have a sitemap defined).
    $load_available_cts = function () use($cthelper) {
        $ct_without_sitemap = $cthelper->loadNotInSitemap();
        return array_reduce($ct_without_sitemap, function ($result, $ctype) {
            $result[$ctype->type] = $ctype->name;
            return $result;
        }, []);
    };
    // Creates a row for the Content-Types list.
    $create_rows = function () use($cthelper, $smhelper) {
        $sitemap_defs = $smhelper->loadDefinitions();
        return array_reduce($sitemap_defs, function ($res, $sitemap_def) use($smhelper) {
            // Load the names of all the content types in this sitemap.
            $content_types = $smhelper->loadCTsInSitemap($sitemap_def->sitemap_name);
            $ct_names = array_map(function ($ct) {
                return $ct->name;
            }, $content_types);
            $internationalize = $sitemap_def->internationalize ? t('Yes') : t('No');
            $delete_link = l(t('Delete Sitemap'), "admin/settings/simplemap/inclusions/{$sitemap_def->sitemap_name}/delete");
            $row = [implode(', ', $ct_names), $sitemap_def->sitemap_name, $internationalize, $delete_link];
            array_push($res, $row);
            return $res;
        }, []);
    };
    $form = ['new_inclusion' => ['#type' => 'fieldset', '#title' => t('Add a New Content Type to the Sitemap'), 'content_type' => ['#type' => 'select', '#title' => t('Content Type'), '#options' => $load_available_cts(), '#multiple' => true, '#required' => true], 'sitemap_name' => ['#type' => 'textfield', '#title' => t('Name of the Sitemap File'), '#required' => true], 'internationalize' => ['#type' => 'checkbox', '#title' => t('Internationalize')], 'submit' => ['#type' => 'submit', '#value' => t('Add to the Sitemap')]], 'existing_sitemaps' => ['#type' => 'fieldset', '#title' => t('Already Defined Sitemaps'), 'list' => ['#theme' => 'table', '#header' => [t('Content Types'), t('Sitemap'), t('Internationalize'), ''], '#rows' => $create_rows()]]];
    return $form;
}
コード例 #2
0
 private function generateCTsSitemap()
 {
     $generateSitemap = function ($definition, $lang = null) {
         $filename = $definition->sitemap_name;
         $path = $this->base_path;
         $generator = new SimplemapCTGenerator($path, $filename, $lang);
         $generator->generate();
     };
     $sm_loader = new SitemapDefinitionsLoader();
     foreach ($sm_loader->loadDefinitions() as $sm_definition) {
         if ($sm_definition->internationalize) {
             foreach ($this->getEnabledLanguages() as $lang) {
                 $generateSitemap($sm_definition, $lang);
             }
         } else {
             $generateSitemap($sm_definition);
         }
     }
 }