Andrew Fletcher published: 20 June 2022 2 minutes read
In this instance, I'll check the beginning of the string. I want to focus on the href's that start with /node/. Which has been added using the variable $catchPhrase.
Using the Drupal service path_alias to return the node.nid as follows:
/**
* Load the node nid from the URL alias.
*
* @param string $url URL string.
*
* @return any
*/
public function getNodeNidFromAlias($url, $phrase)
{
// Default values.
$nid = null;
$path = \Drupal::service('path_alias.manager')->getPathByAlias($url);
$strlen = strlen($phrase);
if (substr($path, 0, $strlen) === $phrase) {
$nid = substr($path, $strlen, strlen($path) - $strlen);
}
return $nid;
}
If you are using PHP8, then instead you can use
str_starts_with('https://www.codebales.com', 'https')
How was the getNodeNidFromAlias() used?
The initial call came from
$nid = $this->helper->getNodeNidFromAlias($link['href'], '/node');
$type = $this->helper->getTypeFromNid($nid);
The section of the helper file was
/**
* Load the node nid from the URL alias.
*
* @param string $url URL string.
*
* @return any
*/
public function getNodeNidFromAlias($url, $phrase)
{
// Default values.
$nid = null;
$path = \Drupal::service('path_alias.manager')->getPathByAlias($url);
$strlen = strlen($phrase);
if (substr($path, 0, $strlen) === $phrase) {
$nid = substr($path, $strlen, strlen($path) - $strlen);
}
return $nid;
}
/**
* Get the node type.
*
* @param any $nid Node nid.
*
* @return any
*/
public function getTypeFromNid($nid)
{
if (is_null($nid)) {
return null;
}
$node = \Drupal\node\Entity\Node::load($nid);
return $node->getType();
}
Related articles
Andrew Fletcher
•
18 Mar 2024
Notice: Only variables should be passed by reference in load_view_block_content()
Working through the following errorNotice: Only variables should be passed by reference in load_view_block_content() (line 391 of /var/www/vhosts/{domain}/httpdocs/themes/custom/{theme}/{theme}.theme.theme)If you want to read the full error, scroll to the bottom in Appendix. The related...
Andrew Fletcher
•
15 Mar 2024
Symfony\Component\HttpKernel\Exception\BadRequestHttpException: Input value "f" contains a non-scalar value
Using Drupal 10, VIews, Solr and Facets has post upgrade to version 10, created the following issueSymfony\Component\HttpKernel\Exception\BadRequestHttpException: Input value "f" contains a non-scalar value. in Symfony\Component\HttpKernel\HttpKernel->handle() (line 83 of...
Andrew Fletcher
•
15 Mar 2024
Could not apply patch! Skipping
Attempting to apply a patch in Drupal 10.2.4 that had been working until this version. Now I'm seeing the following errorCould not apply patch! Skipping. The error was: The process "patch '-p1' --no-backup-if-mismatch -d '/Users/andrewfletcher/Sites/codebales/modules/contrib/facets' <...