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
•
31 May 2024
Connecting AWS S3 with Docker for Drupal 10
Recently, I encountered an issue where my local Docker environment refused to connect to AWS S3, although everything worked seamlessly in AWS-managed environments. This challenge was not just a technical hurdle; it was a crucial bottleneck that needed resolution to ensure smooth Drupal deployments...
Andrew Fletcher
•
09 May 2024
Accessing nested paragraph fields in Drupal: a step-by-step reference
The issue – I have a content type that includes an entity reference revisions field named field_introduction. This field points to a paragraph, which itself contains a text field also named field_introduction, of the type Text (formatted, long). How can I access the content stored in this...
Andrew Fletcher
•
09 May 2024
How to retrieve the current menu title in Drupal – a developer’s reference
When building a theme in Drupal, it's often necessary to adapt your site’s UI dynamically based on the context in which a user is navigating. One such piece of dynamic content is the menu title. Achieving this can be a bit tricky due to the layered nature of its routing and menu systems. This...