Рейтинг:-2

Generate static files of specific nodes with Tome

флаг cg

I'm looking for a way to generate a static version of specified nodes ( in my case they are book nodes pages).

I want to do it periodically in my custom Drupal cronjob,

most of the Drupal static modules are obsolete and there is no version for Drupal 9.

I found TOME module but looks like it's mostly for generating full website static generation through admin panel or drush command line.

I tried drush tome:static-export-path /mybookpath --uri=localhost:8080 but it's blindly going through all the links on the pages and download all of them.

with digging more into the documentation I found this which is good to use tome services. in this case, there is no URI parameter option( it's only available for drush command) and it does not replace URLs ( image,link, style ( css) urls) and use the main version.

    <?php

/** @var \Drupal\tome_static\StaticGeneratorInterface $static */
$static = \Drupal::service('tome_static.generator');

/** @var \Drupal\tome_static\RequestPreparer $request_preparer */
$request_preparer = \Drupal::service('tome_static.request_preparer');

// Prepare for a new request. This is necessary so that static caches in Drupal
// can be reset between multiple requests in one bootstrap.
$request_preparer->prepareForRequest();

// Request an arbitrary path. "$invoke_paths" at this point is anything that
// needs to be copied (an existing file) or requested (an image derivative,
// other paths, etc.)
$invoke_paths = $static->requestPath('/foo');

// Export paths will try to copy or remove as many paths as possible without
// making a new internal request.
$invoke_paths = $static->exportPaths($invoke_paths);

// The remaining invoke paths need to be handled in new requests.
foreach ($invoke_paths as $path) {
  // Since we are only trying to export one path, restrict new requests to
  // paths with extensions, which are probably RSS feeds and image derivatives.
  if (pathinfo($path, PATHINFO_EXTENSION)) {
    $request_preparer->prepareForRequest();
    // This could return more paths, but we're ignoring that for simplicity.
    $static->requestPath($path);
  }
}

My question: What is the best solution to generate static HTML files will all assets of specific Drupal nodes?

Рейтинг:0
флаг au

Вы всегда можете воссоздать статические страницы с wget.

wget --mirror --convert-links --show-progress --content-disposition http://example.edu

Это создаст копию всего сайта. Я считаю, что вы можете настроить URL-адрес для определенного узла.

Yuseferi avatar
флаг cg
Спасибо за внимание. Я пробовал, но он проходит по всем ссылкам на странице.
Yuseferi avatar
флаг cg
Я ищу более базовое решение для drupal, но хорошо. Я могу обернуть его в команду drupal.
Рейтинг:0
флаг cg

Я использовал Tome и с помощью следующей функции реализую выборку пользовательского пути.

общедоступная статическая функция storeFileLocally($uri) {
$base_url = "http://localhost:8080";
$путь = $ури;
/** @var \Drupal\tome_static\StaticGeneratorInterface $static */
$static = \Drupal::service('tome_static.generator');

/** @var \Drupal\tome_static\RequestPreparer $request_preparer */
$request_preparer = \Drupal::service('tome_static.request_preparer');

TomeStaticHelper::setBaseUrl(\Drupal::request(), $base_url);

$request_preparer->prepareForRequest();
$invoke_paths = $static->requestPath($path);

$invoke_paths = $static->exportPaths($invoke_paths);

foreach ($invoke_paths как $path) {
  если (информация о пути ($ путь, PATHINFO_EXTENSION)) {
    $request_preparer->prepareForRequest();
    $статический->путь_запроса($путь);
  }
}

}

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.